PayPal
모바일 PayPal / 신용 카드 결제
수색…
매개 변수
| 매개 변수 | 세부 |
|---|---|
| 단추 | 간단한 결제 버튼 |
| 구성 | 클라이언트 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 하고 이전에 정의한 config 및 payment 객체를 모두 추가하고 작업을 시작합니다.
이 시점에서 사용자는 PayPal 로그인 및 지불 화면이 표시되어 PayPal 또는 신용 카드 결제 여부를 선택할 수 있습니다 (수동 입력 또는 카메라를 사용할 수있는 경우 card.io). 이 화면은 다음과 같습니다.

일단 결제가 완료되거나 취소되면 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(...). - 서버에 지불 확인서를 보내고 실제로 지불이 완료되었음을 확인하십시오.
- 앱 내 오류 및 취소 사용자 사례 처리