最近呢,比較忙,公司在接入銀聯全渠道支付,博主接手的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