آلية عمل Payment Request API

تعرَّف على آلية عمل واجهة برمجة التطبيقات Payment Request API على مستوى عالٍ.

عندما يحاول أحد العملاء شراء منتج من موقعك الإلكتروني، يجب أن يطلب الموقع الإلكتروني من العميل تقديم معلومات الدفع ومعلومات أخرى اختيارية، مثل طريقة الشحن المفضّلة. يمكنك تحقيق ذلك بسهولة وبسرعة باستخدام Payment Request API (PR API).

البنية الأساسية

يتطلّب إنشاء عنصر PaymentRequest مَعلمتَين: payment methods وpayment details. بالإضافة إلى ذلك، تكون مَعلمة خيارات الدفع الثالثة اختيارية. يمكن إنشاء طلب أساسي على النحو التالي:

const request = new PaymentRequest(paymentMethods, paymentDetails);

لنلقِ نظرة على كيفية إنشاء واستخدام كل معلَمة.

طُرق الدفع

المَعلمة الأولى، paymentMethods، هي قائمة بطرق الدفع المتوافقة في متغيّر مصفوفة. يتألف كل عنصر في المصفوفة من عنصرين، هما: supportedMethods وdata اختياريًا.

بالنسبة إلى supportedMethods، على التاجر تحديد معرّف طريقة الدفع مثل https://bobbucks.dev/pay. ويعتمد توفُّر data ومحتواه على محتوى supportedMethods وتصميم مقدّم تطبيق الدفع.

يجب أن يقدّم مقدّم تطبيق الدفع كلا المقطعَين من المعلومات.

// Supported payment methods
const paymentMethods = [{
  supportedMethods: 'https://bobbucks.dev/pay',
  data: {
    ... // Optional parameters defined by the payment app provider.
  }
}];

تفاصيل الدفع

يتمّ تمرير المَعلمة الثانية paymentDetails كعنصر وتحدّد تفاصيل الدفع للمعاملة. يحتوي على القيمة المطلوبة total، التي تحدّد إجمالي المبلغ المستحق من العميل. يمكن أن تشمل هذه المَعلمة أيضًا قائمة اختيارية بالعناصر التي تم شراؤها.

في المثال أدناه، يتم عرض قائمة السلع الاختيارية المشتراة (سلعة واحدة فقط، في هذه الحالة)، وكذلك المبلغ الإجمالي المطلوب المستحق. في كلتا الحالتين، يتم تحديد وحدة العملة مع كل مبلغ على حدة.

const paymentDetails = {
  displayItems: [{
    label: 'Anvil L/S Crew Neck - Grey M x1',
    amount: { currency: 'USD', value: '22.15' }
  }],
  total: {
    label: 'Total due',
    amount: { currency: 'USD', value : '22.15' }
  }
};

التحقّق ممّا إذا كانت طريقة الدفع متاحة

يتحقّق Chrome ممّا إذا كان المستخدم والبيئة جاهزين لإجراء الدفع أثناء إنشاء عنصر PaymentRequest.

للتحقّق مما إذا كان المستخدم والبيئة جاهزين لإجراء عملية دفع، اتصل بالرقم canMakePayment() قبل تنفيذ إجراءات الدفع. يؤدي استدعاء canMakePayment() إلى عرض true إذا كان المتصفّح يتيح أسلوب دفع واحدًا على الأقل محدّدًا في الكائن.

request.canMakePayment().then(result => {
  if (result) {
    // This browser supports the specified payment method.
  } else {
    // This browser does NOT support the specified payment method.
  }
}).catch(e => {
  // An exception
});

مزيد من المعلومات حول دالة PaymentRequest.canMakePayment() على MDN

الطريقة show()

بعد ضبط المَعلمتَين وإنشاء عنصر request كما هو موضّح أعلاه، يمكنك استدعاء طريقة show() التي تعرِض واجهة مستخدم تطبيق الدفع.

request.show().then(response => {
  // [process payment]
  // send to a PSP etc.
  response.complete('success');
});

إنّ مظهر واجهة مستخدم تطبيق الدفع متروك بالكامل لمقدّم تطبيق الدفع. بعد موافقة العميل على إجراء دفعة، يتم تمرير عنصر JSON إلى التاجر يحتوي على جميع المعلومات المطلوبة لنقل الأموال. ويمكن للتاجر بعد ذلك إرسالها إلى مقدّم خدمة الدفع لمعالجة الدفعة.

أخيرًا، يمكنك إغلاق واجهة مستخدم طلب الدفع من خلال إكمال العملية باستخدام response.complete('success') أو response.complete('fail') استنادًا إلى نتيجة العميل التي يعرضها نظام معالجة الدفعات.

التالي

مزيد من المعلومات حول "الدفعات على الويب"