上篇文章 《匯付聚合支付自助接入的一點經驗分享》 發出後,受到衆多朋友的閱讀與評論,在此感謝大家的厚愛。看有些朋友評論說:很有用,能不能再講具體一點,今天我就應大夥需求,來具體講一講裏面的內容。截至目前,我們對接使用的匯付的聚合支付自助接入解決方案,沒有出現過什麼大問題,系統穩定,結算效率高,不愧是支付行業的老牌支付公司。
今天,我先講一下匯付(匯付天下)聚合支付自助接入解決方案裏的快捷支付接口代碼,一方面給自己做一個記錄,方便日後查看,另一方面也是方便一些基礎不是很強的技術人員在對接匯付天下支付的時候,省去一些碼代碼的時間。
下面是快捷支付接口代碼:
JAVA代碼示例:
首先將需要收集的參數都寫成json格式的字符串。
String valueObj = "{
"version": "10",
"cmd_id": "123123",
"mer_cust_id": "123123123123",//入駐商戶id
"user_cust_id": "321321321321321",//入駐商戶下級商戶ID
"order_id": "1234567",//訂單編號
"order_date": "20180327",
"trans_amt": "6.95",
"bind_card_id": "1000000085",//商戶已綁定綁定卡號
"sms_code": "111111",//短信驗證碼
"div_detail": "[{'divCustId':'123123123123','divAcctId':'45841','divAmt':'6.92','divFreezeFg':'01'},{'divCustId':'321321321321','divAcctId':'12345','divAmt':'0.03','divFreezeFg':'00'}]",//分賬串信息
"bg_ret_url": "http://192.168.100.110:8001/npayCallBack/asyncHandle.json",//地址可以詢問對方運營
"ret_url": "",
"mer_priv": "test",
"extension": "test"
}";
String testUrl = "http://192.168.100.110:8083/npay/merchantRequest";//地址可以詢問對方運營
// 加簽用pfx文件
String pfxFileName = "888888-匯付測試商戶.pfx";
// 加簽用密碼
String pfxFilePwd = "888888";
// 進行base64轉換
String base64RequestParams = Base64.encodeBase64String(valueObj.getBytes(Charset.forName("utf-8")));
// 加簽
SignResult signResult = CFCASignature.signature("/app/etc/product/" + pfxFileName, pfxFilePwd,base64RequestParams, "utf-8");
String checkValue = signResult.getSign();
String cmdId = "123";//交易指令ID
String merCustId = "123123123123";//入駐商戶id
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
//響應解密
JSONObject jsonObject = JSON.parseObject(body);
String sign = jsonObject.getString("check_value");
String cerName = "CFCA_ACS_OCA31.cer";//文件可以詢問對方運營
VerifyResult verifyResult = CFCASignature.verifyMerSign("100001", sign, "utf-8", "/app/etc/product/" + cerName);
String content = new String(verifyResult.getContent(), Charset.forName("utf-8"));
String decrptyContent = new String(Base64.decodeBase64(content), Charset.forName("utf-8"));
成功響應:
{
"cmd_id": "123",
"resp_code": "123000",
"resp_desc": "交易成功",
"mer_cust_id" : "123123123123",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失敗響應:
{
"cmd_id": "123",
"resp_code": "123003",
"resp_desc": "交易失敗",
"mer_cust_id" : "123123123123",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
加簽方法:
private static String sign(String valueObj) {
// 加簽用pfx文件
String pfxFileName = "888888-匯付測試商戶.pfx";
// 加簽用密碼
String pfxFilePwd = "888888";
// 進行base64轉換
String base64RequestParams = Base64.encodeBase64String(valueObj.getBytes(Charset.forName("utf-8")));
// 加簽
SignResult signResult = CFCASignature.signature("/app/etc/product/" + pfxFileName, pfxFilePwd,base64RequestParams, "utf-8");
if ("000".equals(signResult.getCode())) {
return signResult.getSign();
} else {
return "加簽失敗";
}
}
好了,今天就記錄到這裏,相關的報錯信息在接口文檔中也有,根據提示調試吧。所有的接口編號、接口名稱、提示都在頁面上,用起來非常方便。個人認爲這是其宣稱“全程自助對接”的關鍵之處,這些也許能幫對接使用支付的公司減少不少開發、運營的成本。
下篇文章,我可能寫H5或APP支付的接口代碼,屆時也會幹貨滿滿。
有興趣的童鞋,也可以直接去他們官微看看。