การสั่งซื้อ API ส่วนที่เหลือของ Magento2


13

ฉันกำลังโทรหา REST API ไปที่เว็บไซต์คุณภาพเยี่ยมเพื่อการสั่งซื้อ ด้านล่างเป็นลำดับการโทรของฉัน

  1. สร้างรถเข็น rest/V1/guest-carts/
  2. รับรถเข็น rest/V1/guest-carts/bae0af147b83f1561f66cc4e3c97916e
  3. เพิ่มสินค้าลงตะกร้า rest/V1/guest-carts/24/items
  4. เพิ่มข้อมูลการเรียกเก็บเงินกำหนดวิธีการชำระเงินและสั่งซื้อ rest/V1/guest-carts/24/payment-information

ในลำดับนี้คำสั่งซื้อจะได้รับสถานะการสั่งซื้อ "รอดำเนินการ" ฉันสงสัยว่าวิธีการชำระเงินจะถูกจับผ่าน api หากเกตเวย์การชำระเงินใด ๆ (เช่น PayPal) เกี่ยวข้องกับการประมวลผลการชำระเงินและสร้างใบแจ้งหนี้

มี API ใดขาดหายไปในโฟลว์ข้างต้นสำหรับการจับภาพการชำระเงิน

คำตอบ:


12

ฉันใช้การติดตั้งใหม่สำหรับสิ่งต่อไปนี้โดยใช้ Magento2 CE 2.2.0-dev และปล่อยชุดรูปแบบ "Luma" เริ่มต้นไว้ด้วย

เกี่ยวกับวิธีการชำระเงินภายนอก (เกตเวย์) เช่นMiGS , Braintree , PayPalและอื่น ๆ Magento สนับสนุนเกตเวย์เหล่านี้ออกมาจากกล่อง แต่มี NO API สำหรับพวกเขาที่คุณสามารถใช้พร้อมกับ API "Checkout" อื่น ๆ

ดังนั้นหากคุณวางแผนที่จะสร้างแอป / เพจชำระเงินโดยใช้ API ของ Magento คุณจะต้องรวมเข้ากับบริการเหล่านี้ด้วยตนเองโดยใช้ SDK / API ของพวกเขาโชคดีคุณสามารถเรียนรู้ได้มากมายโดยการตรวจสอบว่า Magento ทำงานร่วมกับบริการเหล่านี้อย่างไร ในการบูรณาการ

เพื่อทำความเข้าใจสิ่งนี้ฉันต้องกำหนดค่าเบรนทรีเนื่องจากเป็นวิธีที่ง่ายที่สุด:

  1. สร้างบัญชี sandbox ที่https://www.braintreepayments.com/sandbox
  2. เข้าถึง Magento Admin Area
  3. ร้านค้า> การกำหนดค่า> การขาย> วิธีการชำระเงิน> เบรนทรี> กำหนดค่า
  4. ตรวจสอบให้แน่ใจว่า "สภาพแวดล้อม" เป็น "แซนด์บ็อกซ์" และป้อน "รหัสผู้ขาย", "รหัสสาธารณะ" และ "รหัสส่วนตัว"
  5. บันทึกการกำหนดค่า
  6. คุณอาจต้องทำดัชนีใหม่และ / หรือรีเฟรชแคช

เมื่อเพิ่มสินค้าลงในตะกร้าและดำเนินการชำระเงินในขั้นตอนสุดท้ายเลือกวิธีชำระเงิน Braintree จากนั้นหลังจากคลิกปุ่ม "สั่งซื้อ" คุณจะสังเกตเห็นคำขอ AJAX ต่อไปนี้:

  1. 2 ขอให้ Braintree API ตรวจสอบความถูกต้องของบัตรทำธุรกรรมและตอบกลับด้วยสถานะการทำธุรกรรม
  2. คำขอ API ของ Magento guest-carts/cartId/payment-informationโดยมีเนื้อหาตามที่อธิบายไว้ในเอกสาร API ของ Magento

หลังจากนั้นกระบวนการจะดำเนินต่อไปตามที่คาดไว้โดยเปลี่ยนเส้นทางไปยังหน้าความสำเร็จเมื่อคำขอล่าสุดตอบสนองใน JSON ที่มีคำสั่งซื้อ entity_id

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้เป็นการยืนยันว่าการโทรไปยังบริการภายนอก -Braintree ในตัวอย่างของเรานั้นดำเนินการโดยหน้าเช็คเอาต์ไม่ใช่โดย Magento ภายในดังนั้นเราจะต้องทำเช่นเดียวกันหากเราต้องพัฒนาหน้าเช็คเอาท์ / แอปของเราเอง

สำหรับการควบคุมสถานะการสั่งซื้อฉันขุดลึกลงไปและพบว่าการใช้วิธีการชำระเงินเช่น MiGS, Braintree หรือ PayPal ทำให้เกิดการสั่งซื้อที่มีสถานะprocessingมากกว่าปกติpendingฉันสงสัยว่านี่เป็นการกำหนดค่าวิธีการชำระเงินหรือผู้สังเกตการณ์ แต่ดูเหมือนว่าจะเป็นการกำหนดค่าที่นี่มีรายละเอียดเพิ่มเติม

คลาส: วีโอไอพี \ การขาย \ แบบจำลอง \ การสั่งซื้อ \ การชำระเงิน

วิธีการ: สถานที่ ()

มีเงื่อนไขที่ตรวจสอบว่าเป็นInitializationเป็นสิ่งจำเป็นสำหรับวิธีการที่if ($methodInstance->isInitializeNeeded())ถ้าเป็นกรณีที่วิธีการที่initialize()จะดำเนินการที่คุณกำหนดและช่วยให้คุณระบุทั้งสองและstatestatus


คุณสามารถแบ่งปันน้ำหนักบรรทุกสำหรับ api ข้อมูลการชำระเงิน
blakcaps

1
{ "cartid": "a98697cba964d6ba0d3b64d78a31df33", "billingAddress": { "countryID": "EG", "regionId" โมฆะ "ภูมิภาค": "", "ถนน" [ "ถนน", ""] " บริษัท ":" บริษัท ของฉัน "," โทรศัพท์ ":" 12346987 "," รหัสไปรษณีย์ ":" 12345 "," เมือง ":" เมือง "," ชื่อ ":" f ชื่อ "," นามสกุล ":" l ชื่อ "," saveInAddressBook "ที่: null}" PAYMENTMETHOD ": {" วิธีการ ":" เบรนทรี " "additional_data": { "payment_method_nonce": "ef27df81-7c29-4a74-9049-15de33f1f49f"}} "อีเมล":" อีเมล @ ตัวอย่าง .com "}
Mahmoud Tantawy

ขอบคุณสำหรับน้ำหนักบรรทุก ฉันสงสัยว่าจะสร้าง "payment_method_nonce" ได้อย่างไร
blakcaps

ไม่รู้จริงๆ แต่ฉันคิดว่าโดยการตรวจสอบคำขอไปมาว่าสามารถพบ nonce ได้ง่ายถ้าเป็นจริง
Mahmoud Tantawy

1
Braintree ดูเหมือนง่ายต่อการรวมคิด REST API แต่จะรวมเกตเวย์การชำระเงินการเปลี่ยนเส้นทางภายนอกเช่น Papal หรือ Ingenico ได้อย่างไร
Franck Garnier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.