php銀聯ビジネス公衆番号+サービスウィンドウ支払いを実現
以前、私たちは銀聯ビジネスのH 5支払いを勉強しましたが、今H 5支払いは微信支払いをサポートしていません.最後に、銀聯ビジネスの公衆番号+サービスウィンドウ支払いは支付宝支払い+微信支払い+銀聯支払いをサポートできることを発見しました.
一:インタフェースアドレス:
テストインタフェースアドレス:https://qr-test2.chinaums.com...
正式なインタフェースアドレス:https://qr.chinaums.com/netpa...
二:主なパラメータの説明:
インタフェースはgetパラメータを使用し、インタフェースパラメータをインタフェースアドレスに直接配置した後、このインタフェースはブラウザからインタフェースに直接ジャンプします.
1:instMid
業務タイプ、直接記入:YUEDANDEFAULT
2:merOrderId
商家注文番号
3:mid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の商家番号
4:msgSrc
WWW.TEST.COM
5:msgType(このパラメータが重要かどうかは、主に何を使って支払うかを区別します)
メッセージタイプ:微信支払い使用:WXPay.jsPay,支付宝支払使用:trade.jsPay,銀聯支払使用:qmf.jspayまたはqmf.webPay
6:orderDesc
オーダーの説明
7:requestTimestamp
メッセージ要求時間:yyyy-MM-dd HH:mm:ss、例えば2019-10-01 12:12:12:12
8:tid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の端末番号
9:totalAmount
支払い総額、単位は分
10:notifyUrl
支払結果通知先
11:returnUrl
Webページのジャンプアドレス
12:sign
署名は、上のパラメータをa-zの順に並べ替え、並べ替えが完了したら&文字で接続し、接続後にエスケープ文字が存在する場合はエスケープ文字を削除しmd 5暗号化して署名を取得します
三:銀聯ビジネスの公衆番号+サービスウィンドウの支払い例:
支払い終了後に返されるstatusパラメータの値:
四:返金の支払い
支払いがあれば返金がありますが、どうやって返金しますか?
1:返金インタフェース
テストインタフェース:https://qr-test2.chinaums.com...
正式なインタフェース:https://qr.chinaums.com/netpa...
2:主なパラメータの説明
(1)msgSrc
メッセージソース、例:WWW.TEST.COM
(2)msgType
メッセージソース、直接入力:refund
(3)requestTimestamp
メッセージ要求時間、フォーマットyyyyy-MM-dd HH:mm:ss、例えば:2019-10-01 12:12:12
(4)merOrderId
商家注文番号
(5)instMid
業務タイプ、直接YUEDANDEFAULTに記入
(6)mid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の商家番号
(7)tid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の端末番号
(8)refundAmount
払戻金額、単位は分
(9)refundDesc
返金の説明
(10)sign
に署名
実装方式は支払い中の署名と同じである
五:払戻の支払い例
一:インタフェースアドレス:
テストインタフェースアドレス:https://qr-test2.chinaums.com...
正式なインタフェースアドレス:https://qr.chinaums.com/netpa...
二:主なパラメータの説明:
インタフェースはgetパラメータを使用し、インタフェースパラメータをインタフェースアドレスに直接配置した後、このインタフェースはブラウザからインタフェースに直接ジャンプします.
1:instMid
業務タイプ、直接記入:YUEDANDEFAULT
2:merOrderId
商家注文番号
3:mid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の商家番号
4:msgSrc
WWW.TEST.COM
5:msgType(このパラメータが重要かどうかは、主に何を使って支払うかを区別します)
メッセージタイプ:微信支払い使用:WXPay.jsPay,支付宝支払使用:trade.jsPay,銀聯支払使用:qmf.jspayまたはqmf.webPay
6:orderDesc
オーダーの説明
7:requestTimestamp
メッセージ要求時間:yyyy-MM-dd HH:mm:ss、例えば2019-10-01 12:12:12:12
8:tid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の端末番号
9:totalAmount
支払い総額、単位は分
10:notifyUrl
支払結果通知先
11:returnUrl
Webページのジャンプアドレス
12:sign
署名は、上のパラメータをa-zの順に並べ替え、並べ替えが完了したら&文字で接続し、接続後にエスケープ文字が存在する場合はエスケープ文字を削除しmd 5暗号化して署名を取得します
三:銀聯ビジネスの公衆番号+サービスウィンドウの支払い例:
//
$mdKey = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';
$mid = '898340149000005';
$tid = '88880001';
$time = time();
$requestTimestamp = date('Y-m-d H:i:s',$time);
$merOrderId = date('YmdHis') . mt_rand(100000, 999999);
$msgType = 'qmf.jspay';// :WXPay.jsPay, :trade.jsPay, :qmf.jspay(qmf.webPay)
$data = [
'instMid' => 'YUEDANDEFAULT',//
'merOrderId' => $merOrderId,//
'mid' => $mid,//
'msgSrc' => 'WWW.TEST.COM',//
'msgType' => $msgType,//
'orderDesc' => ' ',//
'requestTimestamp' => $requestTimestamp,//
'tid' => $tid,//
'totalAmount' => '1',//
'notifyUrl' => 'http://d9vhs4.natappfree.cc',// , post 。 status
'returnUrl' => 'http://d9vhs4.natappfree.cc',// , get 。 status
];
ksort($data);
reset($data);
$options = '';
foreach ($data as $key => $value) {
$options .= $key . '=' . $value .'&';
}
$options = rtrim($options, '&');
// ,
if(get_magic_quotes_gpc()){
$options = stripslashes($options);
}
$sign = md5($options . $mdKey);
$options .= '&sign=' . $sign;
$url = 'https://qr-test2.chinaums.com/netpay-portal/webpay/pay.do?'.$options;
// url
支払い終了後に返されるstatusパラメータの値:
四:返金の支払い
支払いがあれば返金がありますが、どうやって返金しますか?
1:返金インタフェース
テストインタフェース:https://qr-test2.chinaums.com...
正式なインタフェース:https://qr.chinaums.com/netpa...
2:主なパラメータの説明
(1)msgSrc
メッセージソース、例:WWW.TEST.COM
(2)msgType
メッセージソース、直接入力:refund
(3)requestTimestamp
メッセージ要求時間、フォーマットyyyyy-MM-dd HH:mm:ss、例えば:2019-10-01 12:12:12
(4)merOrderId
商家注文番号
(5)instMid
業務タイプ、直接YUEDANDEFAULTに記入
(6)mid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の商家番号
(7)tid
銀聯ビジネスの公衆番号+サービスウィンドウ支払製品の端末番号
(8)refundAmount
払戻金額、単位は分
(9)refundDesc
返金の説明
(10)sign
に署名
実装方式は支払い中の署名と同じである
五:払戻の支払い例
//
$mdKey = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';
$mid = '898340149000005';
$tid = '88880001';
$requestTimestamp = date('Y-m-d H:i:s',time());
$data = [
'msgSrc' => 'WWW.TEST.COM',//
'msgType' => 'refund',//
'requestTimestamp' => $requestTimestamp,//
'merOrderId' => $merOrderId,//
'instMid' => $params['instMid'],//
'mid' => $mid,//
'tid' => $tid,//
'refundAmount' => 1,//
'refundDesc' => ' ',//
];
ksort($data);
reset($data);
$options = '';
foreach ($data as $key => $value) {
$options .= $key . '=' . $value .'&';
}
$options = rtrim($options, '&');
// ,
if(get_magic_quotes_gpc()){
$options = stripslashes($options);
}
//
$sign = md5($options . $mdKey);
$data['sign'] = $sign;
$client = new Client();
$response = $client->createRequest()
->setMethod('POST')
->setUrl('https://qr-test2.chinaums.com/netpay-route-server/api/')
->setData($data)
->setHeaders([
'Content-Type'=>'application/json'
])
->setFormat(Client::FORMAT_JSON) //
->send();
if ($response->isOk) {
$data = $response->data;
if ($data['refundStatus'] == 'SUCCESS') {
//
return true;
}
}
return false;
}