Magento2 Sisa Alur API Order

13

Saya membuat panggilan REST API ke situs web magento untuk penempatan pesanan. Di bawah ini adalah urutan panggilan saya.

  1. Buat gerobak rest/V1/guest-carts/
  2. Dapatkan gerobak rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. Tambahkan produk ke troli rest/V1/guest-carts/24/items
  4. Tambahkan informasi penagihan, setel metode pembayaran, dan pesan tempat rest/V1/guest-carts/24/payment-information

Dalam urutan ini pesanan ditempatkan dengan status pesanan "tertunda". Saya bertanya-tanya bagaimana pembayaran ditangkap melalui api jika ada gateway pembayaran (Contoh: PayPal) yang terlibat untuk memproses pembayaran dan menghasilkan faktur.

Apakah ada api yang hilang dalam aliran di atas untuk menangkap pembayaran.

blakcaps
sumber

Jawaban:

11

Saya telah menggunakan instalasi baru untuk yang berikut menggunakan Magento2 CE 2.2.0-dev, dan meninggalkan tema "Luma" default juga.

Mengenai metode pembayaran eksternal (gateway) seperti MiGS , Braintree , PayPal , dan lainnya, Magento mendukung gateway ini di luar kotak tetapi tidak menyediakan API untuk mereka yang dapat Anda gunakan bersama dengan API "Checkout" lainnya.

Jadi, jika Anda berencana untuk membangun aplikasi checkout / halaman menggunakan Magento's APIs, Anda perlu mengintegrasikan secara manual dengan layanan ini menggunakan SDK / API mereka, untungnya, Anda dapat belajar banyak dengan memeriksa bagaimana Magento terintegrasi dengan layanan ini dalam pembuatan -dalam integrasi.

Untuk memahami ini, saya harus mengonfigurasi Braintree karena ini yang paling mudah:

  1. Buat akun sandbox di https://www.braintreepayments.com/sandbox
  2. Akses Area Admin Magento.
  3. Toko> Konfigurasi> Penjualan> Metode Pembayaran> Braintree> Konfigurasi.
  4. Pastikan "Lingkungan" adalah "Kotak Pasir", dan masukkan "ID Pedagang", "Kunci Publik", dan "Kunci Pribadi".
  5. Simpan Konfigurasi
  6. Anda mungkin perlu mengindeks ulang dan / atau menyegarkan cache.

Setelah menambahkan produk ke troli dan melanjutkan ke checkout, pada langkah terakhir, pilih metode pembayaran Braintree, lalu setelah mengklik tombol "Tempatkan Pesanan", Anda akan melihat permintaan AJAX berikut:

  1. 2 permintaan ke Braintree API untuk memvalidasi kartu, melakukan transaksi, dan merespons dengan status transaksi.
  2. Permintaan untuk API Magento guest-carts/cartId/payment-informationdengan badan yang biasa seperti yang dijelaskan dalam dokumentasi API Magento.

Setelah itu proses berlanjut seperti yang diharapkan dengan pengalihan ke halaman sukses ketika permintaan terakhir merespons di JSON yang berisi pesanan entity_id

masukkan deskripsi gambar di sini

Ini mengkonfirmasi bahwa panggilan ke layanan eksternal -Braintree dalam contoh kita- dilakukan oleh halaman checkout BUKAN oleh Magento secara internal, jadi kita perlu melakukan hal yang sama jika kita ingin mengembangkan halaman checkout / aplikasi kita sendiri.

Mengenai pengontrolan status pesanan, saya menggali lebih dalam dan mengetahui bahwa menggunakan metode pembayaran seperti MiGS, Braintree, atau PayPal, menghasilkan pesanan dengan status processingalih-alih seperti biasanya pending, saya menduga ini adalah konfigurasi metode pembayaran atau pengamat. , tetapi tampaknya ini adalah konfigurasi, berikut ini detailnya.

Kelas: Magento \ Penjualan \ Model \ Pesanan \ Pembayaran

Metode: Tempat ()

Ada persyaratan yang memeriksa apakah Initializationdiperlukan untuk metode ini if ($methodInstance->isInitializeNeeded()), jika itu masalahnya, metode initialize()dijalankan yang Anda tetapkan, dan memungkinkan Anda untuk menentukan keduanya statedan status.

Mahmoud Tantawy
sumber
dapatkah Anda membagikan muatan untuk api informasi pembayaran
blakcaps
1
{"cartId": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": {"countryId": "EG", "regionId": null, "region": "", "street": ["street", ""], "perusahaan" ":" perusahaan saya "," telepon ":" 12346987 "," kode pos ":" 12345 "," kota ":" kota "," nama depan ":" f nama "," nama belakang ":" l name "," saveInAddressBook ": null}," paymentMethod ": {" method ":" braintree "," additional_data ": {" payment_method_nonce ":" ef27df81-7c29-4a74-9049-15de33f1f49f "}}," email ":" email @ example .com "}
Mahmoud Tantawy
Terima kasih untuk payloadnya. Saya bertanya-tanya, bagaimana cara menghasilkan "payment_method_nonce".
blakcaps
Tidak benar-benar tahu tetapi saya pikir dengan memeriksa permintaan bolak-balik bahwa nonce dapat dengan mudah ditemukan, jika itu benar-benar berfungsi sebagai nonce.
Mahmoud Tantawy
1
Braintree tampaknya mudah diintegrasikan melalui REST API. Tetapi bagaimana cara mengintegrasikan gateway pembayaran redirection eksternal seperti Papal atau Ingenico?
Franck Garnier