マイクロチャネルの有料返金

TP5マイクロチャネル・ワードは、コードにはあまり直接返金はいたしません。

$の設定){ $ refundNo = 'tuikuan' $のARR [ 'ID'] .'-」時間()ランド(1000,9999)。。。。$統一=配列(
























'AppIDの' => $ CONFIG [ 'のAppID']は
'mch_id' => $ CONFIG [ 'mch_id']、
'nonce_str' =>自己::
createNonceStr()、'total_fee' => $ ARR [ 'total_fee']単位に分割//注文金額
「refund_fee」=> $編曲:[ 「total_fee」]、// どのように多くのポイントバックに支払った返金額
「sign_type」=>「MD5」 、// 署名型のサポートHMAC -SHA256及びMD5は、デフォルトはMD5です
=> $ ARR [ 'にTRANSACTION_ID'] 'でTRANSACTION_ID'、//マイクロチャネルの注文の数
'out_trade_no' => $編曲:[ 'out_trade_no']、// 商人の注文番号
'out_refund_no' => $ refundNo、//商人のクレジットノートナンバー
'refund_desc' => 'の商品は完売'、//還付理由(オプション)
);
$統一[ 'ログイン'] :: =自己getSign(統一$、$ CONFIG [ 'キー'])。//获取签名
$のresponseXML =の$ this - > curlPost( 'https://api.mch.weixin.qq.com/secapi/pay/refund'、自己:: arrayToXml($統一));
$ unifiedOrder = simplexml_load_string($のresponseXML 'のSimpleXMLElement'、LIBXML_NOCDATA)。
ダンプ($統一)。
($ unifiedOrder)ダンプ。
もし($ unifiedOrder ===偽){
ダイス( '解析XMLエラー');
}
もし(!$ unifiedOrder-> RETURN_CODE = 'SUCCESS'){
ダイス($ unifiedOrder-> return_msg);
}
もし(!$ unifiedOrder-> RESULT_CODE = 'SUCCESS'){
ダイス($ unifiedOrder-> ERR_CODE);
}

($ unifiedOrder)をダンプ//;
//は、真のエコー。
trueを返します。
//は統一$を返します。
}
//随机字符串、不长于32位
パブリック静的関数createNonceStr($長= 16){
$文字の= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'。
$ strの= '
(; $ iは$長さを<; $ i = 0 $ iは++){ため
。$ STR = SUBSTR(strlenを$文字、mt_rand(0、($文字) - 1)、1)。
}
$ strのを返します。
}
//ログイン获取签名
パブリック静的関数getSign($ paramsは、$キー){
ksort($ paramsは、SORT_STRING)を、
$ unSignParaString =自己:: formatQueryParaMap($ paramsは、偽の);
$ signStr = strtoupper(MD5($ unSignParaString "&キー=" $キー)。。);
$ signStrを返します。
}
//生成签名
保護静的関数formatQueryParaMap($ paraMap、$ URLENCODE = FALSE){
$バフ= "";
ksort($ paraMap)。
foreachの($ paraMapとして$ K => $ V){
場合(ヌル= $のV && "ヌル" = $ V!){
場合($ URLENCODE){
$ V =でurlencode($ V)。
}
$バフ。= $ kを。"="。$のV。"&";
}
}
$ reqPar = '';
IF(STRLEN($バフ)> 0){
$ reqPar = SUBSTR($バフ、0、strlenを($バフ) - 1)。
}
$ reqParを返します。
}
//ポストカール提交退款
パブリック関数curlPost($ URL = ''、$ POSTDATA = ''、$オプション=配列()){
IF(IS_ARRAY($ POSTDATA)){
$ POSTDATA = http_build_query($ POSTDATA)。
}
$ CH = curl_init();
ますcurl_setopt($ chを、CURLOPT_URL、$のURL);
ますcurl_setopt($ chを、CURLOPT_RETURNTRANSFER、1);
ますcurl_setopt($ chを、CURLOPT_POST、1);
ますcurl_setopt($ chを、CURLOPT_POSTFIELDS、$ POSTDATA)。
ますcurl_setopt($ chを、CURLOPT_TIMEOUT、30); //设置cURLの允许执行的最长秒数
場合(!空($オプション)){
curl_setopt_array(CHの$、$オプション);
}
// HTTPS要求が証明書およびホスト検証ない
ますcurl_setopt(falseに$ CH、CURLOPT_SSL_VERIFYPEERを、);
ますcurl_setopt(falseに$ CH、CURLOPT_SSL_VERIFYHOST、);
//最初の方法、証明書及び鍵、それぞれ2つの.pemファイルに属する
//デフォルトの形式はPEMで、コメントすることができ
ますcurl_setopt($ CH、CURLOPT_SSLCERTTYPE、 'PEMを');
しますcurl_setopt($ CH、CURLOPT_SSLCERT、 "/ WWW / ...絶対パス/apiclient_cert.pem"); //絶対パス
//デフォルトの形式はPEMで、コメントすることができ
ますcurl_setopt($のCH、CURLOPT_SSLKEYTYPE、 'PEM');
しますcurl_setopt($のCH、CURLOPT_SSLKEY、 "/ WWWを/ ...絶対パストン/ apiclient_key.pem"); / /絶対パス
//第2の実施形態では、一つのファイル.PEMに二つのファイル
//ますcurl_setopt($ CH、CURLOPT_SSLCERT、GETCWD() '/ all.pem');
$データcurl_exec($ CHを)=;
IF(データ$){
curl_close($のCH);
$にデータを返します。
}他{
$エラー= curl_errno($のCH)。
":$エラーカール出错、错误码"エコー。「<BR>」。
curl_close($ chを);
falseを返します。
}
}
//生成XML文件
パブリック関数arrayToXml($ ARR){
$ XML = "<XML>"。
foreachの($ ARRとして$キー=> $ valの){
場合(IS_NUMERIC($ valの)){
$ xmlの。= "<"。$キー。">"。$ valを。"</"。$キー。">";
} {他
$ xmlの。= "<"。$キー。"> <![CDATAの["。$ valを。"]]> </"。$キー。">";
}
}
$のxmlの= "</ XML>"。
$ XMLを返します。
}

 マイクロチャネルの支払及び還付詳細表示リンクhttps://www.jianshu.com/p/0ceef29f2707/

おすすめ

転載: www.cnblogs.com/xinyixuan/p/11527761.html