聚合支付APP+快捷支付介面代碼詳解
聚合支付APP+快捷支付介面代碼詳解
聚合支付快捷支付介面代碼詳解
今天,我先講一下快捷支付介面代碼,一方面給自己做一個記錄,方便日後查看,另一方面也是方便一些基礎不是很強的技術人員在對接支付的時候,省去一些碼代碼的時間。
下面是快捷支付介面代碼:
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 "加簽失敗";
}
}
好了,今天就記錄到這裡,相關的報錯信息在介面文檔中也有,根據提示調試吧。所有的介面編號、介面名稱、提示都在頁面上,用起來非常方便。個人認為這是其宣稱「全程自助對接」的關鍵之處,這些也許能幫對接使用支付的公司減少不少開發、運營的成本。
文章來源:
超詳細的java接入ping++支付(聚合支付) - CSDN博客
推薦閱讀: