银联在线支付(产品:网关支付) + 银联海关申报及查询
演示demo 2016-07-21 17:10:14 接口   二次开发   插件   帝国CMS   

 银联的在线客服中心:

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

QQ图片20160721171225.png

 

还有一个前台的回调地址,就是用户付完款后,回到商户页面看到的界面,和付款成功后做的操作

QQ图片20160721171225.png

 交易完成后,返回的结果如:

QQ截图20160721181445.jpg

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的这个商户号因为测试的人太多已经被拉入黑名单,所以需要测试的小伙伴需要去注册一个帐号,然后用申请的商户号做测试 

 

QQ图片20160801115848.png

 

 

测试商户号:
 777290058132961
测试入口地址:
前台交易请求地址:
https://101.231.204.80:5000/gateway/api/frontTransReq.do

APP交易请求地址:
https://101.231.204.80:5000/gateway/api/appTransReq.do

后台交易请求地址:
https://101.231.204.80:5000/gateway/api/backTransReq.do

后台交易请求地址(若为有卡交易配置该地址):
https://101.231.204.80:5000/gateway/api/cardTransReq.do

单笔查询请求地址:
https://101.231.204.80:5000/gateway/api/queryTrans.do

批量交易请求地址:
https://101.231.204.80:5000/gateway/api/batchTrans.do

文件传输类交易地址:
https://101.231.204.80:9080/
 

 

 

测试卡号信息:
卡号 卡性质 机构名称 手机号码 密码 CVN2 有效期 证件号 姓名
6216261000000000018 借记卡 平安银行 13552535506 123456     341126197709218366 全渠道
6221558812340000 贷记卡 平安银行 13552535506 123456 123 1711 341126197709218366 互联网
网关、WAP短信验证码 111111 控件短信验证码 123456
B2B企业网银测试账号:
账号:123456789001   密码:789001

 

 


 

添加银联海关申报

1、在acp_service.php最后加上

PHP Code复制内容到剪贴板
  1.    //==================================================================  
  2.    //功能:     银联海关接口需要的一些方法  
  3.    //==================================================================  
  4. /** 
  5.  * 签名证书ID 
  6.  * 
  7.  * @return unknown 
  8.  */  
  9. public function getSignCertId() {  
  10.     // 签名证书路径  
  11.     return $this->getCertId ( SDK_CUSTOMS_CERT_PATH);  
  12. }  
  13.   
  14. /** 
  15.  * 取证书ID(.pfx) 
  16.  * 
  17.  * @return unknown 
  18.  */  
  19. public function getCertId($cert_path) {  
  20.     $pkcs12certdata = file_get_contents ( $cert_path );  
  21.   
  22.     openssl_pkcs12_read ( $pkcs12certdata$certs, SDK_SIGN_CERT_PWD );  
  23.     $x509data = $certs ['cert'];  
  24.     openssl_x509_read ( $x509data );  
  25.     $certdata = openssl_x509_parse ( $x509data );  
  26.     $cert_id = $certdata ['serialNumber'];  
  27.     return $cert_id;  
  28. }     

 

 2、SDKconfig.php

PHP Code复制内容到剪贴板
  1. // 海关申报开发联调环境地址(需要当前IP加入白名单)  
  2. const SDK_BACK_CUSTOMS_TEMP_URL = 'http://101.231.114.219/gateway/api/backTransReq.do';  
  3. // 海关申报证书  
  4. const SDK_CUSTOMS_CERT_PATH = '../certs/acp_test_verify_sign.pfx';  

 银联海关查询结果图.jpg

海关申报的报文应答

 

海关申报应答.jpg

返回6100030是对的,这个是联调环境,剩下的就是银联提交到海关那边验证数据的了。 

验证的在customsData

参数:

goodsAmt        货款金额

merOrderId      业务订单号(这里一般是该订单由哪个平台支付的,支付平台所出示的订单号,如支付宝订单号等)

origTxnTime     业务订单时间(这里一般是该订单由哪个平台支付的,支付平台所出示的交易发送时间)

taxAmt          该订单的税款

freightAmt      该订单的运费

certifId        收件人的身份证号

customerNm      收件人的姓名

orderId         商户订单号,由商户自己生成,8-32位数字字母,不能含“-”或“_”,生成唯一值

 

 

 

 

 


 

证书科普:

 

QQ截图20160817174940.jpg

问题一:如果出现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

 

本文来自于:http://www.yoyo88.cn/demo/22.html

Powered by yoyo苏ICP备15045725号