WeChat Red Envelopesの使用はすでに非常に広いです。この記事では、WeChatで赤い封筒を送信する例を紹介します。認定されたパブリックアカウントが必要であり、WeChatの支払いとMerchantプラットフォームを開き、Cash Red Envelope Permissionsを有効にすることができます。
https://pay.weixin.qq.comマーチャントログインアドレス。マーケティングセンターでキャッシュレッドパケットを表示することを選択してください
https://pay.weixin.qc.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1公式ウェブサイトドキュメント現金赤い封筒の説明
最初にいくつかの簡単なテストを見てみましょう。前提は、最初にマーチャントプラットフォームで充電する必要があることです。前払いはサポートされていません。この記事では、WeChat Cash Red Envelope Interfaceの呼び出しと実装のみをまとめたものです。具体的には、あなた自身のビジネスに基づいてこのインターフェイスを呼び出す方法を実装する必要があります。
https://pay.weixin.qqc.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3ドキュメントには通常の赤い封筒のすべての説明があります。通話には、Merchantプラットフォームからの証明書が必要です。
必要なパラメーターもリストされています。あなたのニーズに応じて決定します。
1.Javaは赤い封筒オブジェクトをカプセル化します
/*** Red Envelope Object* @Author Xiao Shuai Shuai* @Date 2016-8-17 11:12:19 AM* @Open Source http://my.oschina.net/xshuai*/public class redpackはシリアル化可能{プライベート文字列標識; //属性に基づいて生成された検証private string mch_billno; //注文番号プライベート文字列mch_id; //マーチャント番号プライベート文字列wxappid; // wechat appid private string send_name; // merchant name private string re_openid; // user openid private string total_amount; //支払い金額private string totol_num; //赤い封筒受信者の数キャッシュレッドエンベロープの数は1つのプライベート文字列のみです;文字列nonce_str; //ランダム文字列//設定省略} 2。必要なツールクラスCreateBillnoは、商人の注文番号を生成することです。公式のウェブサイトのドキュメントの要件は次のとおりです。
/*** Red Envelope Tool Class* @Author Xiao Shuai Shuai* @Date 2016-8-17 11:12:19 AM* @Open Source China http://my.oschina.net/xshuai*/public class redpackutil {/*** Merchant番号* @param mch_id mertherd* @parmam odmid* @parmm静的文字列createbillno(){//構成:mch_id+yyyymmdd+1日以内に繰り返すことができない10桁の数字// 1日以内に繰り返すことができない10桁の数字は次のとおりです。 SimpleDateFormat df = new SimpledateFormat( "yyyymmdd"); string nowtime = df.format(dt); int length = 10; wxconstants.mch_id + nowtime + getRandomNum(length)を返します。 } / ** *特定の数字で乱数を生成 * @param length * @return * / public static string getRandomNum(int length){string val = ""; RANDOM RANDOM = new Random(); for(int i = 0; i <length; i ++){val+= string.valueof(random.nextint(10)); } valを返します。 }} 3.以前の作業は非常に単純で、証明書と商人番号が必要です。また、マーチャントプラットフォームに金額がある場合は、Cash Red Envelopeインターフェイスをテストできます。
Redpack Pack = new Redpack(null //初めての時刻、Redpackutil.createbillno()//商人の注文番号、「あなた自身の商人番号」、「公式アカウントのappid」、「名前」、「ユーザーのOpenID」、「送信される」、「送信金額ユニットは100、たとえば、rmb 1」、「 "on" "on" "" on " name "、" note "、" Random String ");
テストのサインを除いて、それは空です。他のすべては満たすことができます。これで、サインシグネチャを生成します。パックオブジェクトのパラメーターに従って記号を生成します。
特定の署名アルゴリズムhttps://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3公式ウェブサイトで提供
https://pay.weixin.qc.com/wiki/tools/signverify/このテストページで比較して、暗号化が一貫しているかどうかを確認できます。
string signs = signature.getSign(pack); //生成された符号セットはパックobject.setsign(signs); //オブジェクトをXML形式に変換しますwechatはxml形式の文字列xml = xmlutil.objtoxml(pack、redpack.class、 "xml");
4.赤いパケットを送信します
RedPackService service = new RedPacService();文字列result = service.redpackorder(xml); //リクエストによって返されるデータは成功していますか?
パブリッククラスRedPackService {/*** Red Packet Interfaceアドレス*/プライベート最終的な静的文字列REDP_ORDER_PATH = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; / *** RED PACKET* execly* @param paramxml* @return*/ public static string redpackorder(string paramxml){try {wxbaseervice service = new wxbasservice(redp_order_path); return service.sendpost(paramxml); } catch(Exception E){log.Error(e.toString()); } nullを返します。 }} / ** * httpsを介してXMLデータを投稿するAPIに移動しますsendPost(String URL、String PostDataxml)は、iOException、keystoreException、unrecoverableKeyException、nosuchalgorithmexception、keymanagementexception {if(!hasinit){init(); }文字列結果= null; httppost httppost = new httppost(url); // XSTREAMの二重アンダースコアのバグ// XSTREAM XSTREAMFORREQUESTPOSTDATA = new XStream(new Domdriver( "UTF-8"、new XMLFriendlyNameCoder( "-_"、 "_"))); //データオブジェクトを変換してAPIにXML形式に送信してAPIに投稿しますutil.log( "api、postの過去のデータは:"); util.log(postdataxml); // UTF-8エンコーディングが使用されることを示す必要があります。そうしないと、APIサーバーXMLの中国テキストを正常に識別できません。 httppost.addheader( "content-type"、 "text/xml"); httppost.setEntity(emptity); // requestorの構成httppost.setconfig(requestconfig)を設定します。 util.log( "requestの実行" + httppost.getRequestLine()); try {httpresponse応答= httpclient.execute(httppost); httpentity entity = respons.getEntity(); result = entityutils.toString(entity、 "utf-8"); } catch(connectionPoolTimeOutException e){log.e( "http get connectionpooltimeoutexception(待機時間)"); } catch(connecttimeoutexception e){log.e( "http get show connecttimeoutexception"); } catch(sockettimeoutexception e){log.e( "http get throw sockettimeoutexception"); } catch(例外e){log.e( "http get shrow例外"); }最後に{httppost.abort(); } return result; } 5.返されたXMLは成功しました。それは1元を充電しただけなので、数日前にテストされて送信されました。したがって、次の情報が返されます。
<xml> <return_code> <![cdata [success]]> </return_code> <return_msg> <![cdata [アカウント残高は不十分です。マーチャントプラットフォームで充電してみてください繰り返し]> </return_msg> <result_code> <![cdata [fail]]> </result_code> <err_code> <![cdata [notenough]]> </err_code> <err_code_des> <![cdata [アカウントバランスは不十分です。 _billno> <![cdata [1371729102201629220149762756]]> </mch_billno> <mch_id> <! appid]]]> </wxAppid> <re_openid> <![cdata [od5qqw8e_lbiaw9szzud-2xhtmvxこれはユーザーのopenid]]]]]]]]]]]]]
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。