1.
أولاً ، دعنا نذهب إلى قسم خطوات التطوير في الوثائق الرسمية لـ WeChat Pay للتحقق من الإعدادات المطلوبة.
[فشل تحميل الصورة ... (Image-5eb825-1531014079742)]
نظرًا لأن مدفوعات WeChat تتطلب أذونات عالية ، يمكن أن يكون لحسابات الخدمة المعتمدة فقط الإذن لاستخدام واجهة الدفع WeChat. من الصعب علينا التقدم بطلب للحصول عليها شخصيًا ، لذلك نحتاج إلى استعارة حساب من أصدقاء آخرين.
تعال إلى جزء من عملية الأعمال من المستند وتحقق من عملية دفع WeChat (أعتقد أن هذا لا يزال يتطلب فهمًا ومشاهدة دقيقًا للغاية ، مما سيساعدك على فهم عملية تطوير WeChat).
ثم ، يتطلب الوصول إلى واجهة دفع WeChat العديد من المعلمات. انظر الفردية الموحدة
[فشل تحميل الصورة ... (Image-DF7051-1531014079742)]
بعد التحقق من مستندات دفع WeChat الرسمية أعلاه ، أعتقد أنه يجب أن يكون لديك فهم معين لها ، لكنني ما زلت أعتقد أن تطوير مدفوعات WeChat مزعجة للغاية ، لذلك سنستخدم SDK من طرف ثالث لتطويره.
2. WeChat Pay Threes SDK Development (دفع الحساب العام)
هذا دفع للحساب الرسمي. نحن نستخدم أفضل الدفع-SDK. يستخدم SDK هذا PayRequest و PayResponse لتغليف واجهة الطلب والنتائج المقابلة. المعلمات الرئيسية التي تحتاج إلى تمرير ديناميكي مفتوحة (معرف المستخدم الفريد) و OrderID. بعد ذلك ، دعونا نلقي نظرة على كيفية التطور.
1. التكوين
// WeChat Public Account Payment Configuration WXPayH5Config WXPayH5Config = جديد WXPayH5Config () ؛ wxpayh5config.setappid ("xxxxx") ؛ wxpayh5config.setAppSecret ("xxxxxxx") ؛ wxpayh5config.setMchid ("xxxxxx") ؛ wxpayh5config.setmchkey ("xxxxxxx") ؛ wxpayh5config.setnotifyurl ("http: // xxxxx") ؛ // فئة الدفع ، جميع الأساليب في هذا الفئة BestPayServiceImpl BestPaysPayService = جديد 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 (إخطار) ؛ ، بعد الانتهاء من التحقق ، نحتاج إلى إرجاع جزء من البيانات إلى WeChat:
<xml> <return_code> <!
أخبر WeChat أنه تم الانتهاء من التحقق ولا يرسل لنا أي طلبات لإشعارات غير متزامنة.
هل لا يزال من غير الواضح كيفية الاندماج في المشروع؟ لا يهم ، هناك أيضًا مثال عرضي ، والذي يمكن أن يكون أكثر وضوحًا.
3. التجريبي
عنوان URL التجريبي هو: https://github.com/pay-group/best-pay-demo
وحدة التحكم الرئيسية لدينا هنا:
@controller @slf4jpublic class payController {autowired privatepaysPayServiceImpl BestPayService ؛ /*** بدء الدفع*/getMapping (value = "/pay") publicandview pay ( @requestparam ("openId") سلسلة OpenId ، خريطة <سلسلة ، كائن> خريطة) {payRequest request = new payRequest () ؛ عشوائي عشوائي = جديد عشوائي () ؛ // request request parameter request.setpaytypeenum (bestpaytypeenum.wxpay_h5) ؛ request.setOrderId (string.valueof (random.nextint (1000000000))) ؛ request.setorderamount (0.01) ؛ request.setorderName ("أفضل دفع SDK") ؛ request.setOpenId (OpenId) ؛ log.info ("【بدء الدفع】 request = {}" ، jsonutil.tojson (request)) ؛ payresponse payresponse = bestpayservice.pay (request) ؛ log.info ("【بدء الدفع】 استجابة = {}" ، jsonutil.tojson (payresponse)) ؛ map.put ("payresponse" ، payresponse) ؛ إرجاع New ModelAndView ("الدفع/إنشاء" ، خريطة) ؛ }/*** رد الاتصال غير المتزامن*/postmapping (value = "/etreify") modelandview الإخطار ( @requestbody string notifydata) يلقي استثناء {log.info (" PayResponse Response = BestPayService.AsyncNotify (AssifyData) ؛ log.info ("【Async Callback】 Response = {}" ، jsonutil.tojson (response)) ؛ إرجاع New ModelAndView ("الدفع/النجاح") ؛ }}يمكنك تنزيل هذا بنفسك. دعونا نرى كيف يعمل
وصف المشروع
تحتاج إلى التشغيل على إصدار 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 packagejava -jar target/*. war
الوصول إلى المتصفح http://127.0.0.1:8080/pay
لخص
ما سبق هو عملية تطوير الدفع الكاملة لإصدار Java من حساب WeChat العام الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فالرجاء ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب!