allprojects {
repositories {
// ...
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.PayBox:kotlin-paybox-sdk:0.11.0'
}
var sdk = PayboxSdk.initialize(merchantID, "secretKey")
<money.paybox.payboxsdk.view.PaymentView
android:id="@+id/paymentView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
sdk.setPaymentView(paymentView)
paymentView.listener = this
override fun onLoadStarted() {
}
override fun onLoadFinished() {
}
sdk.config().testMode(enabled) //По умолчанию тестовый режим включен
sdk.config().setRegion(Region.DEAFAULT) //Region.DEAFAULT по умолчанию
sdk.config().setPaymentSystem(paymentSystem)
sdk.config().setCurrencyCode(code)
sdk.config().autoClearing(enabled)
sdk.config().setEncoding(encoding) //по умолчанию UTF-8
sdk.config().setRecurringLifetime(lifetime) //по умолчанию 36 месяцев
sdk.config().setPaymentLifetime(lifetime) //по умолчанию 300 секунд
sdk.config().recurringMode(enabled) //по умолчанию отключен
sdk.config().setUserPhone(userPhone)
sdk.config().setUserEmail(userEmail)
sdk.config().setLanguage(language)
sdk.config().setCheckUrl(url)
sdk.config().setResultUrl(url)
sdk.config().setRefundUrl(url)
sdk.config().setClearingUrl(url)
sdk.config().setRequestMethod(requestMethod)
sdk.config().setFrameRequired(true) //false по умолчанию
sdk.createPayment(amount, "description", "orderId", userId, extraParams) {
payment, error -> //Вызовется после оплаты
}
sdk.createRecurringPayment(amount,"description","recurringProfile", "orderId") {
recurringPayment, error -> //Вызовется после оплаты
}
sdk.getPaymentStatus(paymentId) {
status, error -> // Вызовется после получения ответа
}
sdk.makeClearingPayment(paymentId, amount) { // Если указать null вместо суммы клиринга, то клиринг пройдет на всю сумму платежа
capture, error -> // Вызовется после клиринга
}
sdk.makeCancelPayment(paymentId) {
payment, error -> //Вызовется после отмены
}
sdk.makeRevokePayment(paymentId, amount) {
payment, error -> //Вызовется после возврата
}
sdk.addNewCard(userId,"postLink") {
payment, error -> // Вызовется после добавления
}
sdk.getAddedCards(userId){
cards, error -> // Вызовется после получения ответа
}
sdk.removeAddedCard(cardId, userId) {
card, error -> // Вызовется после получения ответа
}
sdk.createCardPayment(amount, userId, "cardToken", "description", "orderId"){
payment, error -> // Вызовется после создания
}
sdk.payByCard(paymentId){
payment, error -> //Вызовется после оплаты
}
sdk.createNonAcceptancePayment(paymentId, merchantId){
payment, error -> //Вызовется после оплаты
}
implementation 'com.google.android.gms:play-services-wallet:19.2.1'
<application>
...
<!-- Enables the Google Pay API -->
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
</application>
<com.google.android.gms.wallet.button.PayButton
android:id="@+id/buttonPaymentByGoogle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
val googlePayButton: PayButton = findViewById(R.id.buttonPaymentByGoogle)
googlePayButton.initialize(
ButtonOptions.newBuilder()
.setButtonType(ButtonType.CHECKOUT)
.setButtonTheme(ButtonTheme.LIGHT)
.build()
)
val googlePaymentsClient = Wallet.getPaymentsClient(
this,
Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION)
.setTheme(WalletConstants.THEME_LIGHT)
.build()
)
// Повесим на кнопку обработчик нажатий
googlePayButton.setOnClickListener {
// Создание платежа с использованием Google Pay
sdk.createGooglePayment(amount, description, orderId, userId, extraParams)
{ payment, error -> // Вызывается после создания
// Получаем url для подтверждения платежа
url = payment?.redirectUrl.toString()
// Инициирует загрузку данных платежа с использованием Google Pay
AutoResolveHelper.resolveTask<PaymentData>(
googlePaymentsClient.loadPaymentData(createPaymentDataRequest()),
this,
REQUEST_CODE
)
}
}
companion object {
// Код запроса, который будет использоваться при вызове
const val REQUEST_CODE = 123
}
private fun createPaymentDataRequest(): PaymentDataRequest {
// Создание нового строителя запроса
val request = PaymentDataRequest.newBuilder()
// Установка информации о транзакции
.setTransactionInfo(
TransactionInfo.newBuilder()
// Статус окончательной цены
.setTotalPriceStatus(WalletConstants.TOTAL_PRICE_STATUS_FINAL)
// Общая сумма платежа
.setTotalPrice("12.00")
// Код валюты (например, "KZT")
.setCurrencyCode("KZT")
.build()
)
// Разрешение оплаты банковской картой
.addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_CARD)
// Разрешение оплаты токенизированной банковской картой
.addAllowedPaymentMethod(WalletConstants.PAYMENT_METHOD_TOKENIZED_CARD)
// Установка требований к банковской карте
.setCardRequirements(
CardRequirements.newBuilder()
// Разрешенные сети карт
.addAllowedCardNetworks(
Arrays.asList(
WalletConstants.CARD_NETWORK_VISA,
WalletConstants.CARD_NETWORK_MASTERCARD
)
)
.build()
)
// Настройка параметров токенизации метода оплаты
val params = PaymentMethodTokenizationParameters.newBuilder()
// Тип токенизации (в данном случае - платежный шлюз)
.setPaymentMethodTokenizationType(
WalletConstants.PAYMENT_METHOD_TOKENIZATION_TYPE_PAYMENT_GATEWAY
)
// Параметры для платежного шлюза (например, "gateway", "gatewayMerchantId")
.addParameter("gateway", "yourGateway")
.addParameter("gatewayMerchantId", "yourMerchantIdGivenFromYourGateway")
.build()
// Установка параметров токенизации в запрос
request.setPaymentMethodTokenizationParameters(params)
// Возвращение построенного запроса
return request.build()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
REQUEST_CODE -> {
when (resultCode) {
Activity.RESULT_OK -> {
if (data == null)
return
val paymentData = PaymentData.getFromIntent(data)
val token = paymentData?.paymentMethodToken?.token ?: return
// После получения токена мы подтверждаем платеж, отправляя запрос на ранее полученный URL.
// Описано в пункте №9
sdk.confirmGooglePayment(url, token) { payment, error ->
}
}
AutoResolveHelper.RESULT_ERROR -> {
if (data == null)
return
val status = AutoResolveHelper.getStatusFromIntent(data)
}
else -> {}
}
}
else -> {}
}
}
sdk.confirmGooglePayment(url, token) { payment, error -> }