عند الحديث عن Wechat Pay ، أعتقد أن الجميع على دراية به ، ولكن عندما نريد إكمال هذا البرنامج ، كيف ينبغي على مبرمجينا كتابة وإعداده؟ لا تقلق ، لقد جلب لك محرر القناة التكنولوجية الجديدة للتكنولوجيا مثالاً ، دعنا نذهب إلى المقالة التالية لمعرفة المزيد!
مقدمة: الموزع ، كيفية سحب النقود من WeChat Business؟
ادفع مباشرة مع WeChat.
التنفيذ على النحو التالي:
تكوين دفع WeChat
/*wechat payment*/'pay_weixin' => array ('appid' => 'xxxx' ، 'appsecret' => 'xxxxxx ،' mchid '=>' 1283301801 '، // merchant' key '=>' zhudianbaodiandiandiandianba0527 '، // merchant. => 'conf/cert/apiclient_cert.pem' ، // شهادة التاجر apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem' ، // شهادة التاجر apiclient_key.pem)arraytoxml
؟ foreach ($ arr as $ key => $ val) {if (is_numeric ($ val)) {$ xml. = "<". $ key. " } else $ xml. = "<". $ key. "> <! } $ xml. = "</xml>" ؛ إرجاع $ xml ؛}استخدم الشهادة لإرسال XML إلى عنوان URL للواجهة المقابلة في المنشور
/*** الوظيفة: استخدم شهادة لإرسال XML إلى عنوان URL للواجهة المقابلة*/وظيفة postxmlsslcurl ($ xml ، $ url ، $ second ، $ cert ، $ key) {$ ch = curl_init () ؛ // timeout time curl_setopt ($ ch ، curlopt_timeout ، $ second؟ $ second: $ this-> timeout) ؛ // قم بتعيين الوكيل هنا ، إذا كان هناك واحد // curl_setopt ($ ch ، curlopt_proxy ، '8.8.8.8') ؛ // curl_setopt ($ ch ، curlopt_proxyport ، 8080) ؛ curl_setopt ($ ch ، curlopt_url ، $ url) ؛ curl_setopt ($ ch ، curlopt_ssl_verifypeer ، false) ؛ curl_setopt ($ ch ، curlopt_ssl_verifyhost ، false) ؛ // set header curl_setopt ($ ch ، curlopt_header ، false) ؛ // قم بتعيين النتيجة كسلسلة وإخراج إلى الشاشة curl_setopt ($ ch ، curlopt_returntransfer ، true) ؛ // قم بتعيين الشهادة // استخدم الشهادة: cert والمفتاح الذي ينتمي إلى ملفين .pem على التوالي // التنسيق الافتراضي هو pem ، يمكنك التعليق على curl_setopt ($ ch ، curlopt_sslcerttype ، 'pem') ؛ curl_setopt ($ ch ، curlopt_sslcert ، $ cert) ؛ // التنسيق الافتراضي هو PEM ، يمكنك التعليق على curl_setopt ($ ch ، curlopt_sslkeytype ، 'pem') ؛ curl_setopt ($ ch ، curlopt_sslkey ، $ key) ؛ // طريقة تقديم post curl_setopt ($ ch ، curlopt_post ، true) ؛ curl_setopt ($ ch ، curlopt_postfields ، $ xml) ؛ $ data = curl_exec ($ ch) ؛ // نتيجة الإرجاع إذا ($ data) {curl_close ($ ch) ؛ إرجاع $ this-> xmltoarray ($ data) ؛ } آخر {$ error = curl_errno ($ ch) ؛ صدى "خطأ حرج ، رمز الخطأ: $ خطأ". "<br>" ؛ curl_close ($ ch) ؛ العودة كاذبة }}الشركات تدفع الأفراد
. // الكشف المطلوبة المعلمات إذا ($ params ["" partner_trade_no "] == NULL) {// exit (" واجهة تطبيق REWND ، المعلمات المطلوبة شريكًا _trade_no! "." <br> ") ؛ } elseif ($ params ["OpenId"] == NULL) {exit ("واجهة تطبيق REWSTRALD ، المعلمات المطلوبة openId!". "<br>") ؛ } elseif ($ params ["" check_name "] == null) {// no_check: لا يوجد اسم حقيقي للتحقق من force_check: التحقق القوي من الاسم الحقيقي (سوف يفشل المستخدمون بدون مصادقة الاسم الحقيقية (لا يمكن للتحقق من ذلك ، لا يمكن نقل المحول). واجهة ، المعلمة المطلوبة check_name مفقودة! "." <br> ") ؛ } elseif (($ params ["check_name"] == 'force_check' أو $ params ["check_name"] == 'OPTION_CHECK') && ($ params ["re_user_name"] == null)) {// الاسم الحقيقي لمستخدم الدفع. الخروج ("واجهة تطبيق المبلغ ، المعلمة المطلوبة re_user_name مفقودة!". "<br>") ؛ } elseif ($ params ["extre"] == null) {exit ("واجهة تطبيق المبلغ ، فإن مبلغ المعلمة المطلوب مفقود!". "<br>") ؛ } elseif ($ params ["desc"] == null) {exit ("واجهة تطبيق المبلغ ، المعلمة المطلوبة desc!". "<br>") ؛ } $ params ["mch_appid"] = $ this-> appid ؛ // معرف الحساب العام $ params ["mchid"] = $ this-> mchid ؛ // number $ $ params ["nonce_str"] = $ this-> createNoncestr () ؛ ؟ '192.127.1.1': $ _server ['remote_addr'] return $ this-> postxmlsslcurl ($ xml ، $ url ، false ، $ ascert_cert ، $ apiclient_key) ؛}دفع الأعمال
الوظيفة الخاصة _enterprisepay (رقم $ ، $ member_id ، $ المبلغ ، $ desc) {// get openId $ wxuser_id = m ('member')-> حيث (Array ('id' => $ member_id))-> getField ('wxuser_id') ؛ $ openId = m ('wxuser')-> حيث (Array ('id' => $ wxuser_id))-> getField ('OpenId') ؛ $ pay = c ('pay_weixin') ؛ استيراد ('@. Action.wxdevelop') ؛ $ Enterprise = new wxenterprise ($ pay ['appid'] ، $ pay ['appsecret'] ، $ pay ['mchid']) ؛ $ params = array ('partner_trade_no' => $ number ، 'openId' => $ openId ، 'check_name' => 'no_check' ، 'heat' => $ extrice ، // total 'desc' => $ desc ،) ؛ $ result = $ Enterprise-> paytouser ($ params ، $ pay ['key'] ، $ pay ['apiclient_cert'] ، $ pay ['apiclient_key']) ؛ Return $ result ؛}عمليات سحب موزع العملية
الوظيفة الخاصة _handle ($ truename ، سعر $) {// التعامل مع الموزع السحب $ sendlid = date ("ymdhis"). Strval (Rand (1000 ، 9999)) ؛ $ data = array ('senderid' => $ levenid ، 'store_id' => $ this-> store_id ، 'member_id' => $ this-> member_id ، 'truename' => $ truename ، 'price' => $ price ، 'addtime' => time ()) ؛ // لا تدقيق if ($ price> = c ('انسحاب_بونتش_ $ data ['الحالة'] = 1 ؛ if ($ this-> crablemodel-> add ($ data)) {$ result = $ this-> _ EnterPrisePay ($ transed ، $ this- regher_id ، $ price * 100 ، 'distribution ('. $ truEname. ') السحب') ؛ // بعد وجود خطأ في معلومات الدفع ، يجب مراجعته إذا ($ return ['return_code']! = 'success') {$ this-> croofmodel-> حيث (Array ('sendrid' => $ levenid))-> حفظ (Array ('need_check' => 1 ، 'status' => 0)) ؛ $ this-> issis ('Success' ، 2) ؛ } آخر {// تعيين رقم معاملة WeChat $ this-> clockmodel-> حيث (Array ('sendrid' => $ deldd))-> حفظ (Array ('payment_no' => $ result ['payment_no'])) ؛ . => time ()) ؛ M ('Twitter_Log')-> إضافة (بيانات $) ؛ // قلل اللجان المقابلة M ('Member')-> حيث (Array ('id' => $ this-> member_id))-> setinc ('money' ،-$ price) ؛ $ this-> issign ('Success' ، 1) ؛ // إرسال رسائل تغيير اللجنة استيراد ('@. Action.tmplmsg') ؛ $ tmplmsg = جديد tmplmsg () ؛ $ tmplmsg-> إرسال (tmplmsg :: price_change ، $ this-> member_id ، array ('token' => $ this-> token ، 'intro' => '"نقل السحب" ، "السعر" => $ السعر ،' Business '=> business)) ؛ }} آخر {$ this-> خطأ ('خطأ معلومات السحب النقدي!') ؛ }} // المراجعة مطلوبة else {$ this-> clowmodel-> add ($ data) ؛ $ this-> issis ('Success' ، 2) ؛ }}يوفر وظيفة المؤسسات للدفع للمستخدمين ، أو يدعم المؤسسات للدفع من خلال واجهة API ، أو تشغيل الدفع من خلال وظيفة WeChat Payment Merchant Platform.
نصائح لطيفة:
◆ دفع لنفس المستخدم الحقيقي ، الحد اليومي لمعاملة واحدة هو 2W/2W
◆ الدفع لنفس المستخدم غير الحقيقي ، مع معاملة واحدة وحد يومي واحد من 2000/2000
◆ إجمالي حد الدفع للتاجر في نفس اليوم هو 100 واط
◆ يتم دعم التطبيقات فقط التي كانت مرتبطة بالرقم التاجر ؛
◆ بالنسبة للمستخدمين المستهدفين للدفع ، يمكن للمستخدمين الذين تمت مصادقتهم من قبل WeChat Pay أن يوفروا وظيفة التحقق من أسمائهم الحقيقية. لا يمكن للمستخدمين الذين لم يتم المصادقة عليها بأسماء حقيقية التحقق من ذلك. يمكن للمؤسسات اختيار نوع التحقق بناءً على مستوى الأمان لأعمالها الخاصة ؛
◆ يجب أن يكون مبلغ الدفع أقل من أو يساوي المبلغ المتاح حاليًا للتجار ؛
◆ بالنسبة للسجلات المدفوعة ، يمكن للمؤسسات عرض البيانات المقابلة من خلال استعلام دفع المؤسسة.
وصول
ستدخل صناديق الدفع تغيير المستخدم المستهدف (WeChat-I-Wallet-Change). ستقوم WeChat Pay بإخطار التغيير في الحساب ، وسيتم عرض تفاصيل الدخل والنفقات.
نصائح لطيفة:
بالنسبة لإصدار العميل التاريخي لحساب التغيير ، ستدخل الأموال حساب المظروف الأحمر للمستخدم ، وسوف تقوم WeChat Pay بإخطار المستخدمين دون أي رسائل ، ويمكن للمؤسسات اختيار الوصول إلى المستخدمين بأنفسهم.
ارتباط الواجهة: https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers
هل شهادة مطلوبة
مطلوب شهادة ثنائية الاتجاه لطلب.
مثال على البيانات:
<xml> <mch_appid> wxe062425f740c30d8 </mch_appid> <mchid> 10000098 </mchid> <nonce_str> 3pg2j4iltkch16cq2502si8znmt M67VS </nonce_str> <bart_trade_no> 100000982014120919616 </barent_trade_no> <POPHID> OHO4GT7WVPXIT1A9GJFAMYMIZ y1s </pophiD> <check_name> Option_Check </check_name> <re_user_name> Zhang San </re_user_name> <sea> 100 </main> <scc> Happy عطلة! </sicc> <spbill_create_ip> 10.2.3.10 </spbill_create_ip> <sign> c97bdbacf37622775366f38b629f45e3 </sign> </sml>
مثال ناجح:
<xml> <return_code> <! BD989]]> </mch_appid> <mchid> <! jpcxzxlx0q]]> </nonce_str> <dred_code> <! 41]]> </partner_trade_no> <payment_no> <! 15:26:59]]> </payment_time> </xml>
مثال على الخطأ:
<xml> <return_code> <! لاحقًا.]]> </return_msg> <dred_code> <!
لمزيد من المعلومات حول المحتوى المتعلق بـ PHP ، يرجى مراجعة موضوعات هذا الموقع: "ملخص لمهارات تطوير PHP WeChat" ، "ملخص ترميز PHP وتنقل تقنيات التشغيل" ، "ملخص لبرمجة شبكة PHP" ، "مقدمة DABASE TUPARY". التقنيات "
آمل أن يكون التفسير التفصيلي لطريقة تطبيق حساب WeChat Enterprise في PHP الموضح في هذه المقالة مفيدًا للجميع لتعلم برمجة PHP. آمل أن يستمر الجميع في دعم قناة التكنولوجيا الجديدة الخاطئة!