この記事では、WECHATエンタープライズアカウントを持つ個人の支払いを実現するためのPHPの方法を示しています。 、詳細は次のとおりです。
はじめに:ディストリビューター、WeChatビジネスから現金を引き出す方法は?
WeChatで直接支払います。
実装は次のとおりです。
WeChat Payment Configuration
/*wechat paybed*/'pay_weixin' => array( 'appid' => 'xxxx'、 'appsecret' => 'xxxxxx、' mchid '=>' 1283301801 '、// merchant number' key '=>' zhudianbaodianbaudzhudianbaut 'apiclient' apiclient 'conf/cert/apiclient_cert.pem'、// merchant証明書apiclient_cert.pem 'apiclient_key' => 'conf/cert/apiclient_key.pem'、// merchant証明書apiclient_key.pem)
arraytoxml
/*** xmlへの配列*/function arraytoxml($ arr){$ xml = "<xml>"; foreach($ arr as $ key => $ val){if(is_numeric($ val)){$ xml。= "<"。$ key。 ">"。$ val。 "</"。$ key。 ">"; } else $ xml。= "<"。$ key。 "> <![cdata ["。$ val。 "]> </"。$ key。 ">"; } $ xml。= "</xml>"; $ xmlを返します;}証明書を使用して、XMLをポストの対応するインターフェイスURLに送信します
/***関数:証明書を使用して、対応するインターフェイスURLにXMLを送信します*/function postxmlsslcurl($ xml、$ url、$ second、$ cert、$ key){$ ch = curl_init(); // Timeout Time Curl_setopt($ ch、curlopt_timeout、$ second?$ second:$ this-> timeout); //ここにプロキシを設定します。 // 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); //ヘッダーcurl_setopt($ ch、curlopt_header、false)を設定します。 //結果を文字列として設定し、画面curl_setopt($ ch、curlopt_returntransfer、true)にcurl_setoptに設定します。 //証明書の設定curl_setopt($ ch、curlopt_sslcert、$ cert); //デフォルトの形式はPEMです。Curl_Setopt($ ch、curlopt_sslkeytype、 'pem')に注釈を付けることができます。 curl_setopt($ ch、curlopt_sslkey、$ key); //投稿送信方法curl_setopt($ ch、curlopt_post、true); curl_setopt($ ch、curlopt_postfields、$ xml); $ data = curl_exec($ ch); // return result if($ data){curl_close($ ch); return $ this-> xmltoarray($ data); } else {$ error = curl_errno($ ch);エコー「カールエラー、エラーコード:$エラー」。 "<br>"; curl_close($ ch); falseを返します。 }}企業は個人に支払います
//エンタープライズは、個々のパブリック関数Paytouser($ params、$ key、$ apcent_cert、$ apiclient_key){$ url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //必要なパラメーターの検出if($ params ["partner_trade_no"] == null){// exit( "refund application interface、必要なパラメーターpartner_trade_no!"。 "<br>"); } elseif($ params ["openid"] == null){exit( "fund application interface、必要なパラメーターopenid!" <br> "); } elseif($ params ["check_name"] == null){// no_check:no rearame vidification force_check:本名の強い検証(本物の名前認証のないユーザーは検証できず、転送は転送できません)option_check:本物の名前が検証されていないユーザーの譲渡は、expective expective of expectived expecting optionifient必要なパラメーターCHECK_NAMEがありません! "。" <br> "); } elseif(($ params ["check_name"] == 'force_check'または$ params ["check_name"] == 'option_check')&&($ params ["re_user_name"] == null){//支払いユーザーの本名。 exit( "払い戻しアプリケーションインターフェイス、必要なパラメーターre_user_nameが欠落しています!"。 "<br>"); } elseif($ params ["lument"] == null){exit( "払い戻しアプリケーションインターフェイス、必要なパラメーター額はありません!" <br> "); } elseif($ params ["desc"] == null){exit( "refund application interface、必要なパラメーターdesc!" "<br>"); } $ params ["mch_appid"] = $ this-> appid; // publicアカウントid $ $ params ["mchid"] = $ this-> mchid; // merchant number $ params ["nonce_str"] = $ this-> createNoncestr(); //ランダムな文字列$パラマ'192.127.1.1':$ _server ['remote_addr']; // get ip $ params ["sign"] = $ this-> getsign($ params、$ key); // signature $ xml = $ this-> arraytoxml($ params); return $ this-> postxmlsslcurl($ xml、$ url、false、$ apcent_cert、$ apiclient_key);}