Commit 9a1f666d by 庄冰

tlpay

parent 16656560
var APIBase = require("../../api.base");
var system = require("../../../system");
var settings = require("../../../../config/settings");
class IcOrderAPI extends APIBase {
constructor() {
super();
this.orderSve = system.getObject("service.dborder.orderSve");
}
/**
* 接口跳转-POST请求
* action_process 执行的流程
* action_type 执行的类型
* action_body 执行的参数
*/
async springBoard(pobj, qobj, req) {
if (!pobj.actionProcess) {
return system.getResult(null, "actionProcess参数不能为空");
}
if (!pobj.actionType) {
return system.getResult(null, "actionType参数不能为空");
}
var result = null;
switch (pobj.actionProcess) {
case "jd"://京东
result = await this.opActionProcess(pobj.actionProcess, pobj.actionType, pobj.actionBody, pobj, req);
break;
case "1688"://1688
result = await this.opActionProcess(pobj.actionProcess, pobj.actionType, pobj.actionBody, pobj, req);
break;
case "gsbhome"://gsb_homepage
result = await this.opActionProcess(pobj.actionProcess, pobj.actionType, pobj.actionBody, pobj, req);
break;
default:
result = system.getResult(null, "actionProcess参数错误");
break;
}
return result;
}
async opActionProcess(action_process, action_type, action_body, pobj, req) {
action_body.app = req.app;
action_body.user = req.user;
var opResult = null;
if (["getIcOrderList", "addOrderAndDelivery"].indexOf(action_type) >= 0) {
if (!action_body.channelUserId) {
return system.getResult(null, "verify channelUserId is empty");
}
}
switch (action_type) {
case "addOrderAndDelivery"://创建订单和交付单
opResult = await this.orderSve.addOrderAndDelivery(action_body, pobj, req);
break;
case "getOrderDetailByOrderNo"://获取订单详情
opResult = system.getResultSuccess(null, "测试成功");
break;
case "getIcOrderList"://工商交付列表
opResult = system.getResultSuccess(null, "测试成功");
break;
case "getIcOrderListAdmin"://工商交付列表
opResult = system.getResultSuccess(null, "测试成功");
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
}
return opResult;
}
}
module.exports = IcOrderAPI;
\ No newline at end of file
...@@ -254,9 +254,9 @@ class TmOrderAPI extends APIBase { ...@@ -254,9 +254,9 @@ class TmOrderAPI extends APIBase {
case "getTlPayQrCode"://获取通联支付二维码(未测试) case "getTlPayQrCode"://获取通联支付二维码(未测试)
opResult = await this.orderSve.getTlPayQrCode(action_body); opResult = await this.orderSve.getTlPayQrCode(action_body);
break; break;
case "receiveTlCallBackNotify"://接收通联支付回调通知(未测试) // case "receiveTlCallBackNotify"://接收通联支付回调通知(未测试)
opResult = await this.orderSve.receiveTlCallBackNotify(action_body); // opResult = await this.orderSve.receiveTlCallBackNotify(action_body);
break; // break;
default: default:
opResult = system.getResult(null, "action_type参数错误"); opResult = system.getResult(null, "action_type参数错误");
break; break;
......
...@@ -15,6 +15,7 @@ class OrderService extends ServiceBase { ...@@ -15,6 +15,7 @@ class OrderService extends ServiceBase {
// this.fqReqUrl = "https://yunfuapi-dev.gongsibao.com";//dev域名 // this.fqReqUrl = "https://yunfuapi-dev.gongsibao.com";//dev域名
this.restClient = system.getObject("util.restClient"); this.restClient = system.getObject("util.restClient");
this.appDao = system.getObject("db.dbapp.appDao"); this.appDao = system.getObject("db.dbapp.appDao");
this.orderReceiptVoucherDao = system.getObject("db.dbcpay.orderreceiptvoucherDao");
} }
async addOrderAndDelivery(action_body, pobj, req) { async addOrderAndDelivery(action_body, pobj, req) {
...@@ -815,43 +816,9 @@ class OrderService extends ServiceBase { ...@@ -815,43 +816,9 @@ class OrderService extends ServiceBase {
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
return result; return result;
} }
async resultSign(resultData, pay_key) {//返回值进行验签
var rtnResult = { status: 0, msg: "SUCCESS" };
if (!resultData || !resultData.appid) {
rtnResult.status = -310;
rtnResult.msg = "返回值信息data为空";
return rtnResult;
}
resultData.key = pay_key;
var resultSignArr = [];
var keys = Object.keys(resultData).sort();
if (keys.length == 0) {
rtnResult.status = -330;
rtnResult.msg = "返回值参数信息为空";
return rtnResult;
}
for (let k = 0; k < keys.length; k++) {
const tKey = keys[k];
if (tKey != "sign" && resultData[tKey]) {
resultSignArr.push(tKey + "=" + resultData[tKey]);
}
}
if (resultSignArr.length == 0) {
rtnResult.status = -350;
rtnResult.msg = "返回值组装签名参数信息为空";
return rtnResult;
}
var resultSignStr = resultSignArr.join("&");
var resultTmpSign = md5(resultSignStr).toUpperCase();
delete resultData["key"];
if (resultData.sign != resultTmpSign) {
rtnResult.status = -380;
rtnResult.msg = "返回值签名验证失败";
return rtnResult;
}
return rtnResult;
}
async receiveTlCallBackNotify(obj) {//接收通联支付回调通知 async receiveTlCallBackNotify(obj) {//接收通联支付回调通知
try {
if (obj && obj.trxstatus == "0000") { if (obj && obj.trxstatus == "0000") {
let attachList = []; let attachList = [];
if (obj.cusorderid.indexOf("_") >= 0) { if (obj.cusorderid.indexOf("_") >= 0) {
...@@ -865,13 +832,13 @@ class OrderService extends ServiceBase { ...@@ -865,13 +832,13 @@ class OrderService extends ServiceBase {
} }
obj.out_trade_no = attachList[0]; obj.out_trade_no = attachList[0];
obj.company_id = attachList[1]; obj.company_id = attachList[1];
var app = await this.appDao.findOne({ var app = await this.appDao.model.findOne({
where:{uAppId:obj.company_id},raw:true where:{uAppId:obj.company_id},raw:true
}); });
if(!app){ if(!app){
return system.getResultFail(-100, "渠道参数错误"); return system.getResultFail(-100, "渠道参数错误");
} }
var resultSign = await this.resultSign(obj,app.appSecret); var resultSign = await this.resultTlSign(obj,app.appSecret);
if(!resultSign || resultSign.status<0){ if(!resultSign || resultSign.status<0){
return resultSign; return resultSign;
} }
...@@ -892,17 +859,18 @@ class OrderService extends ServiceBase { ...@@ -892,17 +859,18 @@ class OrderService extends ServiceBase {
return system.getResultFail(-104, "超时未支付,queryTlPayOrder新页面"); return system.getResultFail(-104, "超时未支付,queryTlPayOrder新页面");
} }
return system.getResultFail(-105, "请及时支付"); return system.getResultFail(-105, "请及时支付");
} catch (e) {
return system.getResultFail(-200, e.stack);
}
} }
async checkPayStatusTl(obj) {//通联支付状态验证 async checkPayStatusTl(obj) {//通联支付状态验证
var wxPayOrderCode = obj.wxPayOrderCode || ""; var wxPayOrderCode = obj.wxPayOrderCode || "";
var aliPayOrderCode = obj.aliPayOrderCode || ""; var aliPayOrderCode = obj.aliPayOrderCode || "";
var comanyId = obj.company_id; var app = obj.app;
var app = await this.appDao.findOne({
where:{uAppId:comanyId},raw:true
});
if(!app){ if(!app){
return system.getResultFail(-100, "渠道参数错误"); return system.getResultFail(-100, "渠道参数错误");
} }
var comanyId = app.uAppId;
var opType = obj.op_type; var opType = obj.op_type;
var orderCode = obj.orderCode; var orderCode = obj.orderCode;
if (!wxPayOrderCode || !aliPayOrderCode || !comanyId || !opType || !orderCode) { if (!wxPayOrderCode || !aliPayOrderCode || !comanyId || !opType || !orderCode) {
...@@ -966,6 +934,9 @@ class OrderService extends ServiceBase { ...@@ -966,6 +934,9 @@ class OrderService extends ServiceBase {
return system.getResult(null, "execPost is empty"); return system.getResult(null, "execPost is empty");
} }
var result = JSON.parse(rtn.stdout); var result = JSON.parse(rtn.stdout);
if(result && result.status==0 && result.data && result.data.trxid ){
await this.cacheManager["ZxPayLocker"].init(result.data.trxid);
}
return result; return result;
} }
//操作回调业务逻辑 //操作回调业务逻辑
...@@ -979,6 +950,7 @@ class OrderService extends ServiceBase { ...@@ -979,6 +950,7 @@ class OrderService extends ServiceBase {
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + ":支付回调信息=====" + opDesc + ",method=" + getParams.trxcode optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + ":支付回调信息=====" + opDesc + ",method=" + getParams.trxcode
}); });
//获取充值业务锁 //获取充值业务锁
// await this.cacheManager["ZxPayLocker"].init(getParams.trxid);
var locker = await this.cacheManager["ZxPayLocker"].enter(getParams.trxid); var locker = await this.cacheManager["ZxPayLocker"].enter(getParams.trxid);
if (locker && locker == "1") { if (locker && locker == "1") {
if (getParams.trxcode == "VSP501") { if (getParams.trxcode == "VSP501") {
...@@ -1002,7 +974,8 @@ class OrderService extends ServiceBase { ...@@ -1002,7 +974,8 @@ class OrderService extends ServiceBase {
} }
} catch (e) { } catch (e) {
await this.cacheManager["ZxPayLocker"].release(getParams.trxid); await this.cacheManager["ZxPayLocker"].release(getParams.trxid);
throw new Error(e.stack); // throw new Error(e.stack);
return system.getResultFail(-200, e.stack);
} }
} }
/* /*
...@@ -1020,9 +993,9 @@ class OrderService extends ServiceBase { ...@@ -1020,9 +993,9 @@ class OrderService extends ServiceBase {
if(obj.req_accountType == "alipay") { if(obj.req_accountType == "alipay") {
accountType = "alipay"; accountType = "alipay";
} }
var account_type_list = uiconfig.config.pdict.accountType; // var account_type_list = uiconfig.config.pdict.accountType;
var account_type_name = account_type_list[obj.req_accountType]; // var account_type_name = account_type_list[obj.req_accountType];
obj.account_type_name = account_type_name; // obj.account_type_name = account_type_name;
var sqlWheres = { orderNo: obj.out_trade_no,app_id:app.id }; var sqlWheres = { orderNo: obj.out_trade_no,app_id:app.id };
var orderItem = await this.dao.model.findOne({ var orderItem = await this.dao.model.findOne({
where: sqlWheres, where: sqlWheres,
...@@ -1038,23 +1011,23 @@ class OrderService extends ServiceBase { ...@@ -1038,23 +1011,23 @@ class OrderService extends ServiceBase {
return system.getResultFail(-480, "订单状态有误"); return system.getResultFail(-480, "订单状态有误");
} }
var self = this; var self = this;
await this.db.transaction(async function (t) { return await this.db.transaction(async function (t) {
// 订单付款状态dfk: 待付款, zfpz: 已上传支付凭证, yfk: 已付款, ddqx: 订单取消, tkclz: 退款处理中, bfytk: 部分已退款, ytk: 已退款,zfshbtg:支付审核不通过 // 订单付款状态dfk: 待付款, zfpz: 已上传支付凭证, yfk: 已付款, ddqx: 订单取消, tkclz: 退款处理中, bfytk: 部分已退款, ytk: 已退款,zfshbtg:支付审核不通过
var putParams = { orderPayStatus: "yfk",payDate:obj.fintime}; var putParams = { orderPayStatus: "yfk",payDate:new Date()};
await self.orderDao.updateByWhere(putParams, { where: sqlWheres }, t); await self.dao.updateByWhere(putParams, { where: sqlWheres }, t);
//订单流程log //订单流程log
self.orderflowDao.create({ self.orderflowDao.create({
app_id: app.id,isShow: 1, app_id: app.id,isShow: 1,
createuser_id: orderItem.createuser_id, createuser_id: orderItem.createuser_id,
sourceOrderNo: orderItem.orderNo, sourceOrderNo: orderItem.orderNo,
opContent: "订单已成功支付,方式为" + account_type_name, opContent: "订单已成功支付,方式为" + accountType,
}, t); }, t);
//帐户类型( 支付类型):cash: 现金, bank: 银行 ,wx:微信,alipay:支付宝,other:其它 //帐户类型( 支付类型):cash: 现金, bank: 银行 ,wx:微信,alipay:支付宝,other:其它
var orderReceiptVoucherObj={ var orderReceiptVoucherObj={
uapp_id:app.uAppId, uapp_id:app.uAppId,
sourceOrderNo:orderItem.orderNo, // 来源单号 sourceOrderNo:orderItem.orderNo, // 来源单号
accountType: accountType, accountType: accountType,
payDate: obj.fintime,//支付时间 payDate: new Date(),//支付时间
totalSum: orderItem.totalSum,//订单总额 totalSum: orderItem.totalSum,//订单总额
wxPayOrderCode:obj.trxid,//业务微信支付订单号 wxPayOrderCode:obj.trxid,//业务微信支付订单号
aliPayOrderCode:obj.trxid,//业务支付宝支付订单号 aliPayOrderCode:obj.trxid,//业务支付宝支付订单号
......
...@@ -33,7 +33,7 @@ class JdossService { ...@@ -33,7 +33,7 @@ class JdossService {
"conditions": [ "conditions": [
{"bucket": "hangtang"}, {"bucket": "hangtang"},
["starts-with", "$key", "zc"], ["starts-with", "$key", "zc"],
{"Content-Type": "image/jpeg"}, // {"Content-Type": "image/jpeg"},
{"X-Amz-Credential": ak+"/"+time+"/cn-north-1/s3/aws4_request"}, {"X-Amz-Credential": ak+"/"+time+"/cn-north-1/s3/aws4_request"},
{"X-Amz-Algorithm": "AWS4-HMAC-SHA256"}, {"X-Amz-Algorithm": "AWS4-HMAC-SHA256"},
{"X-Amz-Date": date} {"X-Amz-Date": date}
......
...@@ -10,6 +10,43 @@ class ServiceBase { ...@@ -10,6 +10,43 @@ class ServiceBase {
this.dao = system.getObject("db." + gname + "." + daoName); this.dao = system.getObject("db." + gname + "." + daoName);
this.restS = system.getObject("util.restClient"); this.restS = system.getObject("util.restClient");
} }
//通联返回值进行验签
async resultTlSign(resultData, pay_key) {
var rtnResult = { status: 0, msg: "SUCCESS" };
if (!resultData || !resultData.appid) {
rtnResult.status = -310;
rtnResult.msg = "返回值信息data为空";
return rtnResult;
}
resultData.key = pay_key;
var resultSignArr = [];
var keys = Object.keys(resultData).sort();
if (keys.length == 0) {
rtnResult.status = -330;
rtnResult.msg = "返回值参数信息为空";
return rtnResult;
}
for (let k = 0; k < keys.length; k++) {
const tKey = keys[k];
if (tKey != "sign" && resultData[tKey]) {
resultSignArr.push(tKey + "=" + resultData[tKey]);
}
}
if (resultSignArr.length == 0) {
rtnResult.status = -350;
rtnResult.msg = "返回值组装签名参数信息为空";
return rtnResult;
}
var resultSignStr = resultSignArr.join("&");
var resultTmpSign = md5(resultSignStr).toUpperCase();
delete resultData["key"];
if (resultData.sign != resultTmpSign) {
rtnResult.status = -380;
rtnResult.msg = "返回值签名验证失败";
return rtnResult;
}
return rtnResult;
}
/** /**
* 验证签名 * 验证签名
* @param {*} params 要验证的参数 * @param {*} params 要验证的参数
......
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