银联的在线客服中心:
http://open.unionpay.com/upload/weixin/wqa_index.html
网关支付产品文档:
https://open.unionpay.com/ajweb/product/detail?id=1
第一步:修改配置文件中证书的url地址,私钥证书初始密码是 000000,一定要写物理路径,而且不可以用变量,请在PHP页面中先输出你的根目录的物理路径是什么,打印$_SERVER['DOCUMENT_ROOT'] 就可以
SDKConfig.php
还有一个前台的回调地址,就是用户付完款后,回到商户页面看到的界面,和付款成功后做的操作
交易完成后,返回的结果如:
bizType:产品类型,依据实际业务场景填写(目前仅使用后 4 位,签名 2 位 默认为 00),具体取值范围: 000101:基金业务之股票基金 000102:基金业务之货币基金 000201:B2C 网关支付 000301:认证支付 2.0 000302:评级支付 000401:代付 000501:代收 000601:账单支付 000801:跨行收单 000901:绑定支付 001001:订购 000202:B2B
应答报文中,“应答码”即respCode字段,表示的是查询交易本身的应答,即查询这个动作是否成
功,不代表被查询交易的状态;
若查询动作成功,即应答码为“00“,则根据“原交易应答码”即origRespCode来判断被查询交易
是否成功。此时若origRespCode为00,则表示被查询交易成功。
txnType —— 交易类型:
取值:
00:查询交易
01:消费
02:预授权
03:预授权完成
04:退货
05:圈存
11:代收
12:代付
13:账单支付
14:转账(保留)
21:批量交易
22:批量查询
31:消费撤销
32:预授权撤销
33:预授权完成撤销
71:余额查询
72:实名认证-建立绑定关系
73:账单查询
74:解除绑定关系
75:查询绑定关系
77:发送短信验证码交易
78:开通查询交易
79:开通交易
94:IC 卡脚本通知
PS:银联官方DEMO的这个商户号因为测试的人太多已经被拉入黑名单,所以需要测试的小伙伴需要去注册一个帐号,然后用申请的商户号做测试
添加银联海关申报
1、在acp_service.php最后加上
- //==================================================================
- //功能: 银联海关接口需要的一些方法
- //==================================================================
- /**
- * 签名证书ID
- *
- * @return unknown
- */
- public function getSignCertId() {
- // 签名证书路径
- return $this->getCertId ( SDK_CUSTOMS_CERT_PATH);
- }
- /**
- * 取证书ID(.pfx)
- *
- * @return unknown
- */
- public function getCertId($cert_path) {
- $pkcs12certdata = file_get_contents ( $cert_path );
- openssl_pkcs12_read ( $pkcs12certdata, $certs, SDK_SIGN_CERT_PWD );
- $x509data = $certs ['cert'];
- openssl_x509_read ( $x509data );
- $certdata = openssl_x509_parse ( $x509data );
- $cert_id = $certdata ['serialNumber'];
- return $cert_id;
- }
2、SDKconfig.php
- // 海关申报开发联调环境地址(需要当前IP加入白名单)
- const SDK_BACK_CUSTOMS_TEMP_URL = 'http://101.231.114.219/gateway/api/backTransReq.do';
- // 海关申报证书
- const SDK_CUSTOMS_CERT_PATH = '../certs/acp_test_verify_sign.pfx';
海关申报的报文应答
返回6100030是对的,这个是联调环境,剩下的就是银联提交到海关那边验证数据的了。
验证的在customsData
参数:
goodsAmt 货款金额
merOrderId 业务订单号(这里一般是该订单由哪个平台支付的,支付平台所出示的订单号,如支付宝订单号等)
origTxnTime 业务订单时间(这里一般是该订单由哪个平台支付的,支付平台所出示的交易发送时间)
taxAmt 该订单的税款
freightAmt 该订单的运费
certifId 收件人的身份证号
customerNm 收件人的姓名
orderId 商户订单号,由商户自己生成,8-32位数字字母,不能含“-”或“_”,生成唯一值
证书科普:
问题一:如果出现Warning: openssl_verify(): supplied key param cannot be coerced into a public key in D:\【路径略】\func\secureUtil.php on line 61
一般来说,就是证书的问题,请重新下载开发包,覆盖一下你的证书文件,另外,请不要随便放别的证书
参考资料:https://open.unionpay.com/ajweb/help/faq/list?id=190&level=0&from=0&keyword=public