nezha-เอกสาร
ชื่อ | เกตเวย์ | การดำเนินการสนับสนุน | รองรับการโทรกลับ | หมายเหตุ |
---|---|---|---|---|
alipay_app | การชำระเงินผ่านแอพ Alipay | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย | |
alipay_qr | Alipay สแกนรหัสชำระเงิน | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย | |
alipay_wap | การชำระเงินผ่านเว็บไซต์ Alipay บนมือถือ | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย | |
alipay_web | การชำระเงินผ่านเว็บไซต์ Alipay PC | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย | |
วีแชท_แอป | การชำระเงินผ่านแอพ WeChat | การชำระเงิน/สอบถามการชำระเงิน/ขอคืนเงิน/สอบถามเรื่องการคืนเงิน | แจ้งการชำระเงิน/แจ้งการคืนเงิน | |
wechat_h5 | การชำระเงิน WeChat H5 | การชำระเงิน/สอบถามการชำระเงิน/ขอคืนเงิน/สอบถามเรื่องการคืนเงิน | แจ้งการชำระเงิน/แจ้งการคืนเงิน | ฟังก์ชั่นการดึงลิงค์การชำระเงินในตัว |
wechat_mina | การชำระเงินโปรแกรม WeChat Mini | การชำระเงิน/สอบถามการชำระเงิน/ขอคืนเงิน/สอบถามเรื่องการคืนเงิน | แจ้งการชำระเงิน/แจ้งการคืนเงิน | |
wechat_official | การชำระเงินบัญชีอย่างเป็นทางการของ WeChat | การชำระเงิน/สอบถามการชำระเงิน/ขอคืนเงิน/สอบถามเรื่องการคืนเงิน | แจ้งการชำระเงิน/แจ้งการคืนเงิน | |
wechat_qr | การชำระเงินสแกนรหัส WeChat | การชำระเงิน/สอบถามการชำระเงิน/ขอคืนเงิน/สอบถามเรื่องการคืนเงิน | แจ้งการชำระเงิน/แจ้งการคืนเงิน | |
union_web | การชำระเงินผ่านเว็บ UnionPay | สอบถามการชำระเงิน/ชำระเงิน | แจ้งการชำระเงิน | รุ่นเก่ากว่า |
union_app | การชำระเงินผ่านเว็บ UnionPay | จ่าย | แจ้งการชำระเงิน | รุ่นเก่ากว่า |
paypal_express_checkout | การชำระเงินด่วนของ PayPal | สอบถามการชำระเงิน/ชำระเงิน | แจ้งการชำระเงิน | ไม่เสถียร |
pingan_wechat_h5 | การชำระเงินผ่าน WeChat H5 ของธนาคารปิงอัน | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย | |
wechatoversea_official | การชำระเงินผ่านบัญชีสาธารณะข้ามพรมแดน WeChat | การชำระเงิน/สอบถามการชำระเงิน/การคืนเงิน | จ่าย |
เมื่อเชื่อมต่อกับการชำระเงินของบุคคลที่สาม โดยเฉพาะอย่างยิ่งเมื่อเชื่อมต่อกับการชำระเงินของบุคคลที่สามหลายรายการ คุณจะต้องอ่านเอกสารของบุคคลที่สาม และใช้เวลาอย่างมากในการรวบรวมและแก้ไขพารามิเตอร์ ตัวอย่างเช่น การโทรหาบุคคลที่สามเพื่อสั่งซื้อและ สร้างการชำระเงิน หากคุณต้องการเชื่อมต่อกับ WeChat และ Alipay ในเวลาเดียวกัน คุณต้องรวบรวมเอกสารซึ่งอาจจินตนาการได้ว่ายุ่งยากมาก (จริงๆ แล้ว ไม่เป็นไร... hhh...)
ส่วนประกอบนี้มีสามส่วนสำหรับการสื่อสารกับบุคคลที่สาม:
แต่ละส่วนจะถูกแบ่งออกเป็นการกระทำที่แตกต่างกัน แต่ละการกระทำจะถูกผูกไว้กับแบบฟอร์มคงที่ (แบบฟอร์ม) และเนื้อหาของแต่ละแบบฟอร์มได้รับการแก้ไข
ตัวอย่างเช่น เมื่อโทรหาบุคคลที่สามเพื่อสั่งซื้อและสร้างการชำระเงิน (ChargeRequest) แบบฟอร์มที่เขาใช้คือ ChargeRequestForm
หลังจากกรอกแบบฟอร์มและส่งผ่านส่วนประกอบแล้ว ส่วนประกอบจะสามารถประมวลผลพารามิเตอร์และเรียกบุคคลที่สามได้ - การชำระเงินปาร์ตี้
ด้วยวิธีนี้ คุณเพียงแค่ต้องเข้าใจเนื้อหาแบบฟอร์มของส่วนประกอบเพื่อเชื่อมต่อกับการชำระเงินของบุคคลที่สามหลายครั้งเท่านั้น (ไม่มีอยู่จริง)
ที่นี่เราใช้การชำระเงินผ่านเว็บไซต์ Alipay PC เป็นตัวอย่าง หากคุณต้องการใช้เกตเวย์การชำระเงินอื่น คุณจะต้องแก้ไข $gateway
ที่ส่งเข้ามาเมื่อสร้างอินสแตน Cashier
โปรดทราบว่าหน่วยสกุลเงินหลักที่ใช้โดยส่วนประกอบคือเซนต์
<?php
use Runner NezhaCashier Cashier ;
// 按格式组装好配置
$ config = [
' app_id ' => ' xxxx ' ,
' app_private_key ' => ' xxxxx ' ,
' alipay_public_key ' => ' xxxxx ' ,
];
// 创建实例, 传入要使用的 Gateway
$ cashier = new Cashier ( ' alipay_web ' , $ config );
สร้างการชำระเงิน
<?php
// 组装 ChargeRequestForm
$ data = [
' order_id ' => ' 151627101400000071 ' ,
' subject ' => ' testing ' ,
' amount ' => 1 ,
' currency ' => ' CNY ' ,
' description ' => ' testing description ' ,
' return_url ' => ' https://www.baidu.com ' ,
' expired_at ' => ' 2018-01-23 19:00:00 ' ,
];
$ form = $ cashier -> charge ( $ data );
// 以 laravel 为例
return redirect ( $ form -> get ( ' charge_url ' ));
ตรวจสอบการชำระเงิน
<?php
$ form = $ cashier -> query ([
' order_id ' => ' 151627101400000071 ' ,
]);
var_dump ( ' paid ' === $ form -> get ( ' status ' ));
รับการแจ้งเตือน
<?php
$ form = $ cashier -> notify ( ' charge ' );
var_dump ( ' paid ' === $ form -> get ( ' status ' ));
var_dump ( $ form -> get ( ' trade_sn ' )); // 取得第三方交易号
คืนเงิน
<?php
$ form = $ cashier -> refund ([
' order_id ' => ' 151627101400000071 ' ,
' refund_id ' => ' 3151627101400000071 ' ,
' total_amount ' => 1 ,
' refund_amount ' => 1 ,
]);
ชื่อฟิลด์ | จำเป็นไหม | คำอธิบายฟิลด์ | หมายเหตุ |
---|---|---|---|
สั่งซื้อ_id | ใช่ | หมายเลขคำสั่งซื้อ | |
เรื่อง | ใช่ | ชื่อคำสั่งซื้อ | |
จำนวน | ใช่ | จำนวนสั่งซื้อ | โปรดทราบว่าช่องทางการชำระเงินบางช่องทางมีวงเงินสูงสุด |
สกุลเงิน | ใช่ | สกุลเงินสั่งซื้อ | ใส่ใจกับช่องทางการชำระเงิน |
คำอธิบาย | ใช่ | คำอธิบายการสั่งซื้อ | ช่องทางการชำระเงินจะมีการจำกัดความยาวที่แตกต่างกัน |
user_ip | เลขที่ | ไอพีผู้ใช้ | |
return_url | เลขที่ | ที่อยู่โทรกลับ | ต้องกรอกช่องทางการชำระเงินแบบเว็บ |
show_url | เลขที่ | ที่อยู่ที่แสดง | |
ร่างกาย | เลขที่ | รายละเอียดการสั่งซื้อ | ฉันควรลบพารามิเตอร์นี้ |
หมดอายุ_at | เลขที่ | เวลาหมดอายุ | การประทับเวลายูนิกซ์ |
สร้างขึ้น_at | เลขที่ | เวลาสร้าง | การประทับเวลา Unix คุณไม่อยากจะเชื่อเลยว่าคุณต้องการสิ่งนี้ด้วยซ้ำ ?? |
ยังมีอย่างอื่นมาเพิ่ม...
ถาม : อะไรคือข้อดีเมื่อเทียบกับ SDK อื่นๆ
ตอบ : ไม่ว่า SDK จะสวยงามหรือใช้งานง่ายเพียงใด ส่วนใหญ่ต้องการให้คุณส่งพารามิเตอร์ตามชื่อพารามิเตอร์ของบุคคลที่สาม จากนั้นคุณจะต้องอ่านเอกสารประกอบและดำเนินการประมวลผลมากมายใน รหัส สิ่งที่ฉันต้องการคือหลังจากดึงคำสั่งซื้อจากฐานข้อมูลแล้วสามารถดำเนินการได้ครั้งเดียวเพื่อเข้าถึงการชำระเงินหลายรายการ
ถาม : จำเป็นต้องอ่านเอกสารการชำระเงินจากบุคคลที่สามหรือไม่?
ตอบ : ไม่ ฉันขอแนะนำให้คุณยังคงต้องดูมัน และการชำระเงินบางส่วนในส่วนประกอบ (เช่น บัญชีอย่างเป็นทางการของ WeChat) จำเป็นต้องผ่านพารามิเตอร์พิเศษบางอย่าง ส่วนประกอบนี้จะช่วยคุณแก้ปัญหาการโทรที่น่ารำคาญเท่านั้น
เอ็มไอที