Commit 8e8c48f2 by 宋毅

tj

parent 4892331f
...@@ -4,6 +4,8 @@ const AppServiceBase = require("../../app.base"); ...@@ -4,6 +4,8 @@ const AppServiceBase = require("../../app.base");
const querystring = require('querystring'); const querystring = require('querystring');
const md5 = require("MD5"); const md5 = require("MD5");
const NodeRSA = require('node-rsa'); const NodeRSA = require('node-rsa');
const crypto = require("crypto");
class utilsTlBankSve extends AppServiceBase { class utilsTlBankSve extends AppServiceBase {
constructor() { constructor() {
super(); super();
...@@ -37,7 +39,8 @@ class utilsTlBankSve extends AppServiceBase { ...@@ -37,7 +39,8 @@ class utilsTlBankSve extends AppServiceBase {
body: actionBody.body_desc, body: actionBody.body_desc,
sign_type: "RSA" sign_type: "RSA"
}; };
var signStr = await this.getCreateAliSignStr(payParam, parameters); // var signStr = await this.getCreateAliSignStr(payParam, parameters);
var signStr = await this.generateSign(pobj, parameters, payParam.privatekey, "RSA-SHA1");
parameters.sign = signStr; parameters.sign = signStr;
return system.getResultSuccess(parameters); return system.getResultSuccess(parameters);
} }
...@@ -50,12 +53,55 @@ class utilsTlBankSve extends AppServiceBase { ...@@ -50,12 +53,55 @@ class utilsTlBankSve extends AppServiceBase {
const publicDer = key.exportKey('pkcs8-public'); const publicDer = key.exportKey('pkcs8-public');
let text = Object.keys(parameters).sort().map(key => { let text = Object.keys(parameters).sort().map(key => {
return `${encodeURIComponent(key)}=${encodeURIComponent(parameters[key])}` return `${encodeURIComponent(key)}=${encodeURIComponent(parameters[key])}`
}).join('&'); }).join('&');
let buffer = Buffer.from(text); let buffer = Buffer.from(text);
let signature = key.sign(buffer).toString('base64'); let signature = key.sign(buffer).toString('base64');
return signature; return signature;
} }
/**
* 生成签名
* 支付宝官方文档:https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106118
* 筛选排序 -> 拼接 -> 签名
*
* @param {Object} dataObj 待签名的数据对象
* @param {String} privateKey 私钥
* @returns {String}
*/
async generateSign(pobj, dataObj, privateKey, algorith) {
const stringToBeSign = Object.keys(dataObj).sort().reduce((acc, k) => {
if (k !== 'sign' && dataObj[k] !== undefined) {
const v = `${dataObj[k]}`;
if (v.length !== 0) {
if (acc.length === 0) {
acc += `${k}=${v}`;
} else {
acc += `&${k}=${v}`;
}
}
}
return acc;
}, '');
if (stringToBeSign.length === 0) {
throw new Error('The data to be signed is empty.');
} else {
const cryptoSign = crypto.createSign(algorith);
cryptoSign.update(stringToBeSign, 'utf8');
var signStr = cryptoSign.sign(privateKey, 'base64');
this.logCtl.info({
appid: pobj.appInfo ? pobj.appInfo.uapp_id : "",
appkey: pobj.appInfo ? pobj.appInfo.uapp_key : "",
op: "center-app/app/base/service/impl/utilsSve/utilsAlibankSve.js/generateSign",
content: "参数:" + stringToBeSign + "返回结果signStr:" + signStr,
optitle: "获取钉钉支付签名信息返回",
});
return signStr;
}
}
//-------------------------------------------钉钉h5支付-----------------结束 //-------------------------------------------钉钉h5支付-----------------结束
} }
......
var system = require("../../../system"); var system = require("../../../system");
var settings = require("../../../../config/settings"); var settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base"); const AppServiceBase = require("../../app.base");
const cryptoJS = require("crypto"); const crypto = require("crypto");
//商标查询操作 //商标查询操作
class UtilsUserSve extends AppServiceBase { class UtilsUserSve extends AppServiceBase {
constructor() { constructor() {
...@@ -138,7 +138,7 @@ class UtilsUserSve extends AppServiceBase { ...@@ -138,7 +138,7 @@ class UtilsUserSve extends AppServiceBase {
let plainTex = "jsapi_ticket=" + ticket + "&noncestr=" + nonce + "&timestamp=" + timeStamp + "&url=" + url; let plainTex = "jsapi_ticket=" + ticket + "&noncestr=" + nonce + "&timestamp=" + timeStamp + "&url=" + url;
var sha1 = cryptoJS.createHash('sha1'); var sha1 = crypto.createHash('sha1');
sha1.update(plainTex, 'utf8'); sha1.update(plainTex, 'utf8');
let signature = sha1.digest('hex'); let signature = sha1.digest('hex');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment