Pada Oktober 2017, Yandex.Kassa memiliki protokol pembayaran baru dan versi ketiga dari API. Kami telah
membicarakan tentang bagaimana dan mengapa kami sampai pada hal ini, dan sekarang kami mengingat alasan utama untuk beralih ke hal ini bagi mereka yang belum melakukannya.
1. Menghubungkan pembayaran menjadi sangat cepat
Pada API baru, itu terjadi 5-10 kali lebih cepat dari sebelumnya, dan sekarang rata-rata pengembang dapat menghubungkan pembayaran ke situs web atau aplikasinya dalam satu hari kerja, dan tidak dalam lima hari seperti sebelumnya. Ini, tentu saja, adalah tentang bagian dari pekerjaan itu ketika semuanya disetujui, aplikasi disetujui dan kunci akses diterima. Tapi sehari juga cukup untuk itu.
Dan bagi mereka yang berjualan di jejaring sosial, menagih karya melalui surat, SMS atau hanya tautan yang dapat dikirim dalam pesan pribadi.
2. Simpan kekuatan pengembang dan admin
Untuk mempertahankan versi yang lama, Anda perlu mengurus berbagai hal kecil - alokasikan alamat IP statis untuk bekerja dengan API, ubah sertifikat setahun sekali. Dan dalam versi lama tidak ada dukungan untuk mode HTTPS SNI, yang sekarang termasuk gratis (atau hampir gratis) dalam layanan "hosting dengan HTTPS" dari banyak penyedia hosting
Untuk pengembalian uang, konfirmasi, pembatalan, atau coba lagi pembayaran kartu, protokol MWS (Merchant Web Services) digunakan. Dengan bantuan MWS, toko dapat
melakukan pengembalian uang ,
mengkonfirmasi dan
membatalkan pembayaran yang ditangguhkan, serta
pembayaran berulang dengan kartu kredit (jika pembayar setuju untuk ini). Dalam versi lama API untuk bekerja dengan MWS, toko harus menerima sertifikat X.509 dari pusat sertifikasi Yandex.Money, yang digunakan toko untuk membuat permintaan ke Yandex.Cash. Sekarang semua ini keluar dari kotak - Anda hanya mendapatkan kunci akses dan menerapkan metode pembayaran yang diperlukan.
Secara umum, banyak hal yang tidak perlu menghilang dari proses integrasi, yang harus kami tangani sendiri dan menghabiskan waktu untuk itu untuk pengembang dan admin.
3. Hanya ISTIRAHAT dan tidak lebih
Kami
menulis ulang segala sesuatu dalam gaya REST - sekarang protokol dibuat dengan jelas dan berperilaku dapat diprediksi. Untuk kesulitan masa lalu - hampir setiap metode pembayaran memiliki sintaks, skrip, dan
proses sendiri yang harus kita lalui ketika menginstal, mengkonfigurasi, dan melakukan pembayaran. Protokol baru menghilangkan "penyakit anak-anak", memenuhi standar - yang, antara lain, ditetapkan oleh para pemimpin pembayaran internasional.
Untuk perbandingan, mari lihat metode pengembalian uang yang
lama dan yang
baru .
Sebelumnya, perlu untuk membuat dokumen pesanan untuk melaksanakan operasi sesuai dengan standar XML 1.0, untuk membuat paket kriptografi format PKCS # 7 dengan tanda tangan digital, tetapi tanpa rantai sertifikasi, kompresi data, dan enkripsi. Setelah itu, permintaan POST dihasilkan melalui HTTP / 1.1 dengan isi paket kriptografis atau dalam lampiran melalui aplikasi / pkcs-mime tipe MIME. Maka itu adalah bisnis kecil - untuk melewati delapan parameter input dan, pada prinsipnya, semuanya siap.
Total permintaan 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ββ-
Dan permintaan pengembalian uang itu sendiri:
<returnPaymentRequest clientOrderId="46890" requestDT="2011-07-02T20:38:00.000Z" invoiceId="2000000433" shopId="6689" amount="10.00" currency="643" cause=" " />
Di versi baru API, pengembalian dana dalam Python terlihat seperti ini:
refund = Refund.create({ "amount": { "value": "2.00", "currency": "RUB" }, "payment_id": "21741269-000d-50be-b000-0486ffbf45b0" })
JSON yang jelas akan kembali, yang dapat diuraikan dengan apa saja dalam jumlah waktu minimum:
{ "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" }
Kecantikan
4. Dukungan untuk berbagai bahasa dan teknologi
API baru juga memiliki
SDK untuk perangkat seluler , PHP, Python, dan Node.js. Apa pun yang dilakukan backend kalian (well, kecuali dalam kasus yang sangat eksotis), pembayaran melalui Kasir terhubung dengan cepat. Jika seseorang telah aktif menulis dalam Python selama lebih dari beberapa bulan, ia akan mengatasi integrasi.
Tahun lalu, kami merilis perpustakaan untuk aplikasi seluler di iOS dan Android. Dengan bantuannya, formulir pembayaran tertanam dalam aplikasi dan terlihat seperti bagian dari itu (dan tidak ada WebView). Pengguna akan dapat membayar pesanan dengan kartu kredit, dari dompet Yandex.Money, melalui Google Pay, Apple Pay atau Sberbank Online.
Ini juga diterapkan secara sederhana - berikan instruksi kepada pengembang Anda dan segera Anda akan melihat betapa indahnya itu. Kami telah menulis secara lebih rinci tentang bagaimana SDK seluler meningkatkan tingkat kebahagiaan bagi Anda dan pengguna aplikasi seluler Anda di
blog hub kami.
5. Pembayaran reguler tanpa perdukunan
Segera setelah instalasi dan konfigurasi, pembayaran kartu dengan pra-otorisasi dana akan menghasilkan - pembayaran tersebut dimasukkan ke dalam API secara default.
Ada pembayaran berulang (baik dengan kartu dan dari dompet): Anda perlu mengoordinasikannya dengan layanan keamanan, tetapi ini juga terjadi dalam protokol lama. Jika pembayaran berulang menggunakan kartu dengan 3D-Secure wajib, maka API baru akan terlebih dahulu mengembalikan tautan ke sana.
Secara umum, semuanya menjadi lebih sederhana - di sini, Anda juga tidak perlu melakukan ritual panjang dengan MWS, mendapatkan sertifikat dan semua cryptocurrency lainnya.
6. Pemberitahuan otomatis perubahan status pembayaran
Sebelumnya, Anda harus memeriksa status setiap pembayaran secara manual, dan sekarang, jika sudah berubah, pengembang akan secara otomatis menerima pemberitahuan.
Ada empat jenis pemberitahuan otomatis tentang status pembayaran yang dimasukkan ke dalam API v3:
- "Menunggu konfirmasi oleh pedagang setelah pembayaran",
- "Dibayar"
- "Dibatalkan atau kesalahan terjadi selama pembayaran",
- "Pembayaran dikembalikan."
Pada protokol lama, kami harus menulis daftar metode MWS-metode yang kompleks, yang menunjukkan daftar dan properti pesanan. 12 parameter, logika kompleks mengirim permintaan dan peluang menarik untuk menerima respons dalam format 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
Di versi baru begitu. Minta:
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. Segera jelas pada titik mana kesalahan terjadi
Jika pembayaran gagal, maka alih-alih βada yang salahβ, API baru akan menjelaskan mengapa hal itu terjadi - misalnya, kartu kehabisan uang atau pengguna ingin membayar melalui Sberbank Online, tetapi tidak terhubung.
Kadang-kadang mungkin ada jangka pendek "sesuatu yang salah" - kita, tentu saja, berkelahi dengan mereka (pemimpin redaksi Natasha mengangguk kepada saya dan menunjukkan ibu jari saya), tetapi untuk memprediksi perbedaan dalam pemetaan kesalahan antara bank yang berbeda atau perilaku perangkat lunak yang tidak terduga kadang-kadang tidak mungkin. Bahkan untuk kita.
Secara umum, jika pembayaran dibatalkan, maka respons dari API akan segera jelas, karena:
{ "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. Semuanya dapat diperiksa sebelum Anda mulai
Untuk mendapatkan kunci uji dan melihat bagaimana semuanya berfungsi, Anda harus mendaftar di akun Yandex.Cash Anda - untuk ini Anda memerlukan nama pengguna di Yandex dan TIN perusahaan. Dalam kuesioner, pilih pendaftaran mandiri - dalam satu menit rangkaian tes akan dibuat dan Anda dapat memeriksa bagaimana pembayarannya.
Sebelum kami memulai fitur ini,
lingkungan pengujian tersedia di mana Anda dapat mencoba API v3 menggunakan klien Insomnia REST. Ada beberapa contoh pembayaran dengan kartu kredit, yang dengan jelas menunjukkan permintaan apa yang dikirim, respons apa yang dikembalikan dan apa yang terjadi pada semua tahap proses pertukaran data.

Untuk semua tahap integrasi dan pemeliharaan, kami memiliki panduan langkah demi langkah dalam
bahasa Rusia dan
Inggris , serta
referensi API yang lebih rinci.
Secara umum, beralihlah ke API baru, jika belum, atau
hubungkan ke Yandex.Checkout - semuanya siap untuk kunjungan Anda di sana.