准备工作:
PC站点:
效果:
选择支付金额,充值平台选择银联支付,点击立即支付按钮:
页面会跳转到银联支付的界面,如下图
输入银行卡号后,银行卡号绑定的手机号码需要获取验证码,如下图:
验证码填写后,确认支付,就代表了支付流程结束。
PC站点采用的是B2C无卡快捷支付方式,
相关的支付PHP demo
链接:https://pan.baidu.com/s/1FXdTUzaxapfDtWFfJYF6VA
提取码:5nzw
参考文档:https://service.chinapay.com/OSIWeb/online/querybyid.action?id=4&mark=1
需要注意几点:
1:demo给出的支付提交地址是沙盒环境下的地址,站点运营时要改为正式地址。
2:app支付和pc支付的安全密钥文件不是同一套,商户号也不是同一个。
打开securityapp.properties和securitypc.properties
PC接收参数处理:
$chinapay_pc_merchantid=; //PC端商户号
if(!$chinapay_pc_merchantid){
$this->assign("jumpUrl",'/');
$this->assign('msg','未配置商户号');
$this->error("未配置商户号");
}
$orderid = $uid."".date("mdHis")."".rand(999,9999);
/生成订单信息并写入数据库//
……
/生成订单信息并写入数据库//
//生成签名
$sign_data=array(
'MerId'=>$chinapay_pc_merchantid, //商户号
'MerOrderNo'=>$orderid, //订单编号
'OrderAmt'=>$money*100, //订单金额(单位分)
'TranDate'=>date('Ymd'), //交易日期
'TranTime'=>date('Hms'), //交易时间
'BusiType'=>'0001', //业务类型(固定值)
'Version'=>'20140728', //版本号(固定值)
'CurryNo'=>'CNY', //交易币种
'AccessType'=>"0", //接入类型 0:以商户身份接入;1:以机构身份接入
'AcqCode'=>'000000000000014', //收单机构号
'MerPageUrl'=>'/Home/Payment/chinapayback', //前台应答接受地址
'MerBgUrl'=>'/Home/Payment/chinapay_notify', //后台异步应答接受地址
'MerResv'=>'MerResv' //商户私有域(商户自定义标识,传值由银联回调时原封不动返回)
);
$post_data="source=pc¶ms=".json_encode($sign_data);
$url=$getConfigPub['site']."/appapi/index.php?service=User.getChinaPaySignature";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
$sign_result= curl_exec($curl);
curl_clo