php实现银联商务公众号+服务窗支付 代码
生活随笔
收集整理的這篇文章主要介紹了
php实现银联商务公众号+服务窗支付 代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.平臺下單接口
參考地址
注意:若是微信公眾號支付 請使用 qmf.webPay 并在 微信公眾號的環境中測試
2.支付結果查詢接口
$msgType = empty($msgType) ? 'query' : $msgType;$mdKey = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';$mid = '898340149000005';$tid = '88880001';$merOrderId = '3194' . 'SH20191120093138668264';$msgSrc = 'WWW.TEST.COM';$time = time();$notifyUrl = $_W['siteroot'] . '/addons/sz_yi/payment/yinlian/notify.php';$requestTimestamp = date('Y-m-d H:i:s',$time);$data = ['instMid' => 'YUEDANDEFAULT',//業務類型'merOrderId' => $merOrderId,//訂單號'mid' => $mid,//商戶號// 'msgSrc' => 'WWW.HANGZPXWH.COM',//消息來源'msgSrc' => $msgSrc,//消息來源'msgType' => $msgType,//消息類型'requestTimestamp' => $requestTimestamp,//報文請求時間'tid' => $tid,//終端號];ksort($data, SORT_STRING);reset($data);$options = '';$options2 = '';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;$ch = curl_init();///json 格式 請求$data = json_encode($data);$timeout = 5;curl_setopt($ch, CURLOPT_URL, 'https://qr-test2.chinaums.com/netpay-route-server/api/');curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// dump(123);die;curl_setopt($ch, CURLOPT_POSTFIELDS, ($data));curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//設置header信息application/x-www-form-urlencoded;charset=utf-8 application/jsoncurl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data)));curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);$output = json_decode($output);3.訂單退款接口
$msgType = empty($msgType) ? 'refund' : $msgType;$instMid = 'YUEDANDEFAULT';//業務類型$mdKey = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';$mid = '898340149000005';$tid = '88880001';$merOrderId = '3194SH2030erererere6666699';//訂單號$msgSrc = 'WWW.TEST.COM';$time = time();$notifyUrl = $_W['siteroot'] . '/addons/sz_yi/payment/yinlian/notify.php';$requestTimestamp = date('Y-m-d H:i:s',$time);$data = ['instMid' => $instMid,//業務類型'merOrderId' => $merOrderId,//訂單號'mid' => $mid,//商戶號'msgSrc' => $msgSrc,//消息來源'msgType' => $msgType,//消息類型'requestTimestamp' => $requestTimestamp,//報文請求時間'tid' => $tid,//終端號'refundAmount' => 1,//退款金額'refundDesc' => '測試',//退款說明];ksort($data, SORT_STRING);reset($data);$options = '';$options2 = '';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;$ch = curl_init();///json 格式 請求$data = json_encode($data);$timeout = 5;curl_setopt($ch, CURLOPT_URL, 'https://qr-test2.chinaums.com/netpay-route-server/api/');curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, ($data));curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//設置header信息application/x-www-form-urlencoded;charset=utf-8 application/jsoncurl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data)));curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);$output = json_decode($output);若不知道支付結果通知地址返回的參數,可以通過寫文件的方式來觀看返回的參數結果
(1)當notify.php 文件代碼,不執行時,可以將returnUrl的路徑=notifyUrl的路徑,觀看是否為路徑錯誤,或是否為notify.php因代碼錯誤而無法執行。
(2)若因notify.php代碼錯誤而無法執行。可以通過瀏覽器訪問notifyUrl路徑來觀看notify.php是否是代碼錯誤,而無法執行
總結
以上是生活随笔為你收集整理的php实现银联商务公众号+服务窗支付 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D经验(3)——飞机弹幕设计
- 下一篇: 原生JS实现下拉刷新(移动端)