ثمانية أسباب للتبديل إلى Yandex الجديد

في أكتوبر 2017 ، لدى Yandex.Kassa بروتوكول دفع جديد وإصدار ثالث من API. لقد تحدثنا بالفعل عن كيف ولماذا توصلنا إلى هذا ، والآن نتذكر الأسباب الرئيسية للتبديل إليه بالنسبة لأولئك الذين لم يفعلوا ذلك بعد.

1. أصبح ربط المدفوعات سريعًا جدًا


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

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

2. حفظ قوة المطورين والمدراء


للمحافظة على الإصدار القديم ، تحتاج إلى رعاية مختلف الأشياء الصغيرة - تخصيص عنوان IP ثابت للعمل مع API ، وتغيير الشهادات مرة واحدة في السنة. وفي الإصدار القديم ، لا يوجد دعم لوضع HTTPS SNI ، والذي يتم تضمينه الآن مجانًا (أو مجانًا تقريبًا) في خدمة "الاستضافة باستخدام HTTPS" للعديد من مزودي الاستضافة

في عمليات استرداد الأموال أو تأكيدها أو إلغائها أو إعادة محاولتها ، يتم استخدام بروتوكول MWS (خدمات الويب التجارية). بمساعدة MWS ، يمكن للمتجر إجراء عمليات رد الأموال وتأكيد وإلغاء المدفوعات المؤجلة ، بالإضافة إلى تكرار المدفوعات عن طريق بطاقة الائتمان (إذا وافق الدافع على ذلك). في الإصدار القديم من واجهة برمجة التطبيقات (API) للعمل مع MWS ، احتاج المتجر إلى استلام شهادة X.509 من المرجع المصدق Yandex.Money ، حيث أنشأ المتجر طلبات إلى Yandex.Money. الآن كل هذا يخرج من الصندوق - يمكنك فقط الحصول على مفاتيح الوصول وتنفيذ طرق الدفع اللازمة.

بشكل عام ، اختفت العديد من الأشياء غير الضرورية من عملية التكامل ، والتي كان علينا التعامل معها بمفردنا وقضاء بعض الوقت عليها للمطورين والمسؤولين.

3. فقط الراحة ولا أكثر


نعيد كتابة كل شيء بأسلوب REST - الآن تم بناء البروتوكول بشكل واضح ويتصرف بشكل متوقع. بالنسبة لخزانة الصعوبات السابقة - كان لكل طريقة دفع تقريبًا بناء جملة خاص بها ، ونص ، وعملية كان يتعين علينا القيام بها عند تثبيت المدفوعات وتكوينها وإجراء عمليات الدفع. تخلص البروتوكول الجديد من "أمراض الطفولة" ، وهو يفي بالمعايير - التي وضعتها ، في جملة أمور ، قادة الدفع الدوليون.

للمقارنة ، دعونا ننظر إلى الأساليب القديمة والجديدة لاسترداد.

في السابق ، كان من الضروري تكوين مستند طلب لتنفيذ عملية وفقًا لمعيار XML 1.0 ، لإنشاء حزمة تشفير بتنسيق PKCS # 7 بتوقيع رقمي ، ولكن بدون سلاسل من الشهادات وضغط البيانات وتشفيرها. بعد ذلك ، تم إنشاء طلب POST عبر HTTP / 1.1 باستخدام نص حزمة التشفير أو في مرفق عبر نوع MIME الخاص بالتطبيق / pkcs-mime. ثم إنها الأعمال الصغيرة - لتمرير ثماني معلمات إدخال ، ومن حيث المبدأ ، كل شيء جاهز.

إجمالي طلب HTTP:
POST /webservice/mws/api/returnPayment HTTP/1.1 Content-Type: application/pkcs7-mime Content-Length: 906 ——-BEGIN PKCS7——- MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA JIAEgbE8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPG1h a2VEZXBvc2l0aW9uUmVzcG9uc2UgY2xpZW50T3JkZXJJZD0iMTI5MTExNjIzNDUy OCIgc3RhdHVzPSIwIi6789Jvcj0iMCIgcHJvY2Vzc2VkRFQ9IjIwMTAtMTEtMzBU MTE6MjM6NTQuNjI0WiIgYmFsYW5jZT0iNTQxNDYuNzMiIC8+DQoAAAAAAAAxggF8 MIIBeAIBATB3MGoxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZSdXNzaWExFjAUBgNV BAcTDVN0LlBldGVyc2J1cmcxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5 IEx0ZDEPMA0GA1UEAxMGc2VydmVyAgkAy2xbdQckXjIwCQYFKw4DAhoFAKBdMBgG CSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMTEzMDEx MjM1NVowIwYJKoZIhvcNAQkEMRYEFEYNh8glwqIXGR/n6oYrApa8DaO5MA0GCSqG SIb3DQEBAQUABIGAHlgGsYK30RXWBvuQao0V73KIPQE1A6BCg7Y6Iag/xlmZ3rBB kFpszF/O2fB+t84pCHfV15ErZQEkAqIotkEYEgA3hAddEW5+RWUzp+3npHpW5OY7 h3niP5Pj+r0P8EDgHe2j0Zb3dzj2mbwOshZD+FP1IcR8AmiTV3u35C6KAEsAAAAA AAA= ——-END PKCS7——- 


