Apple Pay et Google Pay
Vous pouvez utiliser Apple Pay et Google Pay pour collecter les informations de paiement sous la forme d'un jeton représentant une carte de paiement que le payeur a ajouté à son portefeuille Apple ou Google Pay.
Apple Pay
Pour obtenir le jeton Apple Pay depuis le portefeuille du payeur :
- Pour accepter les paiements avec Apple Pay, configurez votre application pour Apple Pay. Pour obtenir des instructions, voir Configuration de votre environnement dans la documentation destinée aux développeurs Apple.
- Lorsque le processus de commande du payeur atteint votre page de paiement, déterminez si l'appareil prend en charge Apple Pay en utilisant la fonction
canMakePayments()
surPKPaymentAuthorizationController
. Si Apple Pay est pris en charge, affichez le bouton Apple Pay comme option de paiement, en utilisant le paramètrePKPaymentButton
fourni par Apple. - Créer et utiliser un paramètre
PKPaymentRequest
. Pour obtenir des instructions, voir la rubrique Création de demandes de paiement dans la documentation destinée aux développeurs Apple. - Une fois qu'un utilisateur a autorisé Apple Pay, mettez à jour la session de passerelle avec le jeton de paiement,
PKPAYMENTTOKEN
:- Obtenez le jeton de paiement sous forme de chaîne à envoyer à la passerelle.
Exemple de demande
let tokenString = String(data: payment.token.paymentData, encoding.utf8)
- Renseignez la chaîne de jeton dans le paramètre
GatewayMap
comme le paramètredevicePayment
et précisez que le jeton provient d'Apple Pay en définissant le paramètrewalletProvider
.Exemple de demandevar request = GatewayMap() request.sourceOfFunds.provided.card.devicePayment.paymentToken = tokenString request.order.walletProvider = "APPLE_PAY"
- Envoyez le paramètre
GatewayMap
pour votre demande à la passerelle en utilisant la fonctionupdateSession()
sur l'objetGatewayAPI
.Exemple de demandeGatewayAPI.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) } }
- Obtenez le jeton de paiement sous forme de chaîne à envoyer à la passerelle.
- Effectuez une transaction Apple Pay à partir de votre serveur comme n'importe quel autre paiement, en utilisant la transaction PAY (Payer) ou AUTHORIZE (Autoriser). Lorsque vous effectuez un paiement sur une session qui utilise Apple Pay, définissez le champ
order.walletProvider
avec la valeurAPPLE_PAY
et incluez l'ID session dans la demande.
Lorsque vous créez un certificat de traitement des paiements Apple Pay, utilisez la demande de signature de certificat (CSR) qui vous est fournie par la passerelle. Pour obtenir des instructions sur la manière de générer la demande de signature de certificat, voir Configurer votre environnement.
Google Pay
Le Mobile SDK inclut un utilitaire d'assistance, appelé GooglePayHandler, permettant de collecter un jeton à partir du portefeuille Google Pay du payeur :
- Activez la prise en charge de Google Pay dans votre application. Pour obtenir des instructions, voir la documentation Google Pay. Les instructions vous guident pour :
- configurer l'API Google Pay,
- demander des informations de paiement à partir du portefeuille Google,
- intégrer le bouton Google Pay dans la mise en page de votre paiement,
- gérer la réponse de l'API Google Pay.
- L'intégration de Google Pay étant facultative avec le Mobile SDK, fournissez la dépendance des services Google Play appropriée :
Exemple de demande
implementation 'com.google.android.gms:play-services-wallet:X.X.X'
La passerelle est intégrée à Google Pay en tant que type
PAYMENT_GATEWAY
. - Pour demander des informations de carte cryptées à Google Pay :
- Utilisez le nom valide
mpgs
dans votre demande. - Remplacez
MERCHANT_ID
par l'ID commerçant que vous utilisez sur la passerelle.Exemple de demandeval tokenizationSpecification = JSONObject() .put("type", "PAYMENT_GATEWAY") .put("parameters", JSONObject() .put("gateway", "mpgs") .put("gatewayMerchantId", "MERCHANT_ID"))
- Utilisez le nom valide
- Utilisez
GooglePayHandler
pour lancer le portefeuille Google Pay avec le client de paiements que vous avez créé et demander les données.Exemple de demande// 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() } }
- Pour gérer les réponses du portefeuille, le Mobile SDK propose un gestionnaire de cycle de vie Google Pay. Vous pouvez implémenter le rappel Google Pay fourni et utiliser le gestionnaire de résultats dans votre activité. Cela élimine le besoin de gérer manuellement les résultats de l'activité Google Pay et délègue les étapes de transaction importantes aux méthodes de rappel.
Exemple de demande
// 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 } }
- Lorsque vous recevez des données de paiement de Google Pay, mettez à jour la session de passerelle avec le jeton de paiement.
Exemple de demande
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) }
- Effectuez une transaction Google Pay à partir de votre serveur comme n'importe quel autre paiement, en utilisant la transaction PAY (Payer) ou AUTHORIZE (Autoriser). Lorsque vous effectuez un paiement sur une session qui utilise Google Pay, définissez le champ
order.walletProvider
avec la valeurGOOGLE_PAY
et incluez l'ID session dans la demande.