أيها الرفاق ، أنا أعرض وحدة جافا سكريبت جاهزة لإجراء الدفعات باستخدام Google Pay. تتضمن الوحدة استخدام npm مع التصدير والاستيراد في بيئة تطوير حديثة ، ولكن ، على ما أعتقد ، يمكن لأولئك الذين يريدون ES5 نظيفًا أن يعيدوه بسهولة.
رابط إلى الوحدة . رمز لديه الوثائق والتعليقات اللازمة. سأقدم بعض التفسيرات هنا.

يجب أن أقول إن وثائق Google على زر الدفع لم تكن أسهل ، قائمة الأخطاء التي تم إرجاعها بواسطة Google Pay API هي أيضًا ليست الأكثر اكتمالا. لذلك ، على عكس العمل مع ApplePay ، مع Google Pay ، كان علي أن أرسم قليلاً قبل أن تعمل الوحدة بالفعل.
يتكون العمل من مرحلتين: أولاً ، يجب أن نقرر ما إذا كنا سنعرض الزر أم لا (لا تدعم جميع المتصفحات Google Pay) ، ثم ننفذ عملية الدفع نفسها.
1. زر العرضexport function showGooglePayButton(options, callbacks) {
لا شيء معقد هنا. في الخيارات ، نجتاز معلمتين - googleBaseCardPaymentMethod والبيئة.
googleBaseCardPaymentMethod هو كائن يسرد أنواع الدفع والمعلمات (مزيد من التفاصيل حول البحث
المسموح به هنا ). إذا لم يتم ضبطها ، فإننا ندعو الضابط القياسي في الكود ، مع إعادة كائن نموذجي إلينا:
const setGoogleBaseCardPaymentMethod = () => { return { type: "CARD", parameters: { allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"], allowedCardNetworks: ["AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA"] } } };
البيئة هي بيئة أو إنتاج أو اختبار
بناءً على نداء رد الاتصال الناجح ، نرسم بالفعل (أو نعرض الزر المرسوم بالفعل). هذا هو اختيارك. فقط تذكر أن Google تتطلب مطابقة
أدلةها .
2. المعالجةلعرض زر Google Pay ، أنشأ المستعرض الخاص بك واجهة برمجة التطبيقات (API) للمتصفح كائن "
المدفوعات" ، والذي يحتاج الآن إلى جانب المعلمات الأخرى إلى تمريره إلى وظيفة المعالجة. دعنا ننظر إلى المعلمات الأخرى:
googleBaseCardPaymentMethod - انظر أعلاه
googlePayPublicKey ، merc_id ، merc_name - للعمل بنجاح مع Google Pay ، يجب أن يكون لديك تاجر مسجل. معالمه نحصل على الدعم.
بالإضافة إلى ذلك ، نحن ننقل النجاح ونفشل عمليات الاسترجاع ، وكذلك البيانات لإجراء الدفع (انظر أدناه).
لذلك ، لإجراء عملية دفع ، يجب أن نأخذ كائن
المدفوعات Client الذي تم إنشاؤه مسبقًا
ونستدعي الأسلوب
loadPaymentData مع كائن
paymentDataRequest :
const paymentDataRequest = getGooglePaymentDataRequest () :
const getGooglePaymentDataRequest = () => { const cardPaymentMethod = Object.assign( {}, baseMethod, { tokenizationSpecification: token } ); const paymentDataRequest = { apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods : [cardPaymentMethod], merchantInfo : { merchantId: options.merc_id, merchantName: options.merc_name }, transactionInfo : { currencyCode: options.currency, totalPriceStatus: 'FINAL', totalPrice: "" + options.sum } }; return paymentDataRequest; };
بالنسبة لبيئة الاختبار ، تقدم Google كائن merchantInfo الخاص بها. يجب استخدامه مع
merchantId المكتوب في المثال ،
merchantName غير مهم.
بالإضافة إلى ذلك ، نحتاج إلى كائن
رمزي :
const token = { type: 'DIRECT', parameters: { "protocolVersion": "ECv1", "publicKey": options.googlePayPublicKey } };
→ اقرأ المزيد عن المعلمات
هناعلاوة على ذلك ، عند تكوين الكائن ، باستخدام طريقة
loadPaymentData ،
يتم إرسال
طلب إلى خادم Google ، ويتم فتح الإطار الذي يحتوي على البطاقات المحفوظة ، وبعد اكتمال العملية ، يتم إغلاق الإطار:
paymentsClient.loadPaymentData(paymentDataRequest) .then(function(paymentData) { const googleToken = JSON.parse(paymentData.paymentMethodData.tokenizationData.token);
بعد التنفيذ الناجح للأسلوب (أي الاتصال بالبطاقات المحفوظة وتمرير التحقق) ، يمكننا تقديم طلب AJAX للجهة الخلفية الخاصة بنا من أجل إجراء الدفع باستخدام Google Pay. في هذا الطلب ، سنحتاج إلى نقل
googleToken ، الذي جاء من Google ، وكذلك المفتاح العام.
هذا كل شيء ، لقد تم الدفع عبر Google Pay بعد المعالجة على ظهره!