|
本帖最后由 梓梓梓梓 于 2016-3-11 10:58 编辑
刚做完银联支付模块,写个总结给大家参考参考
银联支付在APICloud里面很简单。几行代码就搞定了,如下
var unPay = api.require('unionPay');
api.ajax({
url: 'http://192.168.2.200:2888/UnPay/UnPay',//从银联测试服务器上获取tn号 这个是银联支付服务端地址,银联的服务端需要自己写,从网上下个样例改改,具体内容稍后说
method: 'post',
dataType: 'json',
returnAll:false,
data:{
values: {OrderID: orderCode,Amount:totalMoney}//提交商户后台生成的订单ID 银联支付服务端获取TN号需要改动的只有4个地方,商户号是固定的,直接写死在服务端,时间服务端直接获取datetime。now,是yyyyMMddhhmmss格式的,然后就是这两个参数,金额和订单号。订单号有长度限制,刚开始传了个4位短ID过去报错,改成订单长单号成功。
}
},function(ret,err){
if (ret.Msg) {//这我MSG是返回的是否成功获取TN号。这块是服务端跟银联交互的结果。
unPay.pay({
tn: ret.tn,//成功后传回tn号这里用
devMode: false//这个是是否测试。ture表示测试工程,false是正式上线工程
}, function(ret, err){
api.alert({msg:JSON.stringify(ret)});//成功失败的错误码
});
}
});
这就是APICloud中的代码
下面说下服务端的。具体怎么写参考银联给的样例
服务端的金额是以分为单位的。不能带有小数点。
然后基本配置就是在服务端的config中
正式版这几个参数如下配置,是共用的
<!-- 前台交易地址 -->
<add key="sdk.frontTransUrl" value="https://gateway**.**/gateway/api/frontTransReq.do"/>
<!-- 后台交易地址 -->
<add key="sdk.backTransUrl" value="https://gateway**.**/gateway/api/backTransReq.do"/>
<!-- 交易状态查询地址 -->
<add key="sdk.singleQueryUrl" value="https://gateway**.**/gateway/api/queryTrans.do"/>
<!-- 文件传输类交易地址 -->
<add key="sdk.fileTransUrl" value="https://filedownload**.**/"/>
<!-- 批量交易地址 -->
<add key="sdk.batTransUrl" value="https://gateway**.**/gateway/api/batchTrans.do"/>
<!-- 有卡交易地址 -->
<add key="sdk.cardRequestUrl" value="https://gateway**.**/gateway/api/cardTransReq.do"/>
<!-- app交易地址 手机控件支付使用该地址-->
<add key="sdk.appRequestUrl" value="https://gateway**.**/gateway/api/appTransReq.do"/>
然后修改自己的前台后台通知地址。
放上签约后给的证书,写上绝对路径,发布出去就应该可以获取tn了。。注意证书要跟密码对上号
放个服务端的官网样例
最后的最后。。除了参数错误大部分都是测试跟正式的混淆。注意这点。
还有81XXXXX 92XXXXX什么的报错去银联官网的技术服务搜索。百度搜不到
|
|