การใช้ซองจดหมายสีแดง WeChat นั้นกว้างมากแล้ว บทความนี้แนะนำตัวอย่างของการส่งซองจดหมายสีแดงบน WeChat คุณต้องมีบัญชีสาธารณะที่ผ่านการรับรองและคุณสามารถเปิดการชำระเงิน WeChat และแพลตฟอร์มการค้าและเปิดใช้งานการอนุญาตให้ใช้ซองจดหมายสีแดงเงินสด
https://pay.weixin.qq.com ที่อยู่ล็อกอินผู้ค้า เลือกที่จะดูแพ็คเก็ตเงินสดสีแดงในศูนย์การตลาด
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?Chapter=13_1 เอกสารเว็บไซต์อย่างเป็นทางการเอกสารคำอธิบายของซองจดหมายเงินสดสีแดง
มาดูการทดสอบง่ายๆก่อน หลักฐานคือคุณต้องชาร์จใหม่บนแพลตฟอร์มการค้าก่อน ไม่รองรับการชำระเงินล่วงหน้า บทความนี้สรุปการโทรและการใช้งานอินเตอร์เฟสซองจดหมายสีแดง WeChat Cash Red เท่านั้น โดยเฉพาะคุณต้องใช้วิธีการเรียกอินเทอร์เฟซนี้ตามธุรกิจของคุณเอง
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?Chapter=13_4&index=3 มีคำอธิบายทั้งหมดสำหรับ envelopes สีแดงธรรมดาในเอกสาร การโทรจะต้องมีใบรับรองจากแพลตฟอร์มการค้า
พารามิเตอร์ที่ต้องการจะอยู่ในรายการ ตัดสินใจตามความต้องการของคุณ
1.Java ห่อหุ้มวัตถุซองจดหมายสีแดง
/*** วัตถุซองจดหมายสีแดง* @author Xiao Shuai Shuai* @Date 2016-8-17 11:12:19 AM* @Open Source China http://my.oschina.net/xshuai*/ชั้นเรียนสาธารณะ // การตรวจสอบที่สร้างขึ้นตามแอตทริบิวต์สตริงส่วนตัว MCH_BILLNO; // หมายเลขสั่งซื้อสตริงส่วนตัว mch_id; // หมายเลขผู้ค้าสตริงส่วนตัว wxappid; // weChat appid สตริงส่วนตัว send_name; // ชื่อผู้ค้าสตริงส่วนตัว re_openid; // ผู้ใช้ OpenId Private String total_amount; // จำนวนเงินการชำระเงินสตริงส่วนตัวทั้งหมด total_num; // จำนวนของ revelope revelope encelope cash string/private strings String nonce_str; // randr String // set get omitated}
2. คลาสเครื่องมือที่ต้องการ CreateBillno คือการสร้างหมายเลขคำสั่งซื้อของผู้ค้า ข้อกำหนดเอกสารของเว็บไซต์อย่างเป็นทางการมีดังนี้:
/*** คลาสเครื่องมือซองจดหมายสีแดง* @author Xiao Shuai Shuai* @date 2016-8-17 11:12:19 am* @open แหล่งที่มาของจีน http://my.oschina.net/xshuai*/ชั้นเรียนสาธารณะ */สตริงคงที่สาธารณะ createBillno () {// องค์ประกอบ: MCH_ID+yyyymmdd+10 หลักที่ไม่สามารถทำซ้ำได้ภายในหนึ่งวัน // ตัวเลข 10 หลักที่ไม่สามารถทำซ้ำได้ภายในหนึ่งวันมีดังนี้: // เพราะผู้ใช้แต่ละคนจะถูกผูกไว้ SimpledateFormat df = new SimpledateFormat ("yyyymmdd"); String nowtime = df.format (dt); ความยาว int = 10; ส่งคืน wxConstants.mch_id + ตอนนี้ + getRandomNum (ความยาว); } / ** * สร้างตัวเลขสุ่มด้วยตัวเลขเฉพาะ * ความยาว @param * @return * / สตริงคงที่สาธารณะ getRandomNum (ความยาว int) {String val = ""; สุ่มสุ่ม = ใหม่สุ่ม (); สำหรับ (int i = 0; i <length; i ++) {val+= string.valueof (random.nextint (10)); } return val; - 3. งานก่อนหน้านี้ง่ายมากและต้องมีใบรับรองและหมายเลขผู้ค้า และหากแพลตฟอร์มการค้ามีจำนวนเงินคุณสามารถทดสอบอินเทอร์เฟซซองจดหมายสีแดงเงินสด
redpack pack = new redpack (null // ครั้งแรกที่ว่างเปล่า, redpackutil.createBillno () // หมายเลขคำสั่งซื้อของผู้ค้า, "หมายเลขผู้ค้าของคุณเอง", "appid ของบัญชีอย่างเป็นทางการ", "ชื่อ", "openid ของผู้ใช้ที่จะถูกส่ง", " ชื่อ "," note "," String แบบสุ่ม ");
ยกเว้นการลงชื่อเข้าใช้ในการทดสอบมันว่างเปล่า ทุกสิ่งทุกอย่างสามารถเติมเต็มได้ ตอนนี้เราสร้างลายเซ็น สร้างเครื่องหมายตามพารามิเตอร์ในวัตถุแพ็ค
อัลกอริทึมลายเซ็นเฉพาะ https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?Chapter=4_3 ที่อยู่ที่กำหนดโดยเว็บไซต์ทางการ
https://pay.weixin.qq.com/wiki/tools/signverify/ คุณสามารถเปรียบเทียบได้ในหน้าทดสอบนี้เพื่อดูว่าการเข้ารหัสนั้นสอดคล้องกันหรือไม่
เครื่องหมายสตริง = Signature.getSign (Pack); // เครื่องหมายที่สร้างขึ้นจะถูกบรรจุไว้ใน pack object.setsign (เครื่องหมาย); // แปลงวัตถุเป็นรูปแบบ xml weChat ต้องการสตริงรูปแบบ XML xml = xmlutil.objtoxml (แพ็ค, redpack.class, "xml"
4. ส่งแพ็คเก็ตสีแดง
บริการ RedpackService = new RedPacService (); String result = service.redPackOrder (XML); // ข้อมูลส่งคืนโดยคำขอสำเร็จหรือไม่?
Public Class RedpackService {/*** ที่อยู่อินเตอร์เฟสแพ็คเก็ตสีแดง*/สตริงคงสุดท้ายส่วนตัวสุดท้าย redp_order_path = "https://api.mch.weixin.qq.com/MMPAYMKTTRANSFERS/SENDREDPACK"; / *** แพ็คเก็ตสีแดง* ต้องใช้ใบรับรอง* @param paramxml* @return*/ สตริงคงที่สาธารณะ RedpackOrder (สตริง paramxml) {ลอง {wxBaseservice service = new WxBaseservice (redp_order_path); return service.sendpost (paramxml); } catch (exception e) {log.error (e.toString ()); } return null; }} / ** * ไปที่ API POST DATA XML ผ่าน HTTPS * * @Param url ที่อยู่ API * @param XMLOBJ XML DATA วัตถุที่จะส่ง * @return API ส่งคืนข้อมูลจริงของแพ็คเกจ * @throws ioException * @throws Keystorexception * @throws สตริง sendpost (rl string, string postdataxml) พ่น ioexception, keystoreexception, unrecoverablekeyexception, nosuchalgorithmexception, keymanagementexception {ถ้า (! hasinit) {init (); } สตริงผลลัพธ์ = null; httppost httppost = ใหม่ httppost (url); // แก้ข้อผิดพลาดของสองขีดกลางสำหรับ xstream // xstream xstreamforrequestpostdata = ใหม่ xstream (ใหม่ domdriver ("utf-8", ใหม่ xmlfriendlynamecoder ("-_", "_")); // แปลงวัตถุข้อมูลเพื่อส่งไปยัง API ไปยังโพสต์ข้อมูลรูปแบบ XML ไปยัง API // สตริง postdataxMl = xstreamforRequestPostData.toxml (XMLOBJ); util.log ("API, ข้อมูลที่ผ่านมาของโพสต์คือ:"); util.log (postdataxml); // จะต้องระบุว่าการเข้ารหัส UTF-8 นั้นใช้มิฉะนั้นข้อความภาษาจีนไปยัง API Server XML ไม่สามารถระบุความเข้มข้นของ Postentity ได้สำเร็จ = ใหม่ที่เข้มงวด (PostDataxML, "UTF-8"); httppost.addheader ("ประเภทเนื้อหา", "text/xml"); httppost.setEntity (โพสต์); // ตั้งค่าการกำหนดค่าของผู้ร้องขอ httppost.setconfig (requestconfig); util.log ("การดำเนินการตามคำขอ" + httppost.getRequestline ()); ลอง {httPresponse response = httpClient.execute (httppost); HTTPENTITY Entity = Response.GetEntity (); ผลลัพธ์ = entityUtils.toString (เอนทิตี, "UTF-8"); } catch (ConnectionPoolTimeOutException E) {log.e ("http รับการโยน connectionpooltimeoutexception (รอหมดเวลา)"); } catch (ConnectTimeOutException e) {log.e ("http รับ throw connecttimeoutexception"); } catch (sockettimeoutexception e) {log.e ("http รับ sockettimeoutexception"); } catch (exception e) {log.e ("http get get throw exception"); } ในที่สุด {httppost.abort (); } ผลตอบแทนผลลัพธ์; - 5. XML ที่ส่งคืนนั้นประสบความสำเร็จ เนื่องจากมีการชาร์จ 1 หยวนเพียง 1 หยวนจึงได้รับการทดสอบและส่งเมื่อไม่กี่วันที่ผ่านมา ดังนั้นข้อมูลต่อไปนี้จะถูกส่งคืน
<xml> <return_code> <! [cdata [ความสำเร็จ]]> </return_code> <return_msg> <! [cdata [ยอดเงินบัญชีไม่เพียงพอโปรดเติมเงินบนแพลตฟอร์มการค้าและลอง อีกครั้ง]> </return_msg> <result_code> <! [cdata [ล้มเหลว]]> </result_code> <err_code> <! [cdata [notenough]]> </err_code> <err_code_des> <! _billno> <! [cdata [1371729102201629220149762756]]> </mch_billno> <mch_id> <! appid]]> </wxappid> <re_openid> <! [cdata [OD5QQW8E_LBIAW9SZZUD-2XHTMVX นี่คือ OpenID ของผู้ใช้]]> </EPENID>
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น