汇付聚合支付自助接入解决方案快捷支付接口代码详解

       上篇文章 《汇付聚合支付自助接入的一点经验分享》 发出后,受到众多朋友的阅读与评论,在此感谢大家的厚爱。看有些朋友评论说:很有用,能不能再讲具体一点,今天我就应大伙需求,来具体讲一讲里面的内容。截至目前,我们对接使用的汇付的聚合支付自助接入解决方案,没有出现过什么大问题,系统稳定,结算效率高,不愧是支付行业的老牌支付公司。

        今天,我先讲一下汇付(汇付天下)聚合支付自助接入解决方案里的快捷支付接口代码,一方面给自己做一个记录,方便日后查看,另一方面也是方便一些基础不是很强的技术人员在对接汇付天下支付的时候,省去一些码代码的时间。

        下面是快捷支付接口代码:

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支付的接口代码,届时也会干货满满。

        有兴趣的童鞋,也可以直接去他们官微看看。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章