银联电子支付报文说明

  1 请求报文
  2 Version    版本号
  3 MerId    商户号
  4 MerOrderNo    必填,变长 32位,同一商户同一交易日期内不可重复
  5 TranDate    商户提交交易的日期,例如交易日期为2015年1月2日,则值为20150102
  6 TranTime    商户提交交易的时间,例如交易时间10点11分22秒,则值为101122
  7 OrderAmt    单位:分
  8 BusiType    0001(注意:字符串类型)
  9 MerPageUrl    0    商户前台页面接收交易结果的地址,用于引导使用者支付后返回商户网站页面
 10 MerBgUrl    商户后台接收交易结果的地址
 11 CommodityMsg    0    用来描述购买商品的信息,ChinaPay原样返回
 12 MerResv    0    商户自定义,ChinaPay原样返回
 13 
 14 Signature    商户报文签名信息,报文中的所有字段都参与签名(Signature除外)
 15 
 16 应答报文
 17 * MerId    商户号
 18 * MerOrderNo    商户订单号
 19 * TranDate    交易日期 年月日
 20 * TranTime    交易时间 时分秒
 21 * OrderAmt    订单金额 单位分
 22 * OrderStatus    订单支付状态 0000为支付成功状态,0001为未支付,其它为失败状态
 23 * MerResv    商户私有域 自定义原样返回
 24 * TranReserved    交易扩展域    json格式 原样返回
 25 * Signature    签名
 26 
 27 1、开发过程中,商户签名报SecurityException异常
 28 
 29 检查交易证书密码是否配置正确,并检查配置文件security.properties是否配置正确。
 30 
 31 需要将security.properties放在类路径下,并配置如下:
 32 
 33 #交易证书路径
 34 
 35 sign.file=D:/cert_cp/000000000000001.pfx
 36 
 37 #交易证书密码
 38 
 39 sign.file.password=123456
 40 
 41 #交易证书的密钥容器格式
 42 
 43 sign.cert.type=PKCS12
 44 
 45 #报文中不参与签名的字段名称,多个字段用逗号进行分隔
 46 
 47 sign.invalid.fields=Signature,CertId
 48 
 49 #验签证书路径
 50 
 51 verify.file=D:/cert_cp/cp_test.cer
 52 
 53 #签名值字段名称
 54 
 55 signature.field=Signature
 56 
 57 2、开发过程中,商户签名报“未初始化配置”异常
 58 
 59 检查签名或验签之前是否调用SecssUtil.init();方法,如果未调用,则调用SecssUtil.init()方法初始化安全签名配置
 60 
 61 3、签名过程出现 Illegal key size错误
 62 
 63 请检查下载的pfx证书是否正确,或者重新申请CFCA交易证书
 64 
 65 4、交易失败!错误信息:证书未配置
 66 
 67 这个报错通常有两个原因,一是没有申请交易证书,二是交易地址提交错误,测试地址和正式地址搞错了。
 68 
 69 5、交易失败!错误信息:验签失败。
 70 
 71 需要确认交易证书在Internet选项---内容---证书---颁发给的名字和在商户服务管理系统里面查到的交易证书的证书名称是一样的。
 72 证书确认没有问题,需要确认参加签名的字段和传过来的字段是一样的。
 73 
 74 
 75 签名示例代码
 76 
 77 require 'SecssUtil.class.php';
 78 
 79 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
 80 
 81 $paramArray=array(
 82 
 83 "AcqCode"=>"000000000000014",
 84 
 85 "BankInstNo"=>"",
 86 
 87 "BusiType"=>"0001",
 88 
 89 "CommodityMsg"=>"ChinaPay测试-商品信息",
 90 
 91 "CurryNo"=> "CNY",
 92 
 93 " AccessType"=>"0",
 94 
 95 " MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
 96 
 97 " MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
 98 
 99 " MerSplitMsg"=>"");
100 
101 $secssUtil = new SecssUtil();
102 
103 $secssUtil->init($securityPropFile); //初始化安全控件:
104 
105 $secssUtil->sign($paramArray);
106 
107 if("00"!==$secssUtil.getErrCode()){
108 
109 echo"签名过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
110 
111 return;
112 
113 }
114 
115 $signature==$secssUtil->getSign();
116 
117 echo "签名数据为:".$signature;
118 
119  
120 
121 验证签名示例代码
122 
123 require 'SecssUtil.class.php';
124 
125 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
126 
127 $paramArray=array(
128 
129 "AcqCode"=>"000000000000014",
130 
131 "BankInstNo"=>"",
132 
133 "BusiType"=>"0001",
134 
135 "CommodityMsg"=>"ChinaPay测试-商品信息",
136 
137 "CurryNo"=> "CNY",
138 
139 " AccessType"=>"0",
140 
141 " MerBgUrl"=>"http://172.16.9.233:9080/CPOA_TEST/mer/receiveStdasServlet",
142 
143 " MerPageUrl"=>"http://172.16.9.233:9080/CPOA_TEST/receive",
144 
145 " MerSplitMsg"=>"",
146 
147 "Signature"=>"………"
148 
149 );
150 
151 $secssUtil = new SecssUtil();
152 
153 $secssUtil->init($securityPropFile); //初始化安全控件:
154 
155 $secssUtil->verify($paramArray);
156 
157 if("00"!==$secssUtil.getErrCode()){
158 
159 echo"验签过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
160 
161 return;
162 
163 }
164 
165 echo "验签通过。";
166 
167 敏感数据加密示例代码
168 
169 require 'SecssUtil.class.php';
170 
171 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
172 
173 $plainData="testtest";
174 
175 $secssUtil = new SecssUtil();
176 
177 $secssUtil->init($securityPropFile); //初始化安全控件:
178 
179 $secssUtil->encryptData ($plainData);
180 
181 if("00"!==$secssUtil.getErrCode()){
182 
183 echo"加密过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
184 
185 return;
186 
187 }
188 
189 echo "加密后的密文为:".$secssUtil->getEncValue();
190 
191  
192 
193 密码加密示例代码
194 
195 require 'SecssUtil.class.php';
196 
197 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
198 
199 $card="6225882125408888";
200 
201 $pin="123456";
202 
203 $secssUtil = new SecssUtil();
204 
205 $secssUtil->init($securityPropFile); //初始化安全控件:
206 
207 $secssUtil->encryptPin($pin, $card);
208 
209 if("00"!==$secssUtil.getErrCode()){
210 
211 echo"密码加密过程发生错误,错误信息为-->".$secssUtil.getErrMsg();
212 
213 return;
214 
215 }
216 
217 echo "加密后的PIN密文为:".$secssUtil->getEncPin();
218 
219 文件验签示例代码
220 
221 require ' SecssUtil.class.php';
222 
223 $securityPropFile="D:/Zend/workspaces/DefaultWorkspace12/chinapaySECSS_PHP/security.properties";
224 
225 $secssUtil = new SecssUtil();
226 
227 $secssUtil->init($securityPropFile);
228 
229 $file="D:/Zend/workspaces/DefaultWorkspace12/ChinaPaySECSS_PHP/测试文件.txt";
230 
231 echo "verify start time".date('y-m-d h:i:s',time())."\r\n";
232 
233 $secssUtil->verifyFile($file);
234 
235 if("00"===$secssUtil->getErrCode()){
236 
237 echo "文件验签成功,errcode=[" .$secssUtil->getErrCode()."]\r\n";
238 
239 }else{
240 
241 echo "文件验签失败,errcode=[" .$secssUtil->getErrCode()."]\r\n";
242 
243 }
244 
245 echo "verify end time".date('y-m-d h:i:s',time())."\r\n";

 

转载于:https://www.cnblogs.com/fish-begonia/p/6221800.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值