PHP银联商务公众号支付接口


//测试号相关信息
$qwb_jine_1 = 1;  //金额
$qwb_jine   = $qwb_jine_1*100; //已 分 做单位
$mdKey = 'fcAmtnx7MwismjWNhNKdHC44mNXtnEQeJkRrhKJwyrW2ysRR';//MD5密钥
$mid = '898340149000005';//商户号
$tid = '88880001';//终端号
$time = time();
$requestTimestamp = date('Y-m-d H:i:s',$time);
$merOrderId = "3194".$rsDG["danhao"];//订单号
$msgType = 'WXPay.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' => $qwb_jine,//支付金额
  'notifyUrl' => 'https://s-purchase.com/m/pay/notify_url.php?qwb='.$rsDG["danhao"].'',//支付结果通知地址返回当前页面
  'returnUrl' => 'https://s-purchase.com/m/pay/notify_url.php?qwb='.$rsDG["danhao"].'',//支付完成返回界面
  'signType' => 'SHA256',//上送SHA256
];
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_1 = $options . $mdKey;
$sign = trim(hash("sha256", $sign_1));//sha256计算
$options .= '&sign=' . $sign;
$url = 'https://qr-test2.chinaums.com/netpay-portal/webpay/pay.do?'.$options;
//获取到url之后直接跳转即可
header('Location: '.$url);
?>

官方文档的签名规则是:
签名方式字段signType上送值为:SHA256 (请勿上送MD5),计算sign的输入数据为待签名字符串加上key(即:通讯密钥),key由网付前置平台分配。在请求参数列表中,除去sign参数外,其他需要使用到的参数均为要签名的参数。

我是利用通知完成后跳转的页面GET获取的status

status取值说明:
NEW_ORDER 新订单
UNKNOWN 不明确的交易状态
TRADE_CLOSED 在指定时间段内未支付时关闭的交易;在交易完成撤销成功时关闭的交易;支付失败的交易。 TRADE_CLOSED的交易不允许进行任何操作。
WAIT_BUYER_PAY 交易创建,等待买家付款。
TRADE_SUCCESS 支付成功
TRADE_REFUND 订单转入退货流程 退货可能是部分也可能是全部。

你可能感兴趣的:(支付接口)