1. เอกสารอย่างเป็นทางการของ WeChat กระบวนการพัฒนาการชำระเงิน WeChat (การชำระเงินในบัญชีสาธารณะ)
ก่อนอื่นให้ไปที่ส่วนขั้นตอนการพัฒนาของเอกสารอย่างเป็นทางการของ WeChat Pay เพื่อตรวจสอบการตั้งค่าที่จำเป็น
[อัพโหลดรูปภาพล้มเหลว ... (Image-5EB825-1531014079742)]]]
เนื่องจากการชำระเงิน WECHAT ต้องได้รับอนุญาตสูงบัญชีบริการที่ผ่านการรับรองเท่านั้นสามารถได้รับอนุญาตให้ใช้อินเทอร์เฟซการชำระเงิน WECHAT เป็นเรื่องยากสำหรับเราที่จะสมัครเป็นส่วนตัวดังนั้นเราต้องยืมบัญชีจากเพื่อนคนอื่น ๆ
มาที่ส่วนกระบวนการทางธุรกิจของเอกสารและตรวจสอบกระบวนการชำระเงิน WeChat (ฉันคิดว่าสิ่งนี้ยังคงต้องใช้ความเข้าใจและการดูอย่างระมัดระวังซึ่งจะช่วยให้คุณเข้าใจกระบวนการพัฒนา WeChat)
จากนั้นการเข้าถึงอินเทอร์เฟซการชำระเงิน WeChat จะต้องส่งพารามิเตอร์จำนวนมาก ดูโสดแบบครบวงจร
[อัพโหลดรูปภาพล้มเหลว ... (Image-DF7051-1531014079742)]]
หลังจากตรวจสอบเอกสารการชำระเงิน WeChat อย่างเป็นทางการด้านบนฉันเชื่อว่าคุณควรมีความเข้าใจบางอย่างเกี่ยวกับสิ่งเหล่านี้ แต่ฉันก็ยังคิดว่าการพัฒนาการชำระเงิน WeChat นั้นลำบากมากดังนั้นเราจะใช้ SDK ของบุคคลที่สามเพื่อพัฒนา
2. WeChat จ่ายการพัฒนา SDK ของบุคคลที่สาม (การชำระเงินในบัญชีสาธารณะ)
นี่คือการชำระเงินสำหรับบัญชีอย่างเป็นทางการ เราใช้ Best-Pay-SDK SDK นี้ใช้ PayRequest และ PayResponse เพื่อห่อหุ้มอินเตอร์เฟสคำขอและผลลัพธ์ที่สอดคล้องกัน พารามิเตอร์หลักที่ต้องส่งผ่านแบบไดนามิกคือ OpenID (ตัวระบุที่ไม่ซ้ำกับผู้ใช้) และ orderID ถัดไปมาดูวิธีการพัฒนา
1. การกำหนดค่า
// WeChat การกำหนดค่าบัญชีสาธารณะ WXPAYH5CONFIG WXPAYH5CONFIG = ใหม่ WXPAYH5CONFIG (); wxpayh5config.setAppid ("xxxxx"); wxpayh5config.setAppSecret ("xxxxxxx"); wxpayh5config.setmchid ("xxxxxx"); wxpayh5config.setmchkey ("xxxxxxx"); wxpayh5config.setNotifyUrl ("http: // xxxxx"); // pay class, ทุกวิธีอยู่ในชั้นเรียนนี้ BestPayServiceImpl BestPayService = ใหม่ BestPayServiceImpl (); bestpayservice.setwxpayh5config (wxpayh5config);2. เริ่มต้นการชำระเงิน
PayRequest PayRequest = new PayRequest (); payrequest.setpaytypeenum (bestpaytypeenum.wxpay_h5); PayRequest.SetOrderId ("123456"); PayRequest.SetOrderName ("คำสั่งชำระเงินบัญชีสาธารณะ WeChat"); PayRequest.SetOrderAmount (0.01); payrequest.setopenid ("openId_xxxxxx"); bestpayservice.pay (payrequest);3. การโทรกลับแบบอะซิงโครนัส
bestPayService.asyncNotify();
นี่คือสิ่งที่ SDK นี้บอกว่ารหัส 10 บรรทัดเพื่อแก้ไขการชำระเงิน WeChat
หลังจากการชำระเงินเสร็จสิ้น WeChat จะส่งคืนผลการชำระเงินให้เราเป็นข้อมูลการชำระเงิน XML เราจำเป็นต้องส่งข้อมูลนี้ไปยัง URL การแจ้งเตือนแบบอะซิงโครนัส (NOTIFY_URL) เพื่อให้การตรวจสอบผลการชำระเงินเสร็จสมบูรณ์ (ตรวจสอบลายเซ็นตรวจสอบสถานะการชำระเงิน) ทั้งสองขั้นตอนของ SDK ทำเพื่อเรา เพียงโทรหา bestpayservice.asyncNotify (NotifyData); หลังจากเสร็จสิ้นการตรวจสอบแล้วเราต้องส่งคืนข้อมูลไปยัง WeChat:
<xml> <turned_code> <! [cdata [success]]> </return_code> <return_msg> <!
บอก WeChat ว่าการตรวจสอบเสร็จสมบูรณ์และไม่ส่งคำขอใด ๆ ให้เราสำหรับการแจ้งเตือนแบบอะซิงโครนัส
ยังไม่ชัดเจนว่าจะรวมเข้ากับโครงการได้อย่างไร? มันไม่สำคัญนอกจากนี้ยังมีตัวอย่างตัวอย่างซึ่งอาจชัดเจนกว่า
3. การสาธิตวิ่ง
Demo URL คือ: https://github.com/pay-group/best-pay-demo
คอนโทรลเลอร์หลักของเราอยู่ที่นี่:
@controller @slf4jpublic คลาส Paycontroller {@autoWired ส่วนตัว BestPayServiceImpl BestPayService; /*** เริ่มต้นการชำระเงิน*/@getMapping (value = "/pay") Public ModelandView Pay (@requestparam ("OpenId") String OpenId, Map <String, Object> MAP) {คำขอ PayRequest = ใหม่ PayRequest (); สุ่มสุ่ม = ใหม่สุ่ม (); // จ่ายพารามิเตอร์การร้องขอ PAREMETER.SESTPAYTYPEENOM (BestPayTyPeenum.WXPAY_H5); request.setOrderId (string.valueof (random.nextint (1000000000))); request.setOrderAmount (0.01); request.setOrderName ("การชำระเงินที่ดีที่สุด SDK"); request.setOpenid (openID); log.info ("【เริ่มต้นการชำระเงิน】คำขอ = {}", jsonutil.tojson (คำขอ)); PayResponse PayResponse = BestPayService.Pay (คำขอ); log.info ("【เริ่มต้นการชำระเงิน】 response = {}", jsonutil.tojson (payresponse)); map.put ("payresponse", payresponse); ส่งคืน ModelandView ใหม่ ("Pay/Create", Map); }/*** การโทรกลับแบบอะซิงโครนัส*/@postmapping (value = "/notify") โมเดลสาธารณะและการแจ้งเตือน (@requestbody String notifyData) โยนข้อยกเว้น {log.info ("【 async callback 】คำขอ = {}", notifyData); การตอบสนอง PayResponse = BestPayService.asyncNotify (NotifyData); log.info ("【 async callback 】 response = {}", jsonutil.tojson (การตอบสนอง)); ส่งคืน ModelandView ใหม่ ("Pay/Success"); -คุณสามารถดาวน์โหลดได้ด้วยตัวเอง มาดูกันว่ามันทำงานอย่างไร
คำอธิบายโครงการ
ต้องเรียกใช้ในเวอร์ชัน JDK> 1.8
โครงการนี้ได้รับการพัฒนาโดยใช้ Springboot 1.5.1
โครงสร้างโครงการ
src/main/java/com/github/lly835├ดุ paydemoapplication.java ├── servletinitializer.java ├──config│── payconfig.java // การกำหนดค่าคีย์การชำระเงิน
ตัวอย่างการรัน
คุณต้องกำหนดค่าคีย์ก่อนที่จะทำงานดู payconfig.java
เรียกใช้คำสั่ง
git clone https://github.com/pay-group/best-pay-democd best-pay-demomvn clean packagejava -jar -jar เป้าหมาย/*. สงคราม
การเข้าถึงเบราว์เซอร์ http://127.0.0.1:8080/pay
สรุป
ข้างต้นเป็นกระบวนการทั้งหมดของการพัฒนาการชำระเงินของบัญชีสาธารณะ WeChat เวอร์ชัน Java ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา!