Apple Pay și Google Pay
Puteți folosi Apple Pay și Google Pay pentru a colecta detaliile de plată sub formă de simbol, reprezentând un card de plată pe care plătitorul l-a adăugat în portofelul său electronic Apple sau Google Pay.
Apple Pay
Pentru a obține simbolul Apple Pay din portofelul electronic al plătitorului:
- Pentru a accepta plăți cu Apple Pay, configurați aplicația pentru Apple Pay. Pentru instrucțiuni, consultați Configurarea mediului în documentația pentru dezvoltatori Apple.
- Când procesul de comandă al plătitorului ajunge la pagina dvs. de validare, determinați dacă dispozitivul acceptă Apple Pay utilizând funcția
canMakePayments()
pePKPaymentAuthorizationController
. Dacă Apple Pay este acceptat, afișați butonul Apple Pay ca opțiune de plată, folosindPKPaymentButton
oferită de Apple. - Creați și utilizați un
PKPaymentRequest
. Pentru instrucțiuni, consultați Crearea solicitărilor de plată în documentația pentru dezvoltatori Apple. - După ce un utilizator a autorizat Apple Pay, actualizați sesiunea de gateway cu simbolul de plată,
PKPAYMENTTOKEN
:- Obțineți simbolul de plată ca șir pentru a-l trimite către gateway.
Exemplu de solicitare
let tokenString = String(data: payment.token.paymentData, encoding.utf8)
- Completați șirul simbolului în
GatewayMap
cadevicePayment
și specificați faptul că simbolul provine din Apple Pay setândwalletProvider
.Exemplu de solicitarevar request = GatewayMap() request.sourceOfFunds.provided.card.devicePayment.paymentToken = tokenString request.order.walletProvider = "APPLE_PAY"
- Trimiteți
GatewayMap
pentru solicitarea dvs. către gateway folosind funcțiaupdateSession()
de pe obiectulGatewayAPI
.Exemplu de solicitareGatewayAPI.shared.updateSession("< session id#>", apiVersion: "< Gateway API Version#<", payload: request) { (result) in switch result { case .success(let response): print(response.description) case .error(let error): print(error) } }
- Obțineți simbolul de plată ca șir pentru a-l trimite către gateway.
- Finalizați o tranzacție Apple Pay de pe serverul dvs. la fel ca orice altă plată, folosind tranzacția PAY sau AUTHORIZE. Când finalizați o plată într-o sesiune care utilizează Apple Pay, configurați câmpul
order.walletProvider
caAPPLE_PAY
și includeți ID-ul sesiunii în solicitare.
Atunci când creați un certificat de procesare a plăților Apple Pay, utilizați solicitarea de semnare a certificatului (CSR) furnizată de gateway. Pentru instrucțiuni despre cum să generați CSR, consultați Configurarea mediului.
Google Pay
Mobile SDK include un utilitar de ajutor, numit GooglePayHandler, pentru colectarea unui simbol din portofelul Google Pay al plătitorului:
- Activați asistența Google Pay în aplicația dvs. Pentru instrucțiuni, consultați documentația Google Pay. Instrucțiunile vă ghidează pentru:
- Configurați API-ul Google Pay.
- A solicita informațiile de plată de la portofelul electronic Google.
- A încorpora butonul Google Pay în pagina de validare.
- Gestionați răspunsul din API-ul Google Pay.
- Deoarece integrarea Google Pay este opțională cu Mobile SDK, furnizați dependența adecvată de serviciile Google Play:
Exemplu de solicitare
implementation 'com.google.android.gms:play-services-wallet:X.X.X'
Gateway-ul este integrat cu Google Pay ca tip
PAYMENT_GATEWAY
. - Pentru a solicita informații criptate despre card de la Google Pay:
- Utilizați un nume
mpgs
valid în solicitarea dvs. - Înlocuiți
MERCHANT_ID
cu ID-ul comerciantului pe care îl utilizați pe gateway.Exemplu de solicitareval tokenizationSpecification = JSONObject() .put("type", "PAYMENT_GATEWAY") .put("parameters", JSONObject() .put("gateway", "mpgs") .put("gatewayMerchantId", "MERCHANT_ID"))
- Utilizați un nume
- Utilizați
GooglePayHandler
pentru a lansa portofelul electronic Google Pay cu clientul de plăți construit și datele de solicitare.Exemplu de solicitare// YourActivity.kt fun googlePayButtonClicked() { try { val request = PaymentDataRequest.fromJson(paymentDataRequest.toString()) // use the Gateway convenience handler for launching the Google Pay flow GooglePayHandler.requestData(this, paymentsClient, request) } catch (e: JSONException) { Toast.makeText(this, "Could not request payment data", Toast.LENGTH_SHORT).show() } }
- Pentru a gestiona răspunsurile portofelului electronic, Mobile SDK oferă un gestionar al ciclului de viață Google Pay. Puteți implementa funcția callback Google Pay și utiliza handlerul rezultat în activitatea dvs. Acest lucru elimină necesitatea de gestionare manuală a rezultatelor activității Google Pay și deleagă pașii importanți ai tranzacției către metodele de callback.
Exemplu de solicitare
// YourActivity.kt override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { // handle the Google Pay response if (GooglePayHandler.handleActivityResult(requestCode, resultCode, data, callback)) { return } super.onActivityResult(requestCode, resultCode, data) } val googlePayCallback = object : GooglePayCallback { override fun onReceivedPaymentData(paymentData: JSONObject) { try { val description = paymentData.getJSONObject("paymentMethodData") .getString("description") Log.d(MyGooglePayCallback::class.java.simpleName,"ReceivedPaymentData: $description") } catch (e: Exception) { // handle exception } handleGooglePayData(paymentData) } override fun onGooglePayCancelled() { // handle cancelled } override fun onGooglePayError(status: Status) { // handle error } }
- Când primiți date de plată de la Google Pay, actualizați sesiunea de gateway cu simbolul de plată.
Exemplu de solicitare
fun handleGooglePayData(paymentData: JSONObject) { val token = paymentData.getJSONObject("paymentMethodData") .getJSONObject("tokenizationData") .getString("token") val request = GatewayMap() .set("sourceOfFunds.provided.card.devicePayment.paymentToken", token) GatewayAPI.updateSession(session, request, callback) }
- Finalizați o tranzacție Google Pay de pe serverul dvs. la fel ca orice altă plată, folosind tranzacția PAY sau AUTHORIZE. Când finalizați o plată într-o sesiune care utilizează Google Pay, configurați câmpul
order.walletProvider
caGOOGLE_PAY
și includeți ID-ul sesiunii în solicitare.