수색…


매개 변수

매개 변수 세부
단추 간단한 결제 버튼
구성 클라이언트 ID (응용 프로그램 생성시)와 사용할 환경 (샌드 박스 또는 라이브)이 들어있는 PayPal 구성 객체
지불 PayPal 결제 세부 정보
paymentConfig 지불 정보 및 설정에 대한 구성 의도
serviceConfig 구성 매개 변수 데이터에 대한 구성 의도

비고

휴대 기기에서 결제 처리 관련 샘플

Android : PayPal / 신용 카드 결제 수락

이 튜토리얼에서는 페이팔 결제 또는 신용 카드 구매를 통해 간단한 결제를 처리하기 위해 PayPal Android SDK 를 설정하는 방법을 배우게됩니다. 이 예제가 끝나면 애플리케이션에 간단한 버튼이 있어야합니다.이 버튼을 클릭하면 설정 한 지불을 확인하기 위해 사용자를 PayPal로 전달한 다음 사용자를 애플리케이션으로 되돌리고 결제 확인을 기록합니다.

이 예제의 전체 응용 프로그램 코드는 PayPal Developer Github Repository 에서 사용할 수 있습니다.

시작하자.

첫 번째 단계는 SDK를 가져 와서 프로젝트에 추가하는 것 입니다. build.gradle 의존성에 대한 참조를 다음과 같이 추가합니다.

dependencies {
    compile 'com.paypal.sdk:paypal-android-sdk:2.14.1'
    ...
}

이제 MainActivity.java 파일 (또는 PayPal 버튼 통합을 추가하려는 위치)으로 이동하여 우리가 사용할 클라이언트 ID 및 환경 (샌드 박스)에 대한 config 객체를 추가합니다.

private static PayPalConfiguration config = new PayPalConfiguration()
    .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
    .clientId("YOUR CLIENT ID");

이제는 onCreate(...) 메소드에서 버튼을 만들겠습니다. 클릭하면 한 번의 클릭으로 PayPal을 통한 지불을 처리 할 수 ​​있습니다.

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button button = (Button) findViewById(R.id.paypal_button);
}

이제 해당 버튼의 기능을 정의해야합니다. res> layout> main XML 파일에서 버튼에 대한 정의를 추가하면 paypal_button ID가있는 버튼의 텍스트 및 onClick 핸들러가 정의됩니다.

<Button android:id="@+id/paypal_button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/paypal_button"
    android:onClick="beginPayment" />

이 버튼을 클릭하면 beginPayment(...) 메소드가 호출됩니다. 그런 다음 버튼의 텍스트를 strings.xml 파일에 추가 할 수 있습니다.

<string name="paypal_button">Pay with PayPal</string>

버튼을 제 위치에 놓으면 지불 처리를 시작하기 위해 버튼 클릭을 처리해야합니다. 이전 onCreate(...) 메소드 아래에 다음 beginPayment(...) 메소드를 추가하십시오.

public void beginPayment(View view){
    Intent serviceConfig = new Intent(this, PayPalService.class);
    serviceConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    startService(serviceConfig);

    PayPalPayment payment = new PayPalPayment(new BigDecimal("5.65"), 
        "USD", "My Awesome Item", PayPalPayment.PAYMENT_INTENT_SALE);

    Intent paymentConfig = new Intent(this, PaymentActivity.class);
    paymentConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    paymentConfig.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
    startActivityForResult(paymentConfig, 0);
}

여기서 우리가하는 일은 먼저 클라이언트 ID와 샌드 박스 환경에 대해 정의한 config 을 사용하여 서비스 인 텐트 ( serviceConfig )를 config 하는 것입니다. 그런 다음 처리 할 지급 오브젝트를 지정합니다. 이 예제에서는 정적 가격, 통화 및 설명을 설정합니다. 최종 응용 프로그램에서이 값은 사용자가 응용 프로그램에서 구매하려고 시도하는 값에서 가져와야합니다. 마지막으로 paymentConfig config 하고 이전에 정의한 configpayment 객체를 모두 추가하고 작업을 시작합니다.

이 시점에서 사용자는 PayPal 로그인 및 지불 화면이 표시되어 PayPal 또는 신용 카드 결제 여부를 선택할 수 있습니다 (수동 입력 또는 카메라를 사용할 수있는 경우 card.io). 이 화면은 다음과 같습니다.

PayPal 지불 확인 화면

일단 결제가 완료되거나 취소되면 PayPal이 사용자를 애플리케이션으로 돌려 보낼 때 처리기를 준비해야합니다. 그 목적을 위해 onActivityResult(...) 를 오버라이드하자.

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data){
    if (resultCode == Activity.RESULT_OK){
        PaymentConfirmation confirm = data.getParcelableExtra(
            PaymentActivity.EXTRA_RESULT_CONFIRMATION);
        if (confirm != null){
            try {
                Log.i("sampleapp", confirm.toJSONObject().toString(4));

                // TODO: send 'confirm' to your server for verification

            } catch (JSONException e) {
                Log.e("sampleapp", "no confirmation data: ", e);
            }
        }
    } else if (resultCode == Activity.RESULT_CANCELED) {
        Log.i("sampleapp", "The user canceled.");
    } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
        Log.i("sampleapp", "Invalid payment / config set");
    }
}

onActivityResult(...) 메소드 내에서 돌아 오는 resultCode 가 RESULT_OK (사용자 확인 결제), RESULT_CANCELED (사용자 취소 지불) 또는 RESULT_EXTRAS_INVALID (구성 문제가 있음)인지 확인합니다. 유효한 확인의 경우 지불에서 반환 된 개체를 가져오고이 샘플에서는 기록합니다. 우리에게 돌려주는 것은 다음과 같이 보일 것입니다 :

{
    "client": {
        "environment": "sandbox",
        "paypal_sdk_version": "2.14.1",
        "platform": "Android",
        "product_name": "PayPal-Android-SDK"
    },
    "response": {
        "create_time": "2016-05-02T15:33:43Z",
        "id": "PAY-0PG63447RB821630KK1TXGTY",
        "intent": "sale",
        "state": "approved"
    },
    "response_type": "payment"
}

response 개체를 살펴보면 approved state 임을 알 수 있습니다. 이는 지불이 확인되었음을 의미합니다. 이 시점에서 해당 오브젝트가 서버로 전송되어 지불이 실제로 완료되었는지 확인해야합니다. 이러한 단계에 대한 자세한 내용 은이 문서를 참조하십시오 .

마지막 단계는 우리의 onDestroy(...) 에서 정리하는 것입니다.

@Override
public void onDestroy(){
    stopService(new Intent(this, PayPalService.class));
    super.onDestroy();
}

그게 전부입니다. 이 예에서는 PayPal 또는 신용 카드로 결제를 처리하는 간단한 버튼을 만들었습니다. 이 시점부터이 샘플을 확장 할 수있는 몇 가지 단계가 있습니다.

  • beginPayment(...) 메소드의 사용자 제품 선택에 따라 지불 정보를 동적으로 가져 beginPayment(...) .
  • 서버에 지불 확인서를 보내고 실제로 지불이 완료되었음을 확인하십시오.
  • 앱 내 오류 및 취소 사용자 사례 처리


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow