最近呢,比较忙,公司在接入银联全渠道支付,博主接手的wap支付,发表一下博主在接入的时候遇到的坑和注意事项,方便你们学习接入,爬坑的路上更顺利一点~c#
1. 以表单的方式组装要发送给银联全渠道系统的数据对象(包括IC卡交易信息域,VPC交易信息域,风控信息域等各域)。每一个域填写方法可参考文档开发包中接口文档。api
2. 将组装好的数据排序好并用&链接后签名,生成signature字段,可以使用插件包提供的方法“SDKUtil.sign(未签名报文, 报文字符集);”具体签名机制请参照第8章节。可经过调用插件包提供的签名方法来完成签名。服务器
3. 把全部要发送给银联全渠道系统的域包括signature和signMethod,组成表单以POST方式送给银联全渠道系统前台交易的地址。学习
4. 交易完成后,银联全渠道系统将把交易结果分别返回通知到商户通的前台应答地址和后台应答地址上,商户接收到交易通知后可分别调用“SDKUtil.convertResultStringToMap(应答报文);”方法进行应答报文解析,和“SDKUtil.validate(应答报文, 报文字符集)”方法进行签名验证。测试
官方在测试的时候给了一个测试证书700000000000001_acp.pfx,这个证书我在测试的时候没法得到私钥。url
代码1spa
错误:没法得到指定的程序类型错误.net
解决方案:换台机器试试...至今没有解决。插件
须要的参数:code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
param[
"version"
] = version;
//M 版本号
param[
"encoding"
] = encoding;
//O
param[
"certId"
] = UnionpayCertUtil.GetSignCertId();
//证书ID
param[
"bizType"
] = bizType;
//M
param[
"accessType"
] = accessType;
//M
param[
"merId"
] = merId;
//M
param[
"signMethod"
] = signmethod;
param[
"channelType"
] =
"08"
;
param[
"frontUrl"
] =
"http://localhost:57510/data.core/UnionPay/api.ashx"
;
param[
"backUrl"
] =
"http://localhost:57510/data.core/UnionPay/api.ashx"
;
param[
"orderId"
] = serialID.ToString();
//M
param[
"txnTime"
] = DateTime.Now.ToString(
"yyyyMMddHHmmss"
);
//M
param[
"txnAmt"
] = (payfee * 100).ToString(
"#"
);
//M //用户根据需求可直接填写
param[
"txnType"
] =
"01"
;
//M
param[
"txnSubType"
] =
"01"
;
//M
param[
"currencyCode"
] =
"156"
;
|
若是你遇到了下面的错误,请根据上面的参数检查一下你的参数是否正确,是否是缺什么参数,注意你的回调地址,请确保url的正确性。
1.没有付款就直接跳至测试接口
2.直接跳转400的页面
支付成功后银联的服务器会回调你的backurl,查询是否支付成功。
最后奉上银联的sdk包,大家会用获得的sdk.rar
原文地址:http://www.lorna.com.cn/Articles/Index/c11d1b5c-20a1-4b03-bb74-639241ca89f2