Commit 58ee6a6a by 宋毅

rj

parent 487e1702
......@@ -8,7 +8,8 @@ class tmqueryCtl extends CtlBase {
this.channelApiUrl = settings.channelApiUrl();
this.appInfo = {
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");
......@@ -110,8 +111,8 @@ class tmqueryCtl extends CtlBase {
return system.getResult(null, "处理请求失败");
}
if (["jd"].indexOf(pobj.actionProcess) >= 0 && pobj.actionType == "subTmOrder") {
var opPayPageInfoResult = await this.opPayPageInfo(pobj, result, req);
return opPayPageInfoResult;
var opJdPayPageInfoResult = await this.opJdPayPageInfo(pobj, result, req);
return opJdPayPageInfoResult;
}
return result;
} catch (e) {
......@@ -131,6 +132,9 @@ class tmqueryCtl extends CtlBase {
case "1688":
reqParam = self.appInfo["1688"];
break;
case "gsb":
reqParam = self.appInfo["gsb"];
break;
default:
break;
}
......@@ -213,10 +217,10 @@ class tmqueryCtl extends CtlBase {
var reqUrl = this.channelApiUrl + "/action/tmTools/springBoard";
var resultUser = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
if (!resultUser) {
return system.getResult(null, "req encrypt userId is error");
return system.getResult(null, "encryptStr resultUser is empty");
}
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 || "";
return system.getResultSuccess({ encryptChannelUserId: resultUser.data || "" });
......@@ -250,6 +254,30 @@ class tmqueryCtl extends CtlBase {
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) {
try {
// this.logClient.info("jd", "getUserInfo--info--->pobj:" + JSON.stringify(pobj));
......@@ -297,8 +325,7 @@ class tmqueryCtl extends CtlBase {
return system.getResultFail(-200, "操作error");
}
}
async opPayPageInfo(pobj, orderResult, req) {
async opJdPayPageInfo(pobj, orderResult, req) {//操作下单的数据跟渠道订单关联
if (!pobj.actionBody.itemCode) {
return system.getResult(null, "itemCode param is not empty");
}
......@@ -307,19 +334,22 @@ class tmqueryCtl extends CtlBase {
if (itemCodeList.length < 2) {
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,
// data:
// '{"success":true,"code":null,"msg":null,"data":{"orderNumber":"6058867","erpOrderId":"523198741458590844",
// "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) {
var payDataResult = JSON.parse(tmpResult.data);
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 });
}//成功
}
......@@ -327,31 +357,161 @@ class tmqueryCtl extends CtlBase {
}
return system.getResultSuccess();
}
async putPayOrderData(pobj, orderResult, payDataResult, req) {
var tokenInfo = await this.getToken(pobj.actionProcess);
async getJdPayPageAddr(itemCode, itemCodeList, req) {//获取京东下单
try {
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 };
}
}
async pushJdPayOrder(pushData, req) {//处理京东推送的订单信息
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 = {
actionProcess: pobj.actionProcess,
actionType: "updateOrderStatus",
var param = {};
if (pushData.skuId == "FW_GOODS-581976-1") {
param = {
actionProcess: pushData.actionProcess,
actionType: "updateOrderPayStatus",
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
channelUserId: pushData.jdPin,
payStatus: "yfk",
channelItemCode: pushData.serviceCode,
needNoOrderNo: pushData.orderId,
buyerMoblie: pushData.mobile
},
isUser: "yes"
};
console.log(param, "putPayOrderData########################################333333...........................");
}//自助注册产品
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 tmp = await this.execClient.execPostTK(param, reqUrl, tokenInfo.data.token);
console.log(tmp, "putPayOrderData########################################333333..........tmptmptmptmp.................");
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 getPayPageAddr(itemCode, itemCodeList, req) {
try {
async getGsbPayPageAddr(itemCode, itemCodeList, req) {//获取京东下单
try {
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'
......@@ -408,8 +568,8 @@ class tmqueryCtl extends CtlBase {
options.headers[key] = value
}
this.logClient.info("jd", "req---->getPayPageAddr---->options:" + JSON.stringify(options));
this.logClient.info("jd", "req---->getPayPageAddr---->tmpContent:" + tmpContent);
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);
......@@ -433,11 +593,11 @@ class tmqueryCtl extends CtlBase {
});
return reqResult;
} 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 };
}
}
async pushPayOrder(pushData, req) {//处理京东推送的订单信息
async pushGsbPayOrder(pushData, req) {//处理京东推送的订单信息
try {
var signResult = await this.createSign(pushData, "6B876EB84731E166D76E1F73AD5764BA", true);
if (signResult.status != 0) {
......@@ -491,6 +651,7 @@ class tmqueryCtl extends CtlBase {
return system.getResultFail(-200, "操作error");
}
}
//----------------------------gsb------操作------------end
}
module.exports = tmqueryCtl;
......@@ -3,6 +3,9 @@ var system = require("../../base/system");
var metaCtl = system.getObject("web.common.metaCtl");
var tmqueryCtl = system.getObject("web.trademark.tmqueryCtl");
var logClient = system.getObject("util.logClient");
const jwt = require('jsonwebtoken');
const secret = '3rZ3aNfGAyQAB4sE'; //自定义
module.exports = function (app) {
app.get("/jdtm/getUser", async function (req, res) {
try {
......@@ -53,7 +56,7 @@ module.exports = function (app) {
clientIp: ""
});
req.query.actionProcess = "jd";
var result = await tmqueryCtl.pushPayOrder(req.query, req);
var result = await tmqueryCtl.pushJdPayOrder(req.query, req);
logClient.payLog("jd", {
optitle: "###操作订单结果...orderNotify",
op: "/jd/orderNotify",
......@@ -154,6 +157,37 @@ module.exports = function (app) {
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) {
try {
var appinfo = await metaCtl.getAppInfo(req);
......
......@@ -36,6 +36,7 @@
"gulp-sass": "^4.0.2",
"http-proxy-middleware": "^0.20.0",
"jdcloud-sdk-signer": "^2.0.1",
"jsonwebtoken": "^8.5.1",
"log4js": "^6.1.0",
"method-override": "^2.3.10",
"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