Apple Pay και Google Pay
Μπορείτε να χρησιμοποιήσετε το Apple Pay και το Google Pay για να συλλέξετε λεπτομέρειες πληρωμής ως token που αντιπροσωπεύει μια κάρτα πληρωμής την οποία ο πληρωτής έχει προσθέσει στο πορτοφόλι του Apple Pay ή Google Pay.
Apple Pay
Για να αποκτήσετε το token Apple Pay από το πορτοφόλι του πληρωτή:
- Για να αποδεχτείτε πληρωμές με το Apple Pay, διαμορφώστε την εφαρμογή σας για το Apple Pay. Για οδηγίες, βλ. Διαμόρφωση του περιβάλλοντος σας στην τεκμηρίωση προγραμματιστών της Apple.
- Όταν η διαδικασία παραγγελίας του πληρωτή φτάσει στη σελίδα Checkout, προσδιορίστε αν η συσκευή υποστηρίζει το Apple Pay χρησιμοποιώντας τη συνάρτηση
canMakePayments()
στοPKPaymentAuthorizationController
. Αν υποστηρίζεται το Apple Pay, εμφανίστε το κουμπί Apple Pay ως επιλογή πληρωμής, χρησιμοποιώντας τοPKPaymentButton
που παρέχεται από την Apple. - Δημιουργήστε και χρησιμοποιήστε το
PKPaymentRequest
. Για οδηγίες, βλ. Δημιουργία αιτημάτων πληρωμής στην τεκμηρίωση προγραμματιστών της Apple. - Αφού ένας χρήστης εγκρίνει 2 το Apple Pay, ενημερώστε την περίοδο λειτουργίας (session) πύλης με αυτό το token πληρωμής
PKPAYMENTTOKEN
:- Λάβετε το token πληρωμής ως συμβολοσειρά για αποστολή στην πύλη.
Παράδειγμα αιτήματος
let tokenString = String(data: payment.token.paymentData, encoding.utf8)
- Συμπληρώστε τη συμβολοσειρά token στο
GatewayMap
ωςdevicePayment
και καθορίστε ότι το token προήλθε από το Apple Pay ορίζοντας τοwalletProvider
.Παράδειγμα αιτήματοςvar request = GatewayMap() request.sourceOfFunds.provided.card.devicePayment.paymentToken = tokenString request.order.walletProvider = "APPLE_PAY"
- Στείλτε το
GatewayMap
για το αίτημά σας στην πύλη χρησιμοποιώντας τη συνάρτησηupdateSession()
στο αντικείμενοGatewayAPI
.Παράδειγμα αιτήματοςGatewayAPI.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) } }
- Λάβετε το token πληρωμής ως συμβολοσειρά για αποστολή στην πύλη.
- Ολοκληρώστε μια συναλλαγή Apple Pay από τον διακομιστή σας όπως κάθε άλλη πληρωμή, χρησιμοποιώντας τη συναλλαγή PAY ή AUTHORIZE. Όταν ολοκληρώνετε μια πληρωμή σε μια περίοδο λειτουργίας (session) που χρησιμοποιεί το Apple Pay, ορίστε το πεδίο
order.walletProvider
σεAPPLE_PAY
και συμπεριλάβετε το ID περιόδου λειτουργίας (session) στο αίτημα.
Όταν δημιουργείτε ένα πιστοποιητικό διεκπεραίωσης πληρωμών Apple Pay, χρησιμοποιήστε το αίτημα υπογραφής πιστοποιητικού (CSR) που σας παρέχεται από την πύλη. Για οδηγίες σχετικά με τον τρόπο δημιουργίας του CSR, βλ. Διαμόρφωση του περιβάλλοντος σας.
Google Pay
Το Mobile SDK περιλαμβάνει ένα βοηθητικό εργαλείο, που ονομάζεται GooglePayHandler, για τη συλλογή ενός token από το πορτοφόλι Google Pay του πληρωτή:
- Ενεργοποιήστε την υποστήριξη Google Pay στην εφαρμογή σας. Για οδηγίες, ανατρέξτε στην τεκμηρίωση για το Google Pay. Οι οδηγίες σας καθοδηγούν σε:
- Ρυθμίστε το API Google Pay.
- Ζητήσετε πληροφορίες πληρωμής από το πορτοφόλι Google.
- Ενσωματώστε το κουμπί Google Pay στη διάταξη checkout.
- Διαχειριστείτε την απόκριση από το API του Google Pay.
- Εφόσον η ενοποίηση του Google Pay είναι προαιρετική με το Mobile SDK, δώστε την κατάλληλη εξάρτηση από τις υπηρεσίες Play:
Παράδειγμα αιτήματος
implementation 'com.google.android.gms:play-services-wallet:X.X.X'
Η πύλη είναι ενοποιημένη στο Google Pay ως τύπος
PAYMENT_GATEWAY
. - Για να ζητήσετε κρυπτογραφημένες πληροφορίες κάρτας από το Google Pay:
- Χρησιμοποιήστε το έγκυρο όνομα
mpgs
στο αίτημά σας. - Αντικαταστήστε το
MERCHANT_ID
με το αναγνωριστικό εμπόρου που χρησιμοποιείτε στην πύλη.Παράδειγμα αιτήματοςval tokenizationSpecification = JSONObject() .put("type", "PAYMENT_GATEWAY") .put("parameters", JSONObject() .put("gateway", "mpgs") .put("gatewayMerchantId", "MERCHANT_ID"))
- Χρησιμοποιήστε το έγκυρο όνομα
- Χρησιμοποιήστε το
GooglePayHandler
για να ανοίξετε το πορτοφόλι Google Pay με τον πελάτη (client) πληρωμών και να ζητήσετε δεδομένα.Παράδειγμα αιτήματος// 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() } }
- Για τη διαχείριση των αποκρίσεων πορτοφολιού, το Mobile SDK προσφέρει έναν διαχειριστή κύκλου ζωής του Google Pay. Μπορείτε να εφαρμόσετε την παρεχόμενη επιστροφή κλήσης του Google Pay και να χρησιμοποιήσετε τη λαβή χειρισμού result στη δραστηριότητά σας. Αυτό εξαλείφει την ανάγκη μη αυτόματης διαχείρισης των αποτελεσμάτων δραστηριότητας Google Pay και αναθέτει τα σημαντικά βήματα συναλλαγής στις μεθόδους ανάκλησης.
Παράδειγμα αιτήματος
// 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 } }
- Όταν λάβετε δεδομένα πληρωμής από το Google Pay, ενημερώστε την περίοδο λειτουργίας (session) της πύλης με το token πληρωμής.
Παράδειγμα αιτήματος
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) }
- Ολοκληρώστε μια συναλλαγή Google Pay από τον διακομιστή σας όπως κάθε άλλη πληρωμή, χρησιμοποιώντας τη συναλλαγή PAY ή AUTHORIZE. Όταν ολοκληρώνετε μια πληρωμή σε μια περίοδο λειτουργίας (session) που χρησιμοποιεί το Google Pay, ορίστε το πεδίο
order.walletProvider
σεGOOGLE_PAY
και συμπεριλάβετε το ID περιόδου λειτουργίας (session) στο αίτημα.