يسمح طلب المشاريع الشاملة بضبط وضع الدفع في وضع الحماية عند استخدام بيئة "الاختبار السريع" أو بيئة "وضع الحماية". أثناء اختبار خلاصة البيانات، يمكنك التبديل بين وضعَي الدفع في وضع الحماية ووضع الدفع عند الإنتاج. من أجل اختبار عمليات الدفع لمشروع الشراء الشامل بدون شحن البطاقات، استخدم وضع الحماية باعتباره وضع الدفع. لا تتوافق بيئة الإنتاج مع وضع الدفع في وضع الحماية.
الإعدادات
لتفعيل وضع الدفع في وضع الحماية في بيئة وضع الحماية، يمكنك اتّباع الخطوات التالية:
- في مركز الإجراءات، انتقِل إلى الإعدادات > الميزات.
- في بطاقة ميزات الحساب، ابحث عن زر الاختيار وضع الدفع.
- حدِّد الخيار وضع الحماية وانقر على حفظ التغييرات.
لتفعيل وضع الدفع في وضع الحماية في بيئة الاختبار السريع، يُرجى اتّباع الخطوات التالية:
- في مركز الإجراءات، انتقِل إلى الخلاصات > اختبار سريع.
- حدِّد زر الاختيار استخدام وضع الحماية لخدمة GPay.
عند اختيار وضع الدفع في وضع الحماية:
- يؤدي إجراء "طلب الشراء الشامل" إلى تهيئة Google Pay لعرض الرموز المميّزة للوسائل التي تحتوي على بيانات بطاقة الاختبار بدلاً من تفاصيل البطاقة الفعلية.
- تم ضبط الحقل
isInSandbox
علىtrue
في CheckoutRequestMessage وSubmitOrderRequestMessage.
في ما يلي المجموعات المختلفة للبيئة ووضع الدفع وisInSandbox:
البيئة | وضع الدفع | isInSandbox |
---|---|---|
اختبار سريع | وضع الحماية | صحيح |
اختبار سريع | الإنتاج | false |
وضع الحماية | وضع الحماية | صحيح |
وضع الحماية | الإنتاج | false |
الإنتاج | الإنتاج | false |
رسالة الرد على Checkout
تحتوي CheckoutResponseMessage
التي ترسلها خدمة "طلب الطعام" على الويب على
PaymentOptions
. عند
إعداد عملية الدفع،
عليك تقديم خيارات دفع نائبة باستخدام مثال لبوابة الدفع.
- احرص على تعديل
CheckoutResponseMessage
التي أرسلتها خدمة الويب باستخدام الإعدادات المناسبة للترميز.
أمثلة على خيارات الدفع
وفي ما يلي مثال على كائنات PaymentOptions
بتنسيق JSON من
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 وإرسال البيانات المناسبة الواردة في حمولة الرمز المميز الذي تم فك ترميزه إلى بوابة الدفع لمعالجة الدفعة. |
جميع بوابات الدفع الأخرى (بما في ذلك barev2) | أرسِل سلسلة الرمز المميّز المرمّزة الأساسية 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\"}" }
لمعالجة عملية الدفع باستخدام الرمز المميّز، يجب إرجاع سلسلة الرمز المميّز المرمّز الأساسية 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 يفكّ ترميز instrumentToken
بترميز base-64 من Braintree:
Node.js
function decodeToken(instrumentToken) { let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii') if (decodedString.androidPayCards) { return decodedString.androidPayCards[0].nonce; } }