-
-
Save jtyjty99999/b7db2e45c20df8a0135e4ab36d48d103 to your computer and use it in GitHub Desktop.
yiji
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
var YijiConfig = { | |
// 商户id | |
partner:"20170413020014185029", | |
// 密钥 | |
key:"21a121c1ca7c146581292c28892971f8", | |
// 网管 | |
url:"https://openapi.yijifu.net/gateway.html?" | |
}; | |
*/ | |
var YijiConfig = { | |
// 商户id | |
partner:"20160825020000752433", | |
// 密钥 | |
key:"05a29a66557ad2f3634534a940d3577c", | |
// 网管 | |
url:"https://openapi.yijifu.net/gateway.html?" | |
}; | |
/** | |
* 在应用中发送付款请求,替换掉构造form的应用 | |
* @param req | |
* @param res | |
*/ | |
var yijito = function () { | |
//https://apidoc.yiji.com/website/api_detail.html?sericeNo=espOrderPay_1.0&id=8a949fbe564a569d0156e36025ae00c3&sericeName=%E8%AE%A2%E5%8D%95%E6%94%AF%E4%BB%98&schemeName=%E6%96%B0%E5%A4%96%E5%8D%A1%E6%94%B6%E5%8D%95#espOrderPay_1.0 | |
//请与贵网站订单系统中的唯一订单号匹配 | |
var orderNo = '20120708132325118'; | |
var service = 'espOrderPay'; | |
var partnerId = YijiConfig.partner; | |
var signType = 'MD5'; | |
//把请求参数打包成数组 | |
var sParaTemp = []; | |
sParaTemp.push(["orderNo", orderNo]); | |
sParaTemp.push(["service", service]); | |
sParaTemp.push(["partnerId", partnerId]); | |
sParaTemp.push(["signType", signType]); | |
// 业务接口 | |
sParaTemp.push(["merchOrderNo", 123]); | |
sParaTemp.push(["goodsInfoList", '[{"goodsNumber":"3146165","goodsName":"笔记本电脑","goodsCount":"5","itemSharpProductcode":"计算机","itemSharpUnitPrice":"8888"}]']); | |
sParaTemp.push(["orderDetail", '{"ipAddress":"192.168.4.2","billtoCountry":"中国","billtoState":"重庆","billtoCity":"重庆","billtoPostalcode":"401254","billtoEmail":"[email protected]","billtoFirstname":"三","billtoLastname":"张","billtoPhonenumber":"10086100101","billtoStreet":"渝北区黄山大道中段","shiptoCity":"Covina","shiptoCountry":"American","shiptoFirstname":"Tom","shiptoLastname":"July","shiptoEmail":"[email protected]","shiptoPhonenumber":"10086100101","shiptoPostalcode":"89123452115","shiptoState":"CA","shiptoStreet":"137 W San Bernardino Rd.","logisticsFee":"422","logisticsMode":"顺丰","logisticsModeNumber":"45","cardType":"Visa","customerEmail":"[email protected]","customerPhonenumber":"123645132645","merchantEmail":"[email protected]","merchantName":"Clippinger Chevrolet Oldsmobile","addressLine1":"Mxkss","addressLine2":"The Status"}']); | |
sParaTemp.push(["currency", 'CNY']); | |
sParaTemp.push(["userId", partnerId]); | |
sParaTemp.push(["amount", '888.66']); | |
sParaTemp.push(["webSite", 'de-front.com']); | |
sParaTemp.push(["endReturnURL", 'http://de-front.com/return']); | |
sParaTemp.push(["returnUrl", 'http://de-front.com/return']); | |
sParaTemp.push(["notifyurl", 'http://de-front.com/return']); | |
sParaTemp.push(["language", 'en']); | |
sParaTemp.push(["deviceFingerprintId", 'sfkjddge534314edsa']); | |
/** | |
* 构造即时到帐接口 | |
* @param sParaTemp 请求参数集合 | |
* @return 表单提交HTML信息 | |
*/ | |
var create_direct_pay_by_user = function (sParaTemp) { | |
/** | |
* 构造提交表单HTML数据 | |
* @param sParaTemp 请求参数数组 | |
* @param gateway 网关地址 | |
* @param strMethod 提交方式。两个值可选:post、get | |
* @param strButtonName 确认按钮显示文字 | |
* @return 提交表单HTML文本 | |
*/ | |
var buildURL= function (sParaTemp) { | |
/** | |
* 生成要请求给支付宝的参数数组 | |
* @param sParaTemp 请求前的参数数组 | |
* @return 要请求的参数数组 | |
*/ | |
var buildRequestPara = function (sParaTemp) { | |
var sPara = []; | |
//除去数组中的空值和签名参数 | |
for (var i1 = 0; i1 < sParaTemp.length; i1++) { | |
var value = sParaTemp[i1]; | |
if (value[1] == null || value[1] == "" || value[0] == "sign" | |
|| value[0] == "sign_type") { | |
continue; | |
} | |
sPara.push(value); | |
} | |
sPara.sort(); | |
//生成签名结果 | |
var prestr = ""; | |
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 | |
for (var i2 = 0; i2 < sPara.length; i2++) { | |
var obj = sPara[i2]; | |
if (i2 == sPara.length - 1) { | |
prestr = prestr + obj[0] + "=" + obj[1]; | |
} else { | |
prestr = prestr + obj[0] + "=" + obj[1] + "&"; | |
} | |
} | |
prestr = prestr + YijiConfig.key; //把拼接后的字符串再与安全校验码直接连接起来 | |
var crypto = require('crypto'); | |
var mysign = crypto.createHash('md5').update(prestr, 'utf-8').digest("hex"); | |
//签名结果与签名方式加入请求提交参数组中 | |
sPara.push(["sign", mysign]); | |
return sPara; | |
}; | |
//待请求参数数组 | |
var sPara = buildRequestPara(sParaTemp); | |
var path=YijiConfig.url; | |
for (var i3 = 0; i3 < sPara.length; i3++) { | |
var obj = sPara[i3]; | |
var name = obj[0]; | |
var value = encodeURIComponent(obj[1]); | |
if(i3<(sPara.length-1)){ | |
path=path+name+"="+value+"&"; | |
}else{ | |
path=path+name+"="+value; | |
} | |
} | |
return path.toString(); | |
}; | |
return buildURL(sParaTemp); | |
}; | |
//构造函数,生成请求URL | |
var sURL = create_direct_pay_by_user(sParaTemp); | |
console.log(sURL); | |
}; | |
yijito(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment