大鱼海棠8 银联电子支付报文说明
请求报文
Version 版本号
MerId 商户号
MerOrderNo 必填,变长 32位,同一商户同一交易日期内不可重复
TranDate 商户提交交易的日期,例如交易日期为2015年1月2日,则值为20150102
TranTime 商户提交交易的时间,例如交易时间10点11分22秒,则值为101122
OrderAmt 单位:分
BusiType 0001(注意:字符串类型)
MerPageUrl 0 商户前台页面接收交易结果的地址,用于引导使用者支付后返回商户网站页面
MerBgUrl 商户后台接收交易结果的地址
CommodityMsg 0 用来描述购买商品的信息,ChinaPay原样返回
MerResv 0 商户自定义,ChinaPay原样返回
Signature 商户报文签名信息,报文中的所有字段都参与签名(Signature除外)
应答报文
* MerId 商户号
* MerOrderNo 商户订单号
* TranDate 交易日期 年月日
* TranTime 交易时间 时分秒
* OrderAmt 订单金额 单位分
* OrderStatus 订单支付状态 0000为支付成功状态,0001为未支付,其它为失败状态
* MerResv 商户私有域 自定义原样返回
* TranReserved 交易扩展域 json格式 原样返回
* Signature 签名
1、开发过程中,商户签名报SecurityException异常
检查交易证书密码是否配置正确,并检查配置文件security.properties是否配置正确。
需要将security.properties放在类路径下,并配置如下:
#交易证书路径
sign.file=D:/cert_cp/000000000000001.pfx
#交易证书密码
sign.file.password=123456
#交易证书的密钥容器格式
sign.cert.type=PKCS12
#报文中不参与签名的字段名称,多个字段用逗号进行分隔
sign.invalid.fields=Signature,CertId
#验签证书路径
verify.file=D:/cert_cp/cp_test.cer
#签名值字段名称
signature.field=Signature
2、开发过程中,商户签名报“未初始化配置”异常
检查签名或验签之前是否调用SecssUtil.init();方法,如果未调用,则调用SecssUtil.init()方法初始化安全签名配置
3、签名过程出现 Illegal key size错误
请检查下载的pfx证书是否正确,或者重新申请CFCA交易证书
4、交易失败!错误信息:证书未配置
这个报错通常有两个原因,一是没有申请交易证书,二是交易地址提交错误,测试地址和正式地址搞错了。
5、交易失败!错误信息:验签失败。
需要确认交易证书在Internet选项---内容---证书---颁发给的名字和在商户服务管理系统里面查到的交易证书的证书名称是一样的。
证书确认没有问题,需要确认参加签名的字段和传过来的字段是一样的。
签名示例代码
require 'SecssUtil.class.php';
$securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
$paramArray=array(
"AcqCode"=>"000000000000014",
"BankInstNo"=>"",
"BusiType"=>"0001",
"CommodityMsg"=>"ChinaPay测试-商品信息",
"CurryNo"=> "CNY",
" AccessType"=>"0",
" MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
" MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
" MerSplitMsg"=>"");
$secssUtil = new SecssUtil();
$secssUtil->init($securityPropFile); //初始化安全控件:
$secssUtil->sign($paramArray);
if("00"!==$secssUtil.getErrCode()){
echo"签名过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
return;
}
$signature==$secssUtil->getSign();
echo "签名数据为:".$signature;
验证签名示例代码
require 'SecssUtil.class.php';
$securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
$paramArray=array(
"AcqCode"=>"000000000000014",
"BankInstNo"=>"",
"BusiType"=>"0001",
"CommodityMsg"=>"ChinaPay测试-商品信息",
"CurryNo"=> "CNY",
" AccessType"=>"0",
" MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
" MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
" MerSplitMsg"=>"",
"Signature"=>"………"
);
$secssUtil = new SecssUtil();
$secssUtil->init($securityPropFile); //初始化安全控件:
$secssUtil->verify($paramArray);
if("00"!==$secssUtil.getErrCode()){
echo"验签过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
return;
}
echo "验签通过。";
敏感数据加密示例代码
require 'SecssUtil.class.php';
$securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
$plainData="testtest";
$secssUtil = new SecssUtil();
$secssUtil->init($securityPropFile); //初始化安全控件:
$secssUtil->encryptData ($plainData);
if("00"!==$secssUtil.getErrCode()){
echo"加密过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
return;
}
echo "加密后的密文为:".$secssUtil->getEncValue();
密码加密示例代码
require 'SecssUtil.class.php';
$securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
$card="6225882125408888";
$pin="123456";
$secssUtil = new SecssUtil();
$secssUtil->init($securityPropFile); //初始化安全控件:
$secssUtil->encryptPin($pin, $card);
if("00"!==$secssUtil.getErrCode()){
echo"密码加密过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
return;
}
echo "加密后的PIN密文为:".$secssUtil->getEncPin();
文件验签示例代码
require ' SecssUtil.class.php';
$securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
$secssUtil = new SecssUtil();
$secssUtil->init($securityPropFile);
$file="D:/Zend/workspaces/DefaultWorkspace12/ChinaPaySECSS_PHP/测试文件.txt";
echo "verify start time".date('y-m-d h:i:s',time())."\r\n";
$secssUtil->verifyFile($file);
if("00"===$secssUtil->getErrCode()){
echo "文件验签成功,errcode=[" .$secssUtil->getErrCode()."]\r\n";
}else{
echo "文件验签失败,errcode=[" .$secssUtil->getErrCode()."]\r\n";
}
echo "verify end time".date('y-m-d h:i:s',time())."\r\n";
大鱼海棠8 银联电子支付报文说明相关推荐
- 银联电子支付报文说明
1 请求报文 2 Version 版本号 3 MerId 商户号 4 MerOrderNo 必填,变长 32位,同一商户同一交易日期内不可重复 5 TranDate 商户提交交易的日期,例如交易日期为 ...
- B2B电商平台--ChinaPay银联电子支付功能(实战)
奇迹每天都在发生,而你能把握的便是当下,未来已来............. ...
- 讲讲在银联电子支付工作时加解密、签名验签的那些事(纯粹的干货)。
今天我们来讲讲系统间的交互需要哪些必要的东西才能确保互相通信会没有问题呢? 首先来看看最传统的系统交互,即两者直接互相明文传送,在这种情况下,若是被第三方拦截,会造成不可预估的影响.那么针对这种情况我 ...
- chinapay java_ECSHOP 银联电子支付(ChinaPay)插件 掉用JAVA签名
帮客户集成接口时候发现客户网站PHP版本达不到要求 只要调用JAVA来解决问题<?php /** * ECSHOP 银联电子支付(ChinaPay)插件 * ================== ...
- chinapay 新版php接口,银联电子支付(chinapay)接口配置
/** * ECSHOP 银联电子支付(ChinaPay)接口配置 * ---------------------------------------------------------------- ...
- 银联电子支付ChinaPay支付回调验证问题
注意是ChinaPay,银联电子支付,不是UnionPay,不是银联支付,详情请参考这篇文章 https://www.cnblogs.com/qidian10/p/4885038.html 支付回调验 ...
- 记在银联电子支付的上线感想
20170725第二次在银联电子支付中心上线了.给我一个感觉,任何东西都得来个先来后到一说法....... ----------------------------------华丽的分割线 不知不觉时 ...
- 银联电子支付 php chinapay
之前看我博客百度关键字的时候,很多人都是因为银联搜到我这里,一直想做一个demo 给大家,可惜没商户申请不到,这次机缘巧合帮朋友做支付三部曲:微信支付,支付宝支付和银联支付,其他两个支付都烂大街的,这 ...
- 【渝粤教育】广东开放大学 电子支付与安全 形成性考核 (59)
选择题 题目:直接参与者:商行和央行(商行以其不通层次的管辖银行在相应层次的央行开设清算帐户) 答案:看左侧 题目:支付系统全国处理中心是控制支付系统运行,管理国家金融网络通信.接收.结算.清算支付业 ...
最新文章
- [题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)
- [SDOI2008]Sandy的卡片
- 二、1、怎么做都好做,没flag就抓包
- merge用法linux,Merge用法
- maven的setting文件简单配置
- 奢侈品网购真正大牌占比未过半:被指只剩噱头
- 用OpenCV制作一个低成本的立体相机
- 循道丨全球最大资管公司贝莱德的崛起
- 手把手玩转win8开发系列课程(13)
- 电脑打印机print spooler服务总是自动停止的解决方法...
- 哪里有好用的电脑pdf编辑器免费版
- 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(K题)
- BIM模型文件下载——四层仿古别墅模型
- Elementui删除表格最后一页全部数据后跳到前一页的骚气写法
- 《C++Primer》学习笔记(11-12章)
- 计算机音乐谱消愁,消愁简谱-毛不易-歌词字字扎心,听者个个飙泪
- ibm服务器vios系统,IBM VIOS login(IVM)
- 日拱一卒,热爱可抵岁月漫长
- JAVA中Cookie MaxAge属性及其使用
- Docker Compose 练习:投票 App