PayPal
Мобильные платежи PayPal / кредитной картой
Поиск…
параметры
| параметр | подробности |
|---|---|
| кнопка | Простая кнопка оплаты |
| конфиг | Объект конфигурации PayPal, содержащий наш идентификатор клиента (от создания приложения) и среду, которую мы хотим использовать (песочница или живая музыка) |
| оплата | Детали оплаты PayPal |
| paymentConfig | Конфигурация Намерение для информации и настроек платежа |
| serviceConfig | Конфигурация для данных параметров конфигурации |
замечания
Образцы, связанные с обработкой платежей на мобильных устройствах
Android: принятие платежа по PayPal / кредитной карте
В этом уроке мы узнаем, как настроить SDK PayPal для обработки простой оплаты посредством оплаты PayPal или покупки кредитной карты. В конце этого примера вы должны иметь простую кнопку в приложении, которое при нажатии будет перенаправлять пользователя в PayPal, чтобы подтвердить установленный платеж, затем вернуть пользователя обратно в приложение и зарегистрировать подтверждение платежа.
Полный код приложения для этого примера доступен в репозитарии Gigub для разработчиков PayPal Developer .
Давайте начнем.
Первым шагом является получение и добавление SDK в ваш проект . Мы добавляем ссылку на наши зависимости build.gradle, например:
dependencies {
compile 'com.paypal.sdk:paypal-android-sdk:2.14.1'
...
}
Теперь мы перейдем к нашему файлу MainActivity.java (или там, где вы хотите добавить интеграцию с кнопкой PayPal), и добавьте в объект 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 вы можете добавить следующее определение для кнопки, которое будет определять текст и обработчик onClick для кнопки с идентификатором paypal_button.
<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>
С помощью кнопки на месте мы теперь должны обрабатывать нажатие кнопки, чтобы начать обработку платежа. Добавьте следующий beginPayment(...) ниже нашего предыдущего onCreate(...) .
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);
}
Мы здесь делаем настройку сервиса ( serviceConfig ), используя config которую мы определили ранее для нашего идентификатора клиента и среды песочницы. Затем мы указываем объект платежа, который мы хотим обработать. Для этого примера мы устанавливаем статическую цену, валюту и описание. В конечном приложении эти значения должны быть получены из того, что пользователь пытается купить в приложении. Наконец, мы установили paymentConfig , добавив в него как config и payment объекты, которые мы ранее определили, и запустите paymentConfig .
На этом этапе пользователю будут представлены экраны входа и оплаты 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 , мы увидим, что у нас есть state approved , что означает, что платеж был подтвержден. На этом этапе этот объект должен быть отправлен на ваш сервер, чтобы подтвердить, что платеж действительно прошел. Дополнительные сведения об этих шагах см. В этих документах .
Наш последний шаг - очистка в нашем onDestroy(...) .
@Override
public void onDestroy(){
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
Вот и все. В этом примере мы создали простую кнопку для обработки платежа с помощью PayPal или кредитной карты. С этого момента вам предстоит несколько следующих шагов по расширению этого примера:
- Динамическое
beginPayment(...)информации о платежах на основе выбора пользовательского продукта вbeginPayment(...). - Отправка подтверждения платежа на ваш сервер и подтверждение того, что платеж действительно прошел.
- Обработка ошибок и случаев аннулирования пользователя в приложении.