聚合支付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博客?

blog.csdn.net


推薦閱讀:

相关文章