يتيح طلب المشروعات الشاملة ضبط وضع الدفع في وضع الحماية عندما باستخدام إما الاختبار السريع أو بيئة وضع الحماية. أثناء اختبار بياناتك يمكنك التبديل بين وضع الحماية ووضع الدفع بالإنتاج. من أجل اختبار مدفوعات لمشروعك الشامل للطلب دون تحصيل رسوم على البطاقات، واستخدام وضع الحماية باعتباره وضع الدفع ليس بيئة الإنتاج تتيح وضع الدفع في وضع الحماية.
الإعداد
لتمكين وضع الدفع في Sandbox في بيئة Sandbox، اتبع الخطوات التالية الخطوات:
- في مركز الإجراءات، انتقِل إلى الإعدادات > الميزات.
- في بطاقة ميزات الحساب، ابحث عن زر الاختيار وضع الدفع.
- حدِّد خيار وضع الحماية وانقر على حفظ التغييرات.
لتفعيل وضع الدفع في وضع الحماية في بيئة الاختبار السريع، يُرجى اتّباع الخطوات التالية الخطوات:
- في مركز الإجراءات، انتقِل إلى الخلاصات > الاختبار السريع:
- انقر على زر الاختيار استخدام وضع الحماية مع GPay.
عند تحديد وضع الدفع في وضع الحماية:
- تؤدي عملية الطلب الشاملة إلى ضبط Google Pay لعرض الرموز المميزة للأدوات التي أن تتضمّن بيانات بطاقة اختبارية بدلاً من تفاصيل البطاقة الفعلية
- تم ضبط الحقل
isInSandbox
علىtrue
في CheckoutRequestMessage و SubmitOrderRequestMessage.
المجموعات المختلفة من Environment و"وضع الدفع" وisInSandbox هي على النحو التالي:
البيئة | وضع الدفع | isInSandbox |
---|---|---|
اختبار سريع | وضع الحماية | صحيح |
اختبار سريع | الإنتاج | خطأ |
وضع الحماية | وضع الحماية | صحيح |
وضع الحماية | الإنتاج | خطأ |
الإنتاج | الإنتاج | خطأ |
رسالة الرد على الدفع
تحتوي قيمة CheckoutResponseMessage
التي ترسلها خدمة "طلب الطعام" على الويب على
PaymentOptions
عندما تريد
إعداد عملية الدفع
فإنك تقدم خيارات دفع كعنصر نائب باستخدام مثال لبوابة الدفع.
- احرص على تحديث معلومات
CheckoutResponseMessage
المُرسَلة من موقعك الإلكتروني. باستخدام تهيئة الترميز المناسبة.
أمثلة على خيارات الدفع
في ما يلي أمثلة على كائنات JSON PaymentOptions
من
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\"}} " } }
الإبلاغ عن المعاملات في وضع الحماية
عندما يكون وضع الدفع في وضع الحماية مفعَّلاً، يصبح حقل isInSandbox
تم تضمينها في الطلب وضبطها على true
للطلبات الواردة إلى الويب
نقطة نهاية الخدمة (CheckoutRequestMessage
وSubmitOrderRequestMessage
).
يُرجى تنفيذ ما يلي عند ضبط حقل isInSandbox
على true
:
- استخدام مفاتيح وضع الحماية بدلاً من مفاتيح الإنتاج في إنشاء الرموز المميّزة تهيئة بوابة الدفع. توفّر معظم الجهات المسؤولة عن معالجة المعاملات واجهة برمجة التطبيقات لكل من وضع الحماية والإنتاج.
- لا تجري أي اتصال مع مزود خدمة الويب، عادةً مطعم، حيث ليس من الضروري إبلاغه بأي معاملات في وضع الحماية.
بطاقات الائتمان الاختبارية غير متاحة، حتى في حال كان وضع حماية المعاملات غير متاح مفعّلة. يجب استخدام بطاقة ائتمان حقيقية عند إجراء معاملة. ومع ذلك، تحتوي الرموز المميزة لأداة وضع الحماية على تفاصيل بطاقة اختبار لا يمكن تحصيل رسومها.
معالجة الدفعات
عندما يرسل العميل طلبه، ترسل ميزة "الطلب التام بين الأطراف"
SubmitOrderRequestMessage
إلى نقطة نهاية خدمة الويب. Google Pay
الرمز المميّز
يتم تضمينها كسلسلة مشفّرة لـ base-64 في SubmitOrderRequestMessage
instrumentToken
. لمعالجة دفعة العميل، نفِّذ أحد الإجراءات التالية حسب
بوابة الدفع:
بوابة الدفع | |
---|---|
Stripe أو Braintree | يُرجى فك ترميز سلسلة الرمز المميّز base-64 وإرسال البيانات المناسبة المضمّنة في حمولة الرمز المميّز الذي تم فك ترميزه إلى بوابة الدفع لمعالجة الدفعة. |
جميع بوابات الدفع الأخرى (بما في ذلكtripev2) | أرسِل السلسلة الكاملة للرمز المميّز المشفر بترميز base-64 إلى واجهة برمجة تطبيقات بوابة الدفع لمعالجة الدفعة. تحتوي بنية الرموز المميّزة لطريقة الدفع في Google Pay على حقول مشفّرة يمكن لبوابة الدفع فك تشفيرها لمعالجة الدفعة. |
مثال على حمولة البيانات التي تم فك ترميزها
تعرض الأمثلة التالية الحمولات التي تم فك ترميزها والتي تم إرجاعها في instrumentToken
.
الخاص ببوابات الدفع المختلفة:
JSON
يمثّل مثال JSON هذا رمزًا مميّزًا للدفع تم فك ترميزه عند استخدام
Braintree. استخراج قيمة الحقل nonce
وإرسال القيمة إلى Braintree لمعالجة الدفعة.
{ "androidPayCards": [{ "type": "AndroidPayCard", "nonce": "aeeb8297-4242...", "description": "AndroidPay", "consumed": false, "details": { "cardType": "Visa", "lastTwo": "29" } }] }
إذا لم يتم تفعيل Google Pay في لوحة تحكم Braintree،
فك ترميز حقل instrumentToken
إلى الخطأ التالي:
{ "error": { "message": "Record not found" }, "fieldErrors": [] }
JSON
يمثّل مثال JSON هذا رمزًا مميّزًا تم فك ترميزه للدفع عند استخدام Stripe.
استخرِج قيمة الحقل id
وأرسِلها إلى Stripe إلى
معالجة الدفعة.
{ "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
يمثّل مثال JSON هذا رمزًا مميزًا للدفع تم فك ترميزه عند استخدامtripev2.
{ "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
يمثّل مثال JSON هذا رمزًا مميّزًا تم فك ترميزه للدفع عند استخدام Square.
{ "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\"}" }
لمعالجة الدفعة باستخدام الرمز المميّز، عليك إرجاع سلسلة الرمز المميّز المشفر base-64 مع طلبك إلى واجهة برمجة تطبيقات الدفع في Square في الحقل source_id
مسبوقة بـ gpay:
{ "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" } }
في ما يلي مثال على Node.js يفك ترميز base-64.
instrumentToken
من Braintree:
Node.js
function decodeToken(instrumentToken) { let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii') if (decodedString.androidPayCards) { return decodedString.androidPayCards[0].nonce; } }