وطلب استرداد نفسه:
 <returnPaymentRequest clientOrderId="46890" requestDT="2011-07-02T20:38:00.000Z" invoiceId="2000000433" shopId="6689" amount="10.00" currency="643" cause="   " /> 

في الإصدار الجديد من واجهة برمجة التطبيقات ، يبدو رد الأموال في Python كما يلي:
 refund = Refund.create({   "amount": {       "value": "2.00",       "currency": "RUB"   },   "payment_id": "21741269-000d-50be-b000-0486ffbf45b0" }) 

سيعود JSON واضح ، والذي يمكن تحليله بأي شيء في الحد الأدنى من الوقت:
 {   "id": "216742f7-0016-50be-b000-078a43a63ae4",   "status": "succeeded",   "amount": {     "value": "2.00",     "currency": "RUB"   },   "created_at": "2017-10-04T19:27:51.407Z",   "payment_id": "21746789-000f-50be-b000-0486ffbf45b0" } 

الجمال.

4. دعم اللغات والتقنيات المختلفة


يحتوي API الجديد أيضًا على SDK للأجهزة المحمولة و PHP و Python و Node.js. مهما كان ما يفعله خلفائك (جيدًا ، باستثناء في الحالات الغريبة جدًا) ، يتم ربط المدفوعات من خلال Cashier بسرعة. إذا كان شخص ما يكتب بنشاط في بيثون لمدة تزيد عن شهرين ، فسوف يتعامل مع الاندماج.

في العام الماضي ، أصدرنا مكتبة لتطبيقات الأجهزة المحمولة على iOS و Android. مع مساعدتها ، يتم تضمين نماذج الدفع في التطبيق وتبدو وكأنها جزء منه (وليس WebView). سيتمكن المستخدمون من دفع ثمن الطلب باستخدام بطاقة ائتمان ، من محفظة Yandex.Money ، عبر Google Pay أو Apple Pay أو Sberbank Online.

يتم تطبيقه أيضًا ببساطة - قم بإعطاء التعليمات للمطور الخاص بك وسرعان ما سترى كم هو رائع. لقد كتبنا بالفعل بمزيد من التفاصيل حول كيفية زيادة SDK للجوال في مستوى السعادة لك ولمستخدمي تطبيقات الجوال الخاصة بك في مدونة مركزنا.

5. المدفوعات العادية دون الشامانية


بعد التثبيت والتكوين مباشرة ، ستكسب مدفوعات البطاقات مع التفويض المسبق للأموال - يتم دمجها في واجهة برمجة التطبيقات بشكل افتراضي.
هناك مدفوعات متكررة (سواء باستخدام بطاقة أو من المحفظة): تحتاج إلى تنسيقها مع خدمة الأمن ، ولكن كان هذا هو الحال أيضًا في البروتوكول القديم. إذا كانت إحدى الدفعات المتكررة تستخدم بطاقة مزودة بأمان ثلاثي الأبعاد إلزامي ، فستقوم واجهة برمجة التطبيقات الجديدة أولاً بإرجاع رابط إليها.
بشكل عام ، أصبح كل شيء أكثر بساطة - هنا ، أيضًا ، لا تحتاج إلى أداء طقوس طويلة باستخدام MWS ، والحصول على شهادات وجميع العملات المشفرة الأخرى.

6. الإخطارات التلقائية للتغييرات حالة الدفع


في السابق ، كان عليك التحقق يدويًا من حالة كل دفعة ، والآن إذا تم تغييرها ، سيتلقى المطور إشعارًا تلقائيًا.
هناك أربعة أنواع من الإخطار التلقائي لحالة الدفع المضمنة في API v3:
  1. "في انتظار تأكيد التاجر بعد الدفع" ،
  2. "دفعت"
  3. "تم الإلغاء أو حدث خطأ أثناء الدفع" ،
  4. "تم إرجاع الدفعة".

على البروتوكول القديم ، كان علينا أن نكتب قائمة MWS- طريقة معقدة ، والتي أظهرت قائمة وخصائص الطلبات. 12 معلمة ومنطقًا معقدًا لإرسال طلب وفرصة رائعة لتلقي استجابة بتنسيق CSV:

 status=0;error=0;processedDT=2011-08-02T14:46:58.096+03:00;orderCount=2 shopId;shopName;articleId;articleName;invoiceId;orderNumber;paymentSystemOrderNumber;customerNumber;createdDatetime;paid;orderSumAmount; orderSumCurrencyPaycash;orderSumBankPaycash;paidSumAmount;paidSumCurrencyPaycash;paidSumBankPaycash;receivedSumAmount;receivedSumCurrencyPaycash; receivedSumBankPaycash;shopSumAmount;shopSumCurrencyPaycash;shopSumBankPaycash;paymentDatetime;paymentAuthorizationTime;payerCode;payerAddress;payeeCode; paymentSystemDatetime;avisoReceivedDatetime;avisoStatus;paymentType;agentId;uniLabel;environment 1;" ";2;"-";2000024717776;"2011.08.02 09:07:32";483512879684006008;97881;2011-08-02T08:07:59.148+03:00;true;10.15;643;1003;10.15;643; 1003;10.15;643;1003;10.15;643;1003;2011-08-02T08:07:59.684+03:00;483512879684006008;41003476047679;192.168.1.127;41003131475668;2011-08-02T08:07:59.684+03:00; 2011-08-02T08:07:59.660+03:00;1000;AC;200002;1cd12967-0001-5000-8000-000000034fd8;Live 1;" ";2;"-";2000024717780;2000024717780;483512937773006008;770367;2011-08-02T08:08:57.175+03:00;true;10.00;643;1003;10.00;643; 1003;10.00;643;1003;10.00;643;1003;2011-08-02T08:08:57.773+03:00;483512937773006008;41003494819180;192.168.1.127;41003131475668;2011-08-02T08:08:57.773+03:00; 2011-08-02T08:08:57.730+03:00;1000;AC;200002;1cd129a4-0001-5000-8000-000000034fe1;Live 

في الإصدار الجديد جدا. الاستعلام:
 curl https://payment.yandex.net/api/v3/payments/{payment_id} \ -u < >:< > : { "id": "22312f66-000f-5100-8000-18db351245c7", "status": "waiting_for_capture", "paid": true, "amount": {   "value": "2.00",   "currency": "RUB" }, "created_at": "2018-07-18T10:51:18.139Z", "description": " №72", "expires_at": "2018-07-25T10:52:00.233Z", "metadata": {}, "payment_method": {   "type": "bank_card",   "id": "22ebbf66-000f-5000-8000-18db351245c7",   "saved": false,   "card": {     "first6": "555555",     "last4": "4444",     "card_type": "MasterCard"   },   "title": "Bank card *4444" }, "test": false } 

7. يتضح على الفور عند حدوث الخطأ


إذا فشل الدفع ، فبدلاً من "حدث خطأ ما" ، ستوضح واجهة برمجة التطبيقات الجديدة سبب حدوث ذلك - على سبيل المثال ، نفدت البطاقة أو أن المستخدم أراد الدفع عبر Sberbank Online ، لكنه لم يكن متصلاً.
من حين لآخر ، قد يكون هناك "خطأ ما" على المدى القصير - فنحن بالطبع نقاتل معهم (رئيس التحرير ناتاشا يلمح إلي ويظهر إبهامي) ، ولكن للتنبؤ بالاختلافات في تعيين الأخطاء بين البنوك المختلفة أو سلوك غير متوقع للبرامج أحيانًا من المستحيل. حتى لنا.
بشكل عام ، إذا تم إلغاء الدفع ، فستكون استجابة واجهة برمجة التطبيقات واضحة على الفور ، وذلك بسبب:
 { "id": "22379b7b-000f-5000-9030-1a603a795739", "status": "canceled", "paid": false, "amount": {   "value": "2.00",   "currency": "RUB" }, "created_at": "2018-05-23T15:24:43.812Z", "metadata": {}, "payment_method": {   "type": "bank_card",   "id": "22977a7b-000f-5000-9000-1a603a795129",   "saved": false }, "recipient": {   "account_id": "100001",   "gateway_id": "1000001" }, "test": false, "cancellation_details": {   "party": "payment_network",   "reason": "payment_method_restricted" } } 

8. يمكن التحقق من كل شيء قبل أن تبدأ


للحصول على مفاتيح الاختبار ومعرفة كيفية عمل كل شيء ، تحتاج إلى التسجيل في حساب Yandex.Cash الخاص بك - لذلك تحتاج إلى اسم مستخدم على Yandex و TIN للشركة. في الاستبيان ، اختر التسجيل الذاتي - في غضون دقيقة واحدة سيتم إنشاء دائرة اختبار ويمكنك التحقق من كيفية دفع المدفوعات.

قبل أن نبدأ هذه الميزة ، كانت بيئة اختبار متاحة حيث يمكنك تجربة واجهة برمجة التطبيقات (API) الإصدار 3 باستخدام عميل Insomnia REST. هناك أمثلة للدفع عن طريق بطاقة الائتمان ، والتي توضح بوضوح ما يتم إرسال الطلب ، وما هي الاستجابة التي يتم إرجاعها وما يحدث في جميع مراحل عملية تبادل البيانات.



لجميع مراحل التكامل والصيانة ، لدينا دليل خطوة بخطوة باللغتين الروسية والإنجليزية ، بالإضافة إلى مرجع API مفصل أكثر.

بشكل عام ، قم بالتبديل إلى واجهة برمجة التطبيقات الجديدة ، إن لم يكن بالفعل ، أو اتصل بـ Yandex.Checkout - كل شيء جاهز لزيارتك هناك.

Source: https://habr.com/ru/post/ar453174/


All Articles