Uçtan uca projelerin sıralanması, aşağıdaki durumlarda Korumalı Alan Ödeme Modu'nun yapılandırılmasına kullanarak Korumalı Alan ortamını kullanabilirsiniz. Verilerinizi test ederken Korumalı Alan ve Üretim Ödeme Modları arasında geçiş yapabilirsiniz. Bu amaçla Kartlarınızı şarj etmeden Uçtan Uca Sipariş projeniz için test ödemelerini Ödeme Modu olarak Korumalı Alan'ı seçebilirsiniz. Üretim ortamı, Korumalı Alan Ödeme Modu'nu destekler.
Yapılandırma
Korumalı Alan ortamında Korumalı Alan Ödeme Modu'nu etkinleştirmek için şu adımları uygulayın: için şu adımları izleyin:
- İşlem Merkezi'nde Yapılandırma > Özellikler'e gidin.
- Hesap özellikleri kartında Ödeme Modu radyo düğmesini bulun.
- Sandbox seçeneğini belirleyin ve Değişiklikleri kaydet'i tıklayın.
Korumalı Alan Ödeme Modu'nu Hızlı Test ortamında etkinleştirmek için şu adımları uygulayın: için şu adımları izleyin:
- İşlem Merkezi'nde Feed'ler'e gidin > Hızlı Test'e dokunun.
- GPay için korumalı alanı kullan radyo düğmesini seçin.
Korumalı Alan Ödeme Modu seçildiğinde:
- Uçtan Uca sıralama, Google Pay'i gerçek kart bilgileri yerine test kartı verilerini içermelidir.
isInSandbox
alanıtrue
CheckoutRequestMessage ve SubmitOrderRequestMessage.
Farklı Ortam, Ödeme Modu ve isInSandbox kombinasyonları aşağıdaki gibidir:
Ortam | Ödeme Modu | isInSandbox |
---|---|---|
Kısa Test | Korumalı Alan | true |
Kısa Test | Üretim | false |
Korumalı Alan | Korumalı Alan | true |
Korumalı Alan | Üretim | false |
Üretim | Üretim | false |
Ödeme İşlemine İlişkin Yanıt Mesajı
Yemek Siparişi web hizmetiniz tarafından gönderilen CheckoutResponseMessage
şunları içeriyor:
PaymentOptions
. Google Takvim widget'ını
ödeme ayarlarınızı belirleyin
ödeme ağ geçidi örnek bir ödeme ağ geçidi kullanarak bir yer tutucu ödeme seçeneği sağlarsınız.
- Web'iniz tarafından gönderilen
CheckoutResponseMessage
bilgisini güncellediğinizden emin olun kullanıma sunun.
Ödeme seçeneği örnekleri
Aşağıdaki örnek JSON PaymentOptions
nesneleri
Korumalı alan anahtarlarını kullanan çeşitli ödeme ağ geçitleri için CheckoutResponseMessage
:
JSON
"paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gatewayMerchantId\":\"YOUR_MERCHANT_ID\",\"gateway\":\"cybersource\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} " } }
JSON
"paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"braintree\",\"braintree:apiVersion\":\"v1\",\"braintree:sdkVersion\":\"1.4.0\",\"braintree:merchantId\":\"YOUR_MERCHANT_ID\",\"braintree:clientKey\":\"YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} " } }
JSON
"paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripe\",\"stripe:version\":\"2018-10-31\",\"stripe:publishableKey\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} " } }
JSON
"paymentOptions": { "googleProvidedOptions": { "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripev2\",\"gatewayMerchantId\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} " } }
Korumalı alan işlemlerini işaretleme
Korumalı Alan Ödeme Modu etkinleştirildiğinde isInSandbox
alanı
isteğe dahil edilir ve web'e gelen istekler için true
olarak ayarlanır
hizmet uç noktası (CheckoutRequestMessage
ve SubmitOrderRequestMessage
).
isInSandbox
alanı true
olarak ayarlandığında aşağıdakileri yapın:
- Jetonlara ayırma işleminde üretim anahtarları yerine korumalı alan anahtarları kullanın yapılandırma adımına geçin. Çoğu ödeme işleyici API sağlar anahtarları arasında yer alır.
- Web servis sağlayıcısıyla herhangi bir iletişimi tetiklemeyin. Genellikle bir (korumalı alan işlemleri hakkında bilgilendirilmeleri gerekmediğinden)
İşlem korumalı alanı olduğunda bile test kredi kartları desteklenmez. etkin. İşlem yaparken gerçek bir kredi kartı kullanmanız gerekir. Ancak, korumalı alan araç jetonları, ücretlendirilebilir olmayan test kartı ayrıntıları içerir.
Ödemeleri işleme koy
Bir müşteri siparişini verdiğinde Uçtan Uca Sipariş,
SubmitOrderRequestMessage
web hizmeti uç noktanıza ekleyin. Google Pay
jeton
anahtar kelimesi, SubmitOrderRequestMessage
instrumentToken
girin. Müşterinin ödemesini işleme koymak için aşağıdakilerden birini yapın:
ödeme ağ geçidiniz:
Ödeme ağ geçidi | |
---|---|
Stripe veya Braintree | Base-64 olarak kodlanmış jeton dizesinin kodunu çözün ve kodu çözülmüş jeton yükünde yer alan uygun verileri, ödemenin işlenmesi için ödeme ağ geçidinize gönderin. |
Diğer tüm ödeme ağ geçitleri (stripev2 dahil) | Ödemeyi işleme almak için base-64 kodlamalı jeton dizesini eksiksiz olarak ödeme ağ geçidi API'nize gönderin. Google Pay ödeme yöntemi jeton yapısı, ödeme ağ geçidinizin ödemeyi işlemek için şifresini çözebileceği şifrelenmiş alanlar içerir. |
Kodu çözülmüş yük örneği
Aşağıdaki örnekler, instrumentToken
içinde döndürülen kodu çözülmüş yükü gösterir
alanını kullanın:
JSON
Bu JSON örneği,
Braintree. nonce
alanının değerini çıkarın
ve değeri Braintree'ye göndererek ödemeyi işleme alabilir.
{ "androidPayCards": [{ "type": "AndroidPayCard", "nonce": "aeeb8297-4242...", "description": "AndroidPay", "consumed": false, "details": { "cardType": "Visa", "lastTwo": "29" } }] }
Braintree kontrol panelinde Google Pay etkinleştirilmemişse
instrumentToken
alanı şu hatanın kodunu çözer:
{ "error": { "message": "Record not found" }, "fieldErrors": [] }
JSON
Bu JSON örneği, Stripe kullanılırken kodu çözülmüş bir ödeme jetonunu gösterir.
id
alanının değerini çıkartın ve Stripe’a gönderin.
işleme koyabiliriz.
{ "id": "tok_abcdefg1234...", "object": "token", "card": { "id": "card_abcde...", "object": "card", "address_city": null, "address_country": null, "address_line1": null, "address_line1_check": null, "address_line2": null, "address_state": null, "address_zip": null, "address_zip_check": null, "brand": "Visa", "country": "US", "cvc_check": null, "dynamic_last4": "1234", "exp_month": 1, "exp_year": 2019, "funding": "credit", "last4": "1234", "metadata": {}, "name": null, "tokenization_method": "android_pay" }, "client_ip": "74.125.177.36", "created": 1500483670, "livemode": false, "type": "card", "used": false }
JSON
Bu JSON örneğinde, Stripev2 kullanılırken kodu çözülmüş bir ödeme jetonu gösterilmektedir.
{ "protocolVersion":"ECv2", "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d", "intermediateSigningKey":{ "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}", "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"] }, "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}" }
JSON
Bu JSON örneğinde, Square kullanırken kodu çözülmüş bir ödeme jetonu gösterilmektedir.
{ "signature": "MEYCIQCMAsWCrY2GfHM/gMAKiK3QCKJJOIkjZeTQGzcdWgvrhwIhAJ3mXwe+wmU9z+Apv1rTDsCVQBzayvWzT4ywxytrSPla", "protocolVersion": "ECv1", "signedMessage": "{\"encryptedMessage\":\"WkYz21EYxojwTqWh6A3oYXtmctu1PlqF+tNYPA4cq017nqj16Ge7kaVR7MI1XG1OrCmcMwP20u5Zb5E28XYan8UI8M4L120orvE9XU1ivZuO4Myq2O3ue8v0lY1MDx8Mnk+5mkAv1kLmzJc91gEQ2leIwrPuMDYqsQUHzTR3Jikh5/v+iWRkyQPKKxgj5c6Erdu/pkg1xV6fQJcHNdq9Jw11zl95x6eQurxw2Uy8v811azGr+noKJbw0uye72MkhmzMS5QKOzwGT9nBfO+zPLYSEewsdOcPbNZF94zk/KU9nxom/gQ+eYEMIZvOj9lO4gQqDqR6DyWyStk7MjeXQTvXWZBI1JpqvOrlTHL0Ct18RpbfOio7hAtafzb0NnqEKlsun+SSpJmvI7U6n6Cnu1JUMUGfT/Jsi6RJ3N6pRw2BubeR1925Xl3jXQnlz5io6X1YRlAcnshZyf6CjBpKES32aTf1m1IHRhZ2Jj6i/g7Y\\u003d\",\"ephemeralPublicKey\":\"BDQA0Cf//BHPcnB0R/GRrWa2g7T1QF97eOhAYy7l45M+kJnsoeL9OaUQV/KIMLvcgbmKkZIm2FQeL7ftd6S4q4c\\u003d\",\"tag\":\"DHtVyXNo+PDr7Thi/EjBBbsr2k7y1SwGIn0D9mmPTJc\\u003d\"}" }
Ödemeyi jetonu kullanarak işleme almak için, source_id
alanında gpay ön ekini taşıyan Square'in ödeme API'sine yaptığınız isteğinizle birlikte base-64 kodlu jeton dizesini döndürün:
{ "idempotency_key": "ID", "source_id": "gpay:GOOGLE_PAY_BASE64_ENCODED_TOKEN", "amount_money": { "amount": 50, "currency": "USD" }, "location_id": "LOCATION_ID", "billing_address": { "postal_code": "11111" } }
Aşağıda, base-64 kodlu tabanın kodunu çözen bir Node.js örneği verilmiştir.
Braintree'den instrumentToken
:
Node.js
function decodeToken(instrumentToken) { let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii') if (decodedString.androidPayCards) { return decodedString.androidPayCards[0].nonce; } }