Commit 90a31188 by wkliang

Merge branch 'center-channel' of http://gitlab.gongsibao.com/jiangyong/zhichan into center-channel

parents fc212867 9aa53296
...@@ -2,6 +2,8 @@ const system = require("../../../system"); ...@@ -2,6 +2,8 @@ const system = require("../../../system");
var settings = require("../../../../config/settings"); var settings = require("../../../../config/settings");
const querystring = require('querystring'); const querystring = require('querystring');
const AppServiceBase = require("../../app.base"); const AppServiceBase = require("../../app.base");
const axios = require('axios')
const md5 = require('md5')
class UtilsOrderService extends AppServiceBase { class UtilsOrderService extends AppServiceBase {
constructor() { constructor() {
super(); super();
...@@ -477,6 +479,7 @@ class UtilsOrderService extends AppServiceBase { ...@@ -477,6 +479,7 @@ class UtilsOrderService extends AppServiceBase {
if (parmas.trade_status != "TRADE_FINISHED" && parmas.trade_status != "TRADE_SUCCESS") { if (parmas.trade_status != "TRADE_FINISHED" && parmas.trade_status != "TRADE_SUCCESS") {
return system.getResult(null, "trade_status状态有误,100473"); return system.getResult(null, "trade_status状态有误,100473");
} }
// 2020 0621验签操作
var url = this.centerAppUrl + "payment/aliPayment/verifyAliPayReturnSign"; var url = this.centerAppUrl + "payment/aliPayment/verifyAliPayReturnSign";
var opResult = await this.restPostUrl(parmas, url); var opResult = await this.restPostUrl(parmas, url);
if (opResult.status != 0) { if (opResult.status != 0) {
...@@ -561,10 +564,188 @@ class UtilsOrderService extends AppServiceBase { ...@@ -561,10 +564,188 @@ class UtilsOrderService extends AppServiceBase {
} }
async aliPayNotify(pobj) { // 微信支付回调 async aliPayNotify(parmas, client_ip) { // 支付宝回调
return { try {
code:0, //日志记录
msg:"success" this.logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "支付宝回调参数信息",
op: "service/impl/utilsSve/utilsOrderSve.js/aliPayNotify",
content: JSON.stringify(parmas),
clientIp: client_ip || ""
});
if (!parmas.trade_status) {
return system.getResult(null, "trade_status参数不能为空,100470");
}
if (parmas.trade_status != "TRADE_FINISHED" && parmas.trade_status != "TRADE_SUCCESS") {
return system.getResult(null, "trade_status状态有误,100473");
}
// 2020 0621 支付宝验签接口
// var url = "https://yf-api.gongsibao.com/pay/v1/checkAliPaySign";
// let params = {
// "app": "ukgc", //应用名称 固定
// "key": "a1519e2eab53dfb909e4c32a86b2ea2b", //应用 key 固定
// "tData" : params
// }
// var sign = JSON.stringify(params);
// sign += "ab53dfb909e4c32a"
// sign = md5(sign).toUpperCase()
// params.sign = sign
// let res = await axios.post(url, params)
// if (res.status != 0) {
// res.msg = res.msg + ",100480";
// return res;
// }
// 模拟验签结果
var outTradeInfo = parmas.out_trade_no.split('-');
//
var opResult = {}
opResult.data = {
orderNo: outTradeInfo[0],
uappId: Number(outTradeInfo[1]),
productId: outTradeInfo.length == 3 ? Number(outTradeInfo[2]) : 0
}
// 拿锁
var locker = await this.cacheManager["TlPayLocker"].enter(opResult.data.orderNo);
if (!locker || locker != "1") {
this.logCtl.info({
appid: opResult.data.uappId,
appkey: "",
op: "service/impl/utilsSve/utilsOrderSve.js/aliPayNotify",
content: "参数=" + JSON.stringify(parmas),
clientIp: parmas.client_ip || "",
optitle: "阿里回调操作频繁---太频繁了,太频繁了"
});
return system.getResultFail(-200, "阿里回调操作频繁---太频繁了,太频繁了");
}
parmas.appInfo = { appInfo: { uapp_id: opResult.data.uappId } };
parmas.orderNo = opResult.data.orderNo;
parmas.pay_type = "alipay";
//修改并返回订单支付状态,创建收款单
// 这里修改了order_info的状态(status/paytime等)
var url = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByAliDing";
var opOrderResult = await this.restPostUrl(parmas, url);
if (opOrderResult.status != 0) {
opOrderResult.data = null;
return opOrderResult;
}
opOrderResult.data.appInfo = {
uapp_id: opResult.data.uappId
};
opOrderResult.data.userInfo = {
channel_userid: opOrderResult.data.order_info.channelUserId,
channel_username: opOrderResult.data.order_info.channelUserId,
channel_nickname: opOrderResult.data.order_info.channelUserId
};
opOrderResult.data.orderNo = opResult.data.orderNo;
var pobj = {
appInfo: opOrderResult.data.appInfo,
actionBody: opOrderResult.data
}
this.utilsPushSve.pushBusInfo(pobj, "createAliTmApply", 1);
opOrderResult.data = null;
return opOrderResult;
} catch (e) {
await this.cacheManager["TlPayLocker"].release(parmas.out_trade_no);
this.logCtl.error({
optitle: "回调处理订单---error异常",
op: "center-app/app/base/service/impl/utilsSve/utilstlbankSve.js/opBackNotify",
content: "参数=" + JSON.stringify(parmas) + ",error:" + e.stack,
clientIp: client_ip || ""
});
return system.getResultFail(-200, e.stack);
}
}
async wxPayNotify(parmas, client_ip) { // 微信宝回调
try {
//日志记录
this.logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "微信回调参数信息",
op: "service/impl/utilsSve/utilsOrderSve.js/wxPayNotify",
content: JSON.stringify(parmas),
clientIp: client_ip || ""
});
if (!parmas.trade_status) {
return system.getResult(null, "trade_status参数不能为空,100470");
}
if (parmas.trade_status != "TRADE_FINISHED" && parmas.trade_status != "TRADE_SUCCESS") {
return system.getResult(null, "trade_status状态有误,100473");
}
// 2020 0621 支付宝验签接口
// var url = "https://yf-api.gongsibao.com/pay/v1/checkAliPaySign";
// let params = {
// "app": "ukgc", //应用名称 固定
// "key": "a1519e2eab53dfb909e4c32a86b2ea2b", //应用 key 固定
// "tData" : params
// }
// var sign = JSON.stringify(params);
// sign += "ab53dfb909e4c32a"
// sign = md5(sign).toUpperCase()
// params.sign = sign
// let res = await axios.post(url, params)
// if (res.status != 0) {
// res.msg = res.msg + ",100480";
// return res;
// }
// 模拟验签结果
var outTradeInfo = parmas.out_trade_no.split('-');
//
var opResult = {}
opResult.data = {
orderNo: outTradeInfo[0],
uappId: Number(outTradeInfo[1]),
productId: outTradeInfo.length == 3 ? Number(outTradeInfo[2]) : 0
}
// 拿锁
var locker = await this.cacheManager["TlPayLocker"].enter(opResult.data.orderNo);
if (!locker || locker != "1") {
this.logCtl.info({
appid: opResult.data.uappId,
appkey: "",
op: "service/impl/utilsSve/utilsOrderSve.js/wxPayNotify",
content: "参数=" + JSON.stringify(parmas),
clientIp: parmas.client_ip || "",
optitle: "微信回调操作频繁---太频繁了,太频繁了"
});
return system.getResultFail(-200, "微信回调操作频繁---太频繁了,太频繁了");
}
parmas.appInfo = { appInfo: { uapp_id: opResult.data.uappId } };
parmas.orderNo = opResult.data.orderNo;
parmas.pay_type = "alipay";
//修改并返回订单支付状态,创建收款单
// 这里修改了order_info的状态(status/paytime等)
var url = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByAliDing";
var opOrderResult = await this.restPostUrl(parmas, url);
if (opOrderResult.status != 0) {
opOrderResult.data = null;
return opOrderResult;
}
opOrderResult.data.appInfo = {
uapp_id: opResult.data.uappId
};
opOrderResult.data.userInfo = {
channel_userid: opOrderResult.data.order_info.channelUserId,
channel_username: opOrderResult.data.order_info.channelUserId,
channel_nickname: opOrderResult.data.order_info.channelUserId
};
opOrderResult.data.orderNo = opResult.data.orderNo;
var pobj = {
appInfo: opOrderResult.data.appInfo,
actionBody: opOrderResult.data
}
this.utilsPushSve.pushBusInfo(pobj, "createAliTmApply", 1);
opOrderResult.data = null;
return opOrderResult;
} catch (e) {
await this.cacheManager["TlPayLocker"].release(parmas.out_trade_no);
this.logCtl.error({
optitle: "回调处理订单---error异常",
op: "center-app/app/base/service/impl/utilsSve/utilstlbankSve.js/opBackNotify",
content: "参数=" + JSON.stringify(parmas) + ",error:" + e.stack,
clientIp: client_ip || ""
});
return system.getResultFail(-200, e.stack);
} }
} }
} }
......
...@@ -4,6 +4,10 @@ const utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve"); ...@@ -4,6 +4,10 @@ const utilsAuthSve = system.getObject("service.utilsSve.utilsAuthSve");
const logCtl = system.getObject("service.common.oplogSve"); const logCtl = system.getObject("service.common.oplogSve");
const utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve"); const utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve");
const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve"); const utilsFeishuSve = system.getObject("service.utilsSve.utilsFeishuSve");
var axios = require('axios');
var md5 = require('md5');
var xml2js = require('xml2js');
module.exports = function (app) { module.exports = function (app) {
//-----------------------新的模式---------web---------开始 //-----------------------新的模式---------web---------开始
...@@ -419,15 +423,50 @@ module.exports = function (app) { ...@@ -419,15 +423,50 @@ module.exports = function (app) {
// 支付回调通知 // 支付回调通知
app.post('/orderNotify/aliPayNotify', async function (req, res) { app.post('/orderNotify/aliPayNotify', async function (req, res) {
try{
var client_ip = system.get_client_ip(req); var client_ip = system.get_client_ip(req);
var result = await utilsOrderSve.aliPayNotify(req.body); var result = await utilsOrderSve.aliPayNotify(req.body, client_ip);
logCtl.info({ logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "aliPayNotify记录回调处理结果,method=notify", optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "记录支付宝回调处理结果",
op: "app/config/routes/api.js/orderNotify/aliPayNotify", op: "center-channel/orderNotify/aliPayNotify",
content: "回调参数:" + JSON.stringify(req.body) + "回调结果:" + JSON.stringify(result), content: "支付回调处理结果:" + JSON.stringify(result),
clientIp: client_ip || "" clientIp: client_ip || ""
}); });
var returnObj = JSON.stringify(result); if (result.status != 0) {
return res.end(returnObj); return res.end("FAIL");
}
return res.end("success");
} catch {
logCtl.error({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "支付宝回调处理异常",
op: "center-channel/orderNotify/aliPayNotify",
content: "回调参数:req=" + JSON.stringify(req) + "error:" + error.stack,
clientIp: client_ip || ""
});
}
});
// wx支付回调
app.post('/orderNotify/wxPayNotify', async function (req, res) {
try{
var client_ip = system.get_client_ip(req);
var result = await utilsOrderSve.wxPayNotify(req.body);
logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "记录微信支付回调处理结果",
op: "center-channel/orderNotify/wxPayNotify",
content: "支付回调处理结果:" + JSON.stringify(result),
clientIp: client_ip || ""
});
if (result.status != 0) {
return res.end("FAIL");
}
return res.end("success");
} catch {
logCtl.error({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "微信回调处理异常",
op: "center-channel/orderNotify/wxPayNotify",
content: "回调参数:req=" + JSON.stringify(req) + "error:" + error.stack,
clientIp: client_ip || ""
});
}
}); });
}; };
\ No newline at end of file
...@@ -7925,14 +7925,6 @@ ...@@ -7925,14 +7925,6 @@
"resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz", "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
"integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==" "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
}, },
"var": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/var/-/var-0.4.0.tgz",
"integrity": "sha512-olxlLAssnt9UPL5UAErYTaCJhpwaDfkuSxOEB5eUclEJbl4xi7EhOIaOh6Y8KTQHIKUnyd2DygRLSnTaXtXuGg==",
"requires": {
"lodash": "^4.17.4"
}
},
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
......
...@@ -55,7 +55,8 @@ ...@@ -55,7 +55,8 @@
"socket.io": "^2.1.1", "socket.io": "^2.1.1",
"tenpay": "^2.1.18", "tenpay": "^2.1.18",
"uuid": "^3.2.1", "uuid": "^3.2.1",
"wx-pay": "^1.0.2" "wx-pay": "^1.0.2",
"xml2js": "^0.4.23"
}, },
"devDependencies": { "devDependencies": {
"element-theme": "^2.0.1", "element-theme": "^2.0.1",
......
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