Commit 58ee6a6a by 宋毅

rj

parent 487e1702
...@@ -8,7 +8,8 @@ class tmqueryCtl extends CtlBase { ...@@ -8,7 +8,8 @@ class tmqueryCtl extends CtlBase {
this.channelApiUrl = settings.channelApiUrl(); this.channelApiUrl = settings.channelApiUrl();
this.appInfo = { this.appInfo = {
jd: { appkey: "201911251551", secret: "56006077354d48858026c80c0e10bef6" }, jd: { appkey: "201911251551", secret: "56006077354d48858026c80c0e10bef6" },
1688: { appkey: "201911131657", secret: "eeb18393aade40149287b024d8ba0850" } 1688: { appkey: "201911131657", secret: "eeb18393aade40149287b024d8ba0850" },
gsb: { appkey: "201912141625", secret: "8cbb846776874167b5c7e01cd0116c66" }
}; };
this.execClient = system.getObject("util.execClient"); this.execClient = system.getObject("util.execClient");
...@@ -110,8 +111,8 @@ class tmqueryCtl extends CtlBase { ...@@ -110,8 +111,8 @@ class tmqueryCtl extends CtlBase {
return system.getResult(null, "处理请求失败"); return system.getResult(null, "处理请求失败");
} }
if (["jd"].indexOf(pobj.actionProcess) >= 0 && pobj.actionType == "subTmOrder") { if (["jd"].indexOf(pobj.actionProcess) >= 0 && pobj.actionType == "subTmOrder") {
var opPayPageInfoResult = await this.opPayPageInfo(pobj, result, req); var opJdPayPageInfoResult = await this.opJdPayPageInfo(pobj, result, req);
return opPayPageInfoResult; return opJdPayPageInfoResult;
} }
return result; return result;
} catch (e) { } catch (e) {
...@@ -131,6 +132,9 @@ class tmqueryCtl extends CtlBase { ...@@ -131,6 +132,9 @@ class tmqueryCtl extends CtlBase {
case "1688": case "1688":
reqParam = self.appInfo["1688"]; reqParam = self.appInfo["1688"];
break; break;
case "gsb":
reqParam = self.appInfo["gsb"];
break;
default: default:
break; break;
} }
...@@ -213,10 +217,10 @@ class tmqueryCtl extends CtlBase { ...@@ -213,10 +217,10 @@ class tmqueryCtl extends CtlBase {
var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard"; var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard";
var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token); var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
if (!resultUser) { if (!resultUser) {
return system.getResult(null, "req encrypt userId is error"); return system.getResult(null, "encryptStr resultUser is empty");
} }
if (resultUser.status != 0) { if (resultUser.status != 0) {
return system.getResult(null, "encrypt userId is error"); return system.getResult(null, "encryptStr resultUser is error");
} }
req.session.userPinInfo.encryptChannelUserId = resultUser.data || ""; req.session.userPinInfo.encryptChannelUserId = resultUser.data || "";
return system.getResultSuccess({ encryptChannelUserId: resultUser.data || "" }); return system.getResultSuccess({ encryptChannelUserId: resultUser.data || "" });
...@@ -250,6 +254,30 @@ class tmqueryCtl extends CtlBase { ...@@ -250,6 +254,30 @@ class tmqueryCtl extends CtlBase {
return system.getResultFail(-200, "操作error"); return system.getResultFail(-200, "操作error");
} }
} }
async putPayOrderData(pobj, orderResult, channelServiceNo, needNo, needNoOrderNo, req) {//关联下单的数据
var tokenInfo = await this.getToken(pobj.actionProcess);
if (tokenInfo.status != 0) {
return tokenInfo;
}
var param = {
actionProcess: pobj.actionProcess,
actionType: "updateOrderStatus",
actionBody: {
channelUserId: req.session.userPinInfo.channelUserId,
orderNo: orderResult.data.orderNo,
channelServiceNo: channelServiceNo,
needNo: needNo,
needNoOrderNo: needNoOrderNo
},
isUser: "yes"
};
console.log(param, "putPayOrderData########################################333333...........................");
var reqUrl = this.channelApiUrl + "/action/tmOrder/springBoard";
var tmp = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
console.log(tmp, "putPayOrderData########################################333333..........tmptmptmptmp.................");
}
//----------------------------jd------操作------------start
async getJdUserInfo(pobj, qobj, req) { async getJdUserInfo(pobj, qobj, req) {
try { try {
// this.logClient.info("jd", "getUserInfo--info--->pobj:" + JSON.stringify(pobj)); // this.logClient.info("jd", "getUserInfo--info--->pobj:" + JSON.stringify(pobj));
...@@ -297,8 +325,7 @@ class tmqueryCtl extends CtlBase { ...@@ -297,8 +325,7 @@ class tmqueryCtl extends CtlBase {
return system.getResultFail(-200, "操作error"); return system.getResultFail(-200, "操作error");
} }
} }
async opJdPayPageInfo(pobj, orderResult, req) {//操作下单的数据跟渠道订单关联
async opPayPageInfo(pobj, orderResult, req) {
if (!pobj.actionBody.itemCode) { if (!pobj.actionBody.itemCode) {
return system.getResult(null, "itemCode param is not empty"); return system.getResult(null, "itemCode param is not empty");
} }
...@@ -307,19 +334,22 @@ class tmqueryCtl extends CtlBase { ...@@ -307,19 +334,22 @@ class tmqueryCtl extends CtlBase {
if (itemCodeList.length < 2) { if (itemCodeList.length < 2) {
return system.getResult(null, "itemCode is error"); return system.getResult(null, "itemCode is error");
} }
var tmpResult = await this.getPayPageAddr(pobj.actionBody.itemCode, itemCodeList, req); var tmpResult = await this.getJdPayPageAddr(pobj.actionBody.itemCode, itemCodeList, req);
// { result: true, // { result: true,
// data: // data:
// '{"success":true,"code":null,"msg":null,"data":{"orderNumber":"6058867","erpOrderId":"523198741458590844", // '{"success":true,"code":null,"msg":null,"data":{"orderNumber":"6058867","erpOrderId":"523198741458590844",
// "returnUrl":"https://buy.jdcloud.com/pay?orderId=523198741458590844","saasCheckUrl":null}}' } // "returnUrl":"https://buy.jdcloud.com/pay?orderId=523198741458590844","saasCheckUrl":null}}' }
this.logClient.info("jd", "opPayPageInfo--tmpResult-->" + JSON.stringify(tmpResult)); this.logClient.info("jd", "opJdPayPageInfo--tmpResult-->" + JSON.stringify(tmpResult));
if (tmpResult && tmpResult.result && tmpResult.result == true) { if (tmpResult && tmpResult.result && tmpResult.result == true) {
var payDataResult = JSON.parse(tmpResult.data); var payDataResult = JSON.parse(tmpResult.data);
if (payDataResult && payDataResult.success && payDataResult.success == true) { if (payDataResult && payDataResult.success && payDataResult.success == true) {
//更新订单信息 //更新订单信息
await this.putPayOrderData(pobj, orderResult, payDataResult, req); var channelServiceNo = payDataResult.data.erpOrderId;
var needNo = pobj.actionBody.itemCode + "_" + payDataResult.data.orderNumber;
var needNoOrderNo = payDataResult.data.orderNumber;
await this.putPayOrderData(pobj, orderResult, channelServiceNo, needNo, needNoOrderNo, req);
return system.getResultSuccess({ payUrl: payDataResult.data.returnUrl }); return system.getResultSuccess({ payUrl: payDataResult.data.returnUrl });
}//成功 }//成功
} }
...@@ -327,31 +357,161 @@ class tmqueryCtl extends CtlBase { ...@@ -327,31 +357,161 @@ class tmqueryCtl extends CtlBase {
} }
return system.getResultSuccess(); return system.getResultSuccess();
} }
async putPayOrderData(pobj, orderResult, payDataResult, req) {
var tokenInfo = await this.getToken(pobj.actionProcess); async getJdPayPageAddr(itemCode, itemCodeList, req) {//获取京东下单
if (tokenInfo.status != 0) { try {
return tokenInfo; const { Signer, Context } = require('../jd-gateway-sdk');
let ctx = new Context('x3k0s704lfun.cn-north-1.jdcloud-api.net', '/market/order/api/submit', 'POST', null, 'empty');
ctx.regionId = 'cn-north-1'
ctx.headers.set('content-type', 'application/json');
let credentials = {
accessKeyId: 'C6D680733C19362B5DF478207D6A90A4', //替换自己的AK
secretAccessKey: 'EB9AFEE49CE41700CADD5F2EE3B2122C' //替换自己的SK--jd>>>>>>>
}
//测试报文:
//ctx.body = "pin=jcloud_pRiHQTd&serviceId=580010&itemCode=FW_GOODS-580010-1&platform=6"
//POST
var qs = require('querystring');
// var post_data = { pin: "syaify", serviceId: 580010, itemCode: "FW_GOODS-580010-1", platform: 6, orderNum: 1, articleType: 1 };//这是需要提交的数据
var post_data = {
pin: req.session.userPinInfo.channelUserId,
serviceId: itemCodeList[1],
itemCode: itemCode,
platform: 6,
orderNum: 1,
articleType: 1,
additions: '{ \"246\": 0 }'
};//这是需要提交的数据
// var tmpContent = '{"pin":"syaify","serviceId":"581976","itemCode":"FW_GOODS-581976","platform":6,"orderNum":1,"articleType":1,"additions":{"246":0}}';
var tmpContent = JSON.stringify(post_data);
var tmpContentLength = Buffer.byteLength(tmpContent);
ctx.body = tmpContent;
ctx.method = 'POST'
var signer = new Signer(ctx, credentials);
ctx.headers.set('Content-Length', tmpContentLength)
ctx.buildNonce()
var dd = new Date();
var auth = signer.sign(dd)
console.log("POST签名为:", auth)
ctx.headers.set('Authorization', auth)
////////////////////////////////////////////////////////////////////////////////////////////////////////////
var http = require('https');
var options = {
host: 'x3k0s704lfun.cn-north-1.jdcloud-api.net',
port: 443,
path: '/market/order/api/submit',
method: 'POST',
headers: {
}
};
for (let [key, value] of ctx.headers) {
options.headers[key] = value
}
this.logClient.info("jd", "req---->getJdPayPageAddr---->options:" + JSON.stringify(options));
this.logClient.info("jd", "req---->getJdPayPageAddr---->tmpContent:" + tmpContent);
var reqResult = await new Promise(function (resolve, reject) {
let req = http.request(options, function (res) {
// res.setEncoding(encoding);
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
var _data = '';
res.on('data', function (chunk) {
_data += chunk;
});
res.on('end', function () {
console.log("\n--req---成功->>\nresult:", _data)
resolve({ result: true, data: _data });
});
});
req.on('error', (e) => {
console.error(`请求遇到问题-------------: ${e.message}`);
resolve({ result: false, errmsg: e.message });
});
req.write(tmpContent);
req.end();
});
return reqResult;
} catch (errorMsg) {
this.logClient.error("jd", "req---->getJdPayPageAddr---->error:" + error.stack);
return { success: false, code: -200, msg: error.stack };
} }
var param = {
actionProcess: pobj.actionProcess,
actionType: "updateOrderStatus",
actionBody: {
channelUserId: req.session.userPinInfo.channelUserId,
orderNo: orderResult.data.orderNo,
channelServiceNo: payDataResult.data.erpOrderId,
needNo: pobj.actionBody.itemCode + "_" + payDataResult.data.orderNumber,
needNoOrderNo: payDataResult.data.orderNumber
},
isUser: "yes"
};
console.log(param, "putPayOrderData########################################333333...........................");
var reqUrl = this.channelApiUrl + "/action/tmOrder/springBoard";
var tmp = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
console.log(tmp, "putPayOrderData########################################333333..........tmptmptmptmp.................");
} }
async getPayPageAddr(itemCode, itemCodeList, req) { async pushJdPayOrder(pushData, req) {//处理京东推送的订单信息
try { try {
var signResult = await this.createSign(pushData, "6B876EB84731E166D76E1F73AD5764BA", true);
if (signResult.status != 0) {
return signResult;
}
if (signResult.data != pushData.token.toUpperCase()) {
return system.getResult(null, "签名错误");
}
var tokenInfo = await this.getToken(pushData.actionProcess);
if (tokenInfo.status != 0) {
return tokenInfo;
}
var param = {};
if (pushData.skuId == "FW_GOODS-581976-1") {
param = {
actionProcess: pushData.actionProcess,
actionType: "updateOrderPayStatus",
actionBody: {
channelUserId: pushData.jdPin,
payStatus: "yfk",
channelItemCode: pushData.serviceCode,
needNoOrderNo: pushData.orderId,
buyerMoblie: pushData.mobile
},
isUser: "yes"
};
}//自助注册产品
else {
//有返回用户信息进行用户ID加密
param = {
actionProcess: pushData.actionProcess,
actionType: "addOrderAndDelivery",
actionBody: {
channelUserId: pushData.jdPin,
needNo: pushData.skuId + "_" + pushData.orderId,
needNoOrderNo: pushData.orderId,
buyerMoblie: pushData.mobile
},
isUser: "yes"
};
}//商标注册【专家辅助申请】、商标注册【担保申请】和 除商标之外的产品
var reqUrl = this.channelApiUrl + "/action/tmOrder/springBoard";
var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
if (!resultUser) {
return system.getResult(null, "req error");
}
return resultUser;
} catch (error) {
console.log(error.stack, "操作error...................");
return system.getResultFail(-200, "操作error");
}
}
//----------------------------jd------操作------------end
//----------------------------gsb------操作------------start
async opGsbPayPageInfo(pobj, orderResult, req) {//操作下单的数据跟渠道订单关联
if (!pobj.actionBody.itemCode) {
return system.getResult(null, "itemCode param is not empty");
}
return system.getResultSuccess();
}
async getGsbPayPageAddr(itemCode, itemCodeList, req) {//获取京东下单
try {
const { Signer, Context } = require('../jd-gateway-sdk'); const { Signer, Context } = require('../jd-gateway-sdk');
let ctx = new Context('x3k0s704lfun.cn-north-1.jdcloud-api.net', '/market/order/api/submit', 'POST', null, 'empty'); let ctx = new Context('x3k0s704lfun.cn-north-1.jdcloud-api.net', '/market/order/api/submit', 'POST', null, 'empty');
ctx.regionId = 'cn-north-1' ctx.regionId = 'cn-north-1'
...@@ -408,8 +568,8 @@ class tmqueryCtl extends CtlBase { ...@@ -408,8 +568,8 @@ class tmqueryCtl extends CtlBase {
options.headers[key] = value options.headers[key] = value
} }
this.logClient.info("jd", "req---->getPayPageAddr---->options:" + JSON.stringify(options)); this.logClient.info("jd", "req---->getJdPayPageAddr---->options:" + JSON.stringify(options));
this.logClient.info("jd", "req---->getPayPageAddr---->tmpContent:" + tmpContent); this.logClient.info("jd", "req---->getJdPayPageAddr---->tmpContent:" + tmpContent);
var reqResult = await new Promise(function (resolve, reject) { var reqResult = await new Promise(function (resolve, reject) {
let req = http.request(options, function (res) { let req = http.request(options, function (res) {
// res.setEncoding(encoding); // res.setEncoding(encoding);
...@@ -433,11 +593,11 @@ class tmqueryCtl extends CtlBase { ...@@ -433,11 +593,11 @@ class tmqueryCtl extends CtlBase {
}); });
return reqResult; return reqResult;
} catch (errorMsg) { } catch (errorMsg) {
this.logClient.error("jd", "req---->getPayPageAddr---->error:" + error.stack); this.logClient.error("jd", "req---->getJdPayPageAddr---->error:" + error.stack);
return { success: false, code: -200, msg: error.stack }; return { success: false, code: -200, msg: error.stack };
} }
} }
async pushPayOrder(pushData, req) {//处理京东推送的订单信息 async pushGsbPayOrder(pushData, req) {//处理京东推送的订单信息
try { try {
var signResult = await this.createSign(pushData, "6B876EB84731E166D76E1F73AD5764BA", true); var signResult = await this.createSign(pushData, "6B876EB84731E166D76E1F73AD5764BA", true);
if (signResult.status != 0) { if (signResult.status != 0) {
...@@ -491,6 +651,7 @@ class tmqueryCtl extends CtlBase { ...@@ -491,6 +651,7 @@ class tmqueryCtl extends CtlBase {
return system.getResultFail(-200, "操作error"); return system.getResultFail(-200, "操作error");
} }
} }
//----------------------------gsb------操作------------end
} }
module.exports = tmqueryCtl; module.exports = tmqueryCtl;
...@@ -3,6 +3,9 @@ var system = require("../../base/system"); ...@@ -3,6 +3,9 @@ var system = require("../../base/system");
var metaCtl = system.getObject("web.common.metaCtl"); var metaCtl = system.getObject("web.common.metaCtl");
var tmqueryCtl = system.getObject("web.trademark.tmqueryCtl"); var tmqueryCtl = system.getObject("web.trademark.tmqueryCtl");
var logClient = system.getObject("util.logClient"); var logClient = system.getObject("util.logClient");
const jwt = require('jsonwebtoken');
const secret = '3rZ3aNfGAyQAB4sE'; //自定义
module.exports = function (app) { module.exports = function (app) {
app.get("/jdtm/getUser", async function (req, res) { app.get("/jdtm/getUser", async function (req, res) {
try { try {
...@@ -53,7 +56,7 @@ module.exports = function (app) { ...@@ -53,7 +56,7 @@ module.exports = function (app) {
clientIp: "" clientIp: ""
}); });
req.query.actionProcess = "jd"; req.query.actionProcess = "jd";
var result = await tmqueryCtl.pushPayOrder(req.query, req); var result = await tmqueryCtl.pushJdPayOrder(req.query, req);
logClient.payLog("jd", { logClient.payLog("jd", {
optitle: "###操作订单结果...orderNotify", optitle: "###操作订单结果...orderNotify",
op: "/jd/orderNotify", op: "/jd/orderNotify",
...@@ -154,6 +157,37 @@ module.exports = function (app) { ...@@ -154,6 +157,37 @@ module.exports = function (app) {
res.redirect(skipUrl); res.redirect(skipUrl);
}); });
app.get("/gsb/selfRegister", async function (req, res) {
var skipUrl = "/#/gsb/selftmreg?channelUserId=";
var token = req.cookies.ic_token;
if (!token) {
res.redirect(skipUrl);
return;
}
var userInfo = jwt.verify(token, secret, function (err, decoded) {
if (err) {
return system.getResult(null, "验证token失败");
}
else {
return system.getResultSuccess(decoded);
}
});
if (userInfo.status != 0) {
res.redirect(skipUrl);
return;
}
var getUserparams = {
actionProcess: "gsb",
channelUserId: userInfo.data.phone + "_" + userInfo.data.id
};
var userItemResult = await tmqueryCtl.getUserIdEncryptStr(getUserparams, req.query, req);
if (userItemResult.status != 0) {
res.redirect(skipUrl);
return;
}
skipUrl = skipUrl + encodeURIComponent(userItemResult.data.encryptChannelUserId);
res.redirect(skipUrl);
});
app.get("/", async function (req, res) { app.get("/", async function (req, res) {
try { try {
var appinfo = await metaCtl.getAppInfo(req); var appinfo = await metaCtl.getAppInfo(req);
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
"gulp-sass": "^4.0.2", "gulp-sass": "^4.0.2",
"http-proxy-middleware": "^0.20.0", "http-proxy-middleware": "^0.20.0",
"jdcloud-sdk-signer": "^2.0.1", "jdcloud-sdk-signer": "^2.0.1",
"jsonwebtoken": "^8.5.1",
"log4js": "^6.1.0", "log4js": "^6.1.0",
"method-override": "^2.3.10", "method-override": "^2.3.10",
"morgan": "^1.9.0", "morgan": "^1.9.0",
......
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