599 lines
29 KiB
C#
599 lines
29 KiB
C#
using CRM.Core.BLL.Application.Pay;
|
||
using CRM.Core.BLL.EventBus.EventHandlers;
|
||
using CRM.Core.BLL.Util;
|
||
using CRM.Core.BLL.Wx;
|
||
using CRM.Core.Common.EventBus;
|
||
using CRM.Core.Common.WebHelper;
|
||
using CRM.Core.DTO;
|
||
using CRM.Core.DTO.Ord;
|
||
using CRM.Core.Model.Entity;
|
||
using CRM.Core.Model.Enum;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using WX.CRM.Common;
|
||
|
||
namespace ZXDService
|
||
{
|
||
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“OutOrderService”。
|
||
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 OutOrderService.svc 或 OutOrderService.svc.cs,然后开始调试。
|
||
public class OutOrderService : IOutOrderService
|
||
{
|
||
private WX_SZZYORDER_BL szzyOrder_BL = new WX_SZZYORDER_BL();
|
||
|
||
private WX_SzzyOrderPay_BL orderPay_BL = new WX_SzzyOrderPay_BL();
|
||
|
||
private readonly WX_SzzyOrderDeposit_BL _deposit = new WX_SzzyOrderDeposit_BL();
|
||
|
||
private readonly PayServices _payServices = new PayServices();
|
||
|
||
private Reward_PayInfo_BL rewardPay_BL = new Reward_PayInfo_BL();
|
||
|
||
private WX_ComplianceConfirm_BL complianceConfirm_BL = new WX_ComplianceConfirm_BL();
|
||
|
||
CACHE_BL cache_BL = new CACHE_BL();
|
||
|
||
private SecurityHelper sHelper = new SecurityHelper();
|
||
|
||
private PayServices _payService = new PayServices();
|
||
public void DoWork()
|
||
{
|
||
}
|
||
|
||
public OutOrderService()
|
||
{
|
||
EventBus.Instance.Subscribe(new PayInfoEventHandler());
|
||
EventBus.Instance.Subscribe(new SendPayMessageEventHandler());
|
||
EventBus.Instance.Subscribe(new PayOrderEventHandler());
|
||
EventBus.Instance.Subscribe(new DepositOrderEventHandler());
|
||
EventBus.Instance.Subscribe(new OrderAndPayInfoEventHandler());
|
||
}
|
||
|
||
public JsonResult<List<OutOrderDto>> GetOrder(string outOderNo, string openPlat, string sign)
|
||
{
|
||
try
|
||
{
|
||
if (string.IsNullOrEmpty(outOderNo) || string.IsNullOrEmpty(openPlat))
|
||
{
|
||
return new JsonResult<List<OutOrderDto>> { result = false, retcode = -200, retmsg = null };
|
||
}
|
||
string signStr = string.Format("{0}-{1}", outOderNo, openPlat);
|
||
signStr = AESHelper.Encrypt(signStr, "upprivilegenews1");
|
||
if (signStr != sign)
|
||
{
|
||
return new JsonResult<List<OutOrderDto>> { result = false, retcode = -100, retmsg = null };
|
||
}
|
||
List<OutOrderDto> list = new List<OutOrderDto>();
|
||
var platType = getOpenPlatType(openPlat);
|
||
var orderList = szzyOrder_BL.GetThirdOrderList(outOderNo, platType);
|
||
var orderPayList = orderPay_BL.GetListByOrderIds(orderList.Select(m => Convert.ToInt32(m.ORDERID)).ToList());
|
||
foreach (var order in orderList)
|
||
{
|
||
OutOrderDto item = new OutOrderDto();
|
||
item.orderNo = order.outorderno;
|
||
item.thridOrderNo = order.ORDERID.ToString();
|
||
item.status = order.ORDERSTATUS;
|
||
var payInfo = orderPayList.Where(m => m.orderid == order.ORDERID).FirstOrDefault();
|
||
if (payInfo != null)
|
||
{
|
||
item.merchantOrderNo = payInfo.payno;
|
||
item.totalPrice = payInfo.payprice;
|
||
item.payWay = getPayWay(payInfo.paytype);
|
||
}
|
||
list.Add(item);
|
||
}
|
||
if (list != null && list.Count > 0)
|
||
{
|
||
return new JsonResult<List<OutOrderDto>> { result = true, retcode = 1, retmsg = list };
|
||
}
|
||
return new JsonResult<List<OutOrderDto>> { result = false, retcode = -1, retmsg = null };
|
||
}
|
||
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
return new JsonResult<List<OutOrderDto>> { result = false, retcode = -500, retmsg = null };
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// 三方平台支付 如淘牛帮
|
||
/// </summary>
|
||
/// <param name="orderNo"></param>
|
||
/// <param name="outOderNo"></param>
|
||
/// <param name="payWay"></param>
|
||
/// <param name="merchantOrderNo"></param>
|
||
/// <param name="totalPrice"></param>
|
||
/// <param name="payName"></param>
|
||
/// <param name="payTime"></param>
|
||
/// <param name="sign"></param>
|
||
/// <returns></returns>
|
||
public Stream Notice(string orderNo, string outOderNo, string payWay, string merchantOrderNo, decimal totalPrice, string payName, long payTime, string sign)
|
||
{
|
||
try
|
||
{
|
||
LogHelper.Info("=========三方订单支付成功信息 start=============");
|
||
LogHelper.Info(string.Format("参数信息:orderNo:{0},outOrderNO:{1},payWay:{2},merchantOrderNo:{3},totalPrice:{4},payName:{5},payTime:{6},sign:{7}", orderNo, outOderNo, payWay, merchantOrderNo, totalPrice, payName, payTime.ToString(), sign));
|
||
string signOrginal = string.Format("{0}-{1}-{2}-{3}", orderNo, outOderNo, merchantOrderNo, payTime.ToString());
|
||
string signEncypt = AESHelper.Encrypt(signOrginal, "upprivilegenews1");
|
||
if (sign != signEncypt)
|
||
{
|
||
var ret = new { state = -1, message = "参数错误" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
LogHelper.Info("sign加密比对成功!");
|
||
var syncOrderId = Convert.ToDecimal(orderNo);
|
||
var order = szzyOrder_BL.GetModelBySzId(syncOrderId);
|
||
LogHelper.Info("查询订单数据库操作成功!");
|
||
if (order == null)
|
||
{
|
||
order = szzyOrder_BL.Get(m => m.ORDERID == syncOrderId);
|
||
if (order == null)
|
||
{
|
||
LogHelper.Info(string.Format("订单号{0}不存在", orderNo));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -1, message = "订单号不存在" }));
|
||
}
|
||
}
|
||
if (outOderNo != order.outorderno)
|
||
{
|
||
LogHelper.Info(string.Format("事业部订单号{0}与库中订单{1}不匹配", outOderNo, order.outorderno));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -1, message = "事业部订单号不匹配" }));
|
||
}
|
||
var orderId = Convert.ToInt32(order.ORDERID);
|
||
var payType = getPayType(payWay);
|
||
var payInfo1 = orderPay_BL.Get(m => m.orderid == orderId && m.payno == merchantOrderNo && m.paytype == payType && m.auditstatus == 1 && m.isdelete == 0);
|
||
var payInfo2 = _deposit.Get(m => m.payno == merchantOrderNo && m.paytype == payType && m.auditstatus == 1 && m.isdelete == 0);
|
||
LogHelper.Info("查询支付记录数据库操作成功!");
|
||
if (payInfo1 != null || payInfo2 != null)
|
||
{
|
||
LogHelper.Info(string.Format("线上订单:{0},支付流水:{1},支付类型:{2}已经存在", orderNo, merchantOrderNo, payType.ToString()));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -1, message = "支付流水号已经存在" }));
|
||
}
|
||
else
|
||
{
|
||
//payInfo = new WX_SzzyOrderPay();
|
||
//payInfo.orderid = orderId;
|
||
//payInfo.needpay = order.NEEDPAY.Value;
|
||
//payInfo.payprice = totalPrice; //支付成功后,这里的金额单位是元
|
||
//payInfo.payno = merchantOrderNo;
|
||
//payInfo.paytype = payType;
|
||
//var payTypeName = cache_BL.GetList_Parameter(ParameterGroup.OrderPayType).FirstOrDefault(p => p.PARAVALUE == payType.ToString()).PARANAME;
|
||
//payInfo.paytypename = payTypeName;
|
||
//payInfo.remark = payName;
|
||
//payInfo.ctime = DateTimeTool.GetTimeFromLinuxTime(payTime);
|
||
//payInfo.paydate = payInfo.ctime.Date;
|
||
//payInfo.payname = "在线支付";
|
||
//payInfo.companycode = order.companycode;
|
||
//payInfo.auditstatus = 1; //表示已经确认
|
||
//payInfo.audittime = payInfo.ctime;
|
||
//payInfo.channel = order.CHANNEL;
|
||
////写入支付记录表
|
||
//int result = orderPay_BL.Add(payInfo);
|
||
//if (result == 1)
|
||
//{
|
||
// //更新订单支付信息
|
||
|
||
// order.ARRIVALPAY = totalPrice;
|
||
// order.FINALPAY = totalPrice;
|
||
// order.ARRIVALTIME = payInfo.paydate;
|
||
// order.ORDERSTATUS = "200";
|
||
// order.ORDERSTATUSNAME = "已支付";
|
||
// szzyOrder_BL.Update(order);
|
||
|
||
|
||
// LogHelper.Info("写入支付记录和更新订单状态执行数据库操作成功!");
|
||
// //推送支付事件
|
||
// EventBus.Instance.Publish(new PayInfoEvent(Convert.ToInt32(order.ORDERID), "200", "已支付", order.NEEDPAY.Value, payInfo.paydate.Value, order.companycode, merchantOrderNo, payType, payTypeName, payInfo.remark, payInfo.payprice, payInfo.ctime, payInfo.payname));
|
||
// //EventBus.Instance.Publish(new PayOrderEvent(Convert.ToInt32(order.ORDERID), order.ORDERSTATUS, order.ORDERSTATUSNAME, order.ARRIVALPAY.Value, order.ARRIVALTIME.Value, order.companycode, payInfo.id, payInfo.auditor.Value, payInfo.auditorname, payInfo.audittime.Value));
|
||
|
||
// ////推送收款短信给订单审核人
|
||
// //var onlinePayReceiveMobile = ConfigurationManager.AppSettings["OnlinePayReceiveMobile"];
|
||
// //var resList = new List<string>();
|
||
// //if (!string.IsNullOrWhiteSpace(onlinePayReceiveMobile))
|
||
// //{
|
||
// // resList = onlinePayReceiveMobile.Split(',').ToList();
|
||
// //}
|
||
// //foreach (var resId in resList)
|
||
// //{
|
||
// // EventBus.Instance.Publish(new SendPayMessageEvent(payInfo.payprice, resId, payTypeName, 10000));
|
||
// //}
|
||
// ////推送短信结束
|
||
|
||
// LogHelper.Info(string.Format("处理成功!订单:{0},本地订单号:{1}", orderNo, order.ORDERID.ToString()));
|
||
// return Utility.GetStream(Utility.ObjectToJson(new { state = 0, message = "同步成功" }));
|
||
//}
|
||
//else
|
||
//{
|
||
// LogHelper.Info(string.Format("支付记录入库操作错误!订单:{0},本地订单号:{1}", orderNo, order.ORDERID.ToString()));
|
||
// return Utility.GetStream(Utility.ObjectToJson(new { state = -2, message = "支付记录入库操作错误" }));
|
||
//}
|
||
#region 自动确认审核
|
||
var paylist = new List<PayInfoDto>() {
|
||
new PayInfoDto(){
|
||
resid = order.RESID,
|
||
paytype = payType,
|
||
paytypename = cache_BL.GetList_Parameter(ParameterGroup.OrderPayType).FirstOrDefault(p => p.PARAVALUE == payType.ToString()).PARANAME,
|
||
paydate = DateTimeTool.GetTimeFromLinuxTime(payTime).Date,
|
||
payname = "在线支付",
|
||
remark = payName,
|
||
payno = merchantOrderNo,
|
||
isuse = 0,
|
||
companycode = order.companycode,
|
||
tradeno = null,
|
||
creator = null,
|
||
creatorname = null,
|
||
checkpaytime=DateTimeTool.GetTimeFromLinuxTime(payTime),
|
||
payprice=totalPrice
|
||
}
|
||
};
|
||
var orderuselist = new List<OrderuseDto>() {
|
||
new OrderuseDto() { orderid = Convert.ToInt32(order.ORDERID), needpay = order.NEEDPAY.Value, arrivalpay = 0 }
|
||
};
|
||
var dto2 = new CRM.Core.DTO.Ord.PayDto2
|
||
{
|
||
orderuselist = orderuselist,
|
||
resid = order.RESID,
|
||
//depprice = depprice,
|
||
paylist = paylist
|
||
};
|
||
LogHelper.Info("dto2:" + dto2.ToJson());
|
||
var ret2 = _payServices.Add(dto2, 2);
|
||
if (ret2.result)
|
||
{
|
||
LogHelper.Info("写入支付记录和更新订单状态执行数据库操作成功!");
|
||
|
||
//支付信息写入成功之后自动调用审核
|
||
var depositInfoList = ret2.retmsg;
|
||
foreach (var deposit in depositInfoList)
|
||
{
|
||
try
|
||
{
|
||
var depositModel = _deposit.Get(p => p.id == deposit.id);
|
||
if (depositModel != null)
|
||
{
|
||
_deposit.Audit(depositModel, 0, string.Empty);
|
||
}
|
||
}
|
||
catch (Exception exx)
|
||
{
|
||
LogHelper.Error(exx);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
#endregion
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = 0, message = "同步成功" }));
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(string.Concat("执行支付信息入库错误:", ex.ToString()));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -500, message = "系统错误" }));
|
||
}
|
||
|
||
|
||
}
|
||
|
||
public Stream RewardNotice(string outOrderNo, string payWay, string merchantOrderNo, decimal totalPrice, string payName, long payTime, int channel, string sign)
|
||
{
|
||
try
|
||
{
|
||
LogHelper.Info("=========打赏支付成功信息 start=============");
|
||
LogHelper.Info(string.Format("参数信息:outOrderNO:{0},payWay:{1},merchantOrderNo:{2},totalPrice:{3},payName:{4},payTime:{5},sign:{6},channel:{7}", outOrderNo, payWay, merchantOrderNo, totalPrice, payName, payTime.ToString(), sign, channel.ToString()));
|
||
string signOrginal = string.Format("{0}-{1}-{2}", outOrderNo, merchantOrderNo, payTime.ToString());
|
||
string signEncypt = AESHelper.Encrypt(signOrginal, "upprivilegenews1");
|
||
if (sign != signEncypt || channel == 0)
|
||
{
|
||
var ret = new { state = -1, message = "参数错误" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
LogHelper.Info("sign加密比对成功!");
|
||
|
||
var payType = getPayType(payWay);
|
||
var payInfo = rewardPay_BL.Get(m => m.payno == merchantOrderNo && m.paytype == payType);
|
||
LogHelper.Info("查询支付记录数据库操作成功!");
|
||
if (payInfo != null)
|
||
{
|
||
LogHelper.Info(string.Format("打赏支付流水:{0},支付类型:{1}已经存在", merchantOrderNo, payType.ToString()));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -1, message = "支付流水号已经存在" }));
|
||
}
|
||
else
|
||
{
|
||
payInfo = new Reward_PayInfo();
|
||
payInfo.payprice = totalPrice; //支付成功后,这里的金额单位是元
|
||
payInfo.payno = merchantOrderNo;
|
||
payInfo.paytype = payType;
|
||
var payTypeName = cache_BL.GetList_Parameter(ParameterGroup.OrderPayType).FirstOrDefault(p => p.PARAVALUE == payType.ToString()).PARANAME;
|
||
payInfo.paytypename = payTypeName;
|
||
payInfo.remark = payName;
|
||
payInfo.outorderno = outOrderNo;
|
||
payInfo.ctime = DateTimeTool.GetTimeFromLinuxTime(payTime);
|
||
payInfo.paydate = payInfo.ctime.Date;
|
||
payInfo.payname = "在线支付";
|
||
payInfo.companycode = GetCompanyCode(channel);
|
||
payInfo.auditstatus = 1; //表示已经确认
|
||
payInfo.audittime = payInfo.ctime;
|
||
payInfo.channel = channel;
|
||
//写入支付记录表
|
||
int result = rewardPay_BL.Add(payInfo);
|
||
if (result == 1)
|
||
{
|
||
|
||
LogHelper.Info(string.Format("处理成功!流水号:{0},三方订单号:{1}", merchantOrderNo, outOrderNo));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = 0, message = "同步成功" }));
|
||
}
|
||
else
|
||
{
|
||
LogHelper.Info(string.Format("支付记录入库操作错误!流水号:{0},三方订单号:{1}", merchantOrderNo, outOrderNo));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -2, message = "支付记录入库操作错误" }));
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(string.Concat("执行打赏支付信息入库错误:", ex.ToString()));
|
||
return Utility.GetStream(Utility.ObjectToJson(new { state = -500, message = "系统错误" }));
|
||
}
|
||
|
||
|
||
}
|
||
|
||
public Stream ComplianceNotice(string orderNo, string outOrderNo, string confirmTime, string sign, string ip)
|
||
{
|
||
LogHelper.Info("=========合规回访确认 start=============");
|
||
LogHelper.Info(string.Format("参数信息:orderNo:{0},outOrderNo:{1},confirmTime:{2}, sign: {3}, ip:{4}", orderNo, outOrderNo, confirmTime, sign, ip));
|
||
string signOrginal = string.Format("{0}-{1}-{2}", orderNo, outOrderNo, confirmTime);
|
||
LogHelper.Info(signOrginal);
|
||
string signEncypt = AESHelper.Encrypt(signOrginal, "upprivilegenews1");
|
||
LogHelper.Info(signEncypt);
|
||
if (sign != signEncypt)
|
||
{
|
||
var ret = new { state = -1, message = "参数错误" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
|
||
//if(string.IsNullOrEmpty(ip))
|
||
//{
|
||
// var ret = new { state = -1, message = "ip不能为空!" };
|
||
// return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
//}
|
||
|
||
try
|
||
{
|
||
string[] orderNos = orderNo.Split('|');
|
||
string[] outOrderNos = outOrderNo.Split('|');
|
||
string[] confirmTimes = confirmTime.Split('|');
|
||
string[] ipArr = new string[] { };
|
||
if (!string.IsNullOrEmpty(ip))
|
||
{
|
||
ipArr = ip.Split('|');
|
||
}
|
||
if (orderNos.Length == outOrderNos.Length && orderNos.Length == confirmTimes.Length && outOrderNos.Length == confirmTimes.Length)
|
||
{
|
||
var len = orderNos.Length;
|
||
for (int i = 0; i < len; i++)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(orderNos[i]))
|
||
{
|
||
LogHelper.Info(orderNos[i]);
|
||
LogHelper.Info(Convert.ToInt64(orderNos[i]).ToString());
|
||
|
||
var szzyOrderId = Convert.ToDecimal(orderNos[i]);
|
||
var order = szzyOrder_BL.Get(p => p.SZZYORDERID == szzyOrderId);
|
||
if (order != null)
|
||
{
|
||
//如果已经通过,重签就不处理
|
||
if (order.RISKCTRLSTATUS != 2)
|
||
{
|
||
if (order.RISKCTRLSTATUS == -1)
|
||
{
|
||
order.RISKCTRLSTATUS = 0;
|
||
szzyOrder_BL.Update(order);
|
||
}
|
||
}
|
||
}
|
||
|
||
var itemIp = string.Empty;
|
||
if (ipArr.Length > 0)
|
||
{
|
||
itemIp = ipArr[i];
|
||
}
|
||
|
||
var model = new WX_ComplianceConfirm { SzzyOrderId = Convert.ToInt64(szzyOrderId), OutOrderNo = outOrderNos[i], ConfirmTime = DateTimeTool.GetTimeFromLinuxTime(Convert.ToInt64(confirmTimes[i])), Ip = itemIp };
|
||
var result = complianceConfirm_BL.Add(model);
|
||
if (result > 0)
|
||
{
|
||
LogHelper.Info(orderNos[i] + "写入成功!");
|
||
}
|
||
else
|
||
{
|
||
LogHelper.Info(orderNos[i] + "写入失败!");
|
||
}
|
||
}
|
||
}
|
||
var ret = new { state = 0, message = "ok" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
else
|
||
{
|
||
var ret = new { state = -2, message = "参数长度不一致" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
}
|
||
catch (System.Data.Entity.Infrastructure.DbUpdateException exx)
|
||
{
|
||
LogHelper.Error(exx);
|
||
var ret = new { state = -500, message = "数据已经存在" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.Error(ex);
|
||
var ret = new { state = -500, message = "报错了,参数错误或者入库失败!" };
|
||
return Utility.GetStream(Utility.ObjectToJson(ret));
|
||
}
|
||
|
||
}
|
||
|
||
public JsonResult<List<OrderComplianceDto>> ComplianceList(int channel, string sign)
|
||
{
|
||
LogHelper.Info("=========合规未通过列表 start=============");
|
||
LogHelper.Info(string.Format("参数信息:channel:{0},sign:{1}", channel.ToString(), sign));
|
||
string signOrginal = string.Format("{0}", channel.ToString());
|
||
string signEncypt = AESHelper.Encrypt(signOrginal, "upprivilegenews1");
|
||
if (sign != signEncypt)
|
||
{
|
||
return new JsonResult<List<OrderComplianceDto>> { result = false, retcode = -1, retmsg = null };
|
||
}
|
||
if (channel == 0)
|
||
{
|
||
return new JsonResult<List<OrderComplianceDto>> { result = false, retcode = -2, retmsg = null };
|
||
}
|
||
var list = szzyOrder_BL.GetList(m => m.RISKCTRLSTATUS == -1 && m.CHANNEL == channel).Select(m => new OrderComplianceDto { orderNo = m.SZZYORDERID.ToString(), outOrderNo = m.outorderno, status = m.rejectremark }).ToList();
|
||
if (list == null || list.Count == 0)
|
||
{
|
||
list = new List<OrderComplianceDto>();
|
||
}
|
||
return new JsonResult<List<OrderComplianceDto>> { result = true, retcode = 1, retmsg = list };
|
||
}
|
||
|
||
public Stream Pay(string content, string clientid, string sign)
|
||
{
|
||
var msg = string.Empty;
|
||
//验证是否非法请求
|
||
if (!sHelper.CheckClientValid(clientid, content, sign))//签名认证
|
||
{
|
||
msg = JsonHelper.ObjDivertToJson(new retMsg { result = false, retcode = (int)EnumInterfaceErrcode.非法请求, retmsg = null });
|
||
msg = sHelper.encyptData(clientid, msg);
|
||
return Utility.GetStream(msg);
|
||
}
|
||
content = sHelper.decyptData(clientid, content); //解密操作
|
||
|
||
var dto = Utility.JSONToObject<CRM.Core.DTO.Ord.OutPayDto>(content);
|
||
|
||
//如果订单号跟权限单号都没有
|
||
if (string.IsNullOrEmpty(dto.szzyorderid))
|
||
{
|
||
msg = JsonHelper.ObjDivertToJson(new retMsg { result = false, retcode = (int)EnumInterfaceErrcode.参数错误, retmsg = null });
|
||
msg = sHelper.encyptData(clientid, msg);
|
||
return Utility.GetStream(msg);
|
||
}
|
||
|
||
var syncOrderId = Convert.ToDecimal(dto.szzyorderid);
|
||
var order = szzyOrder_BL.GetModelBySzId(syncOrderId);
|
||
LogHelper.Info("查询订单数据库操作成功!" + order.ToJson());
|
||
if (order == null)
|
||
{
|
||
order = szzyOrder_BL.Get(m => m.ORDERID == syncOrderId);
|
||
if (order == null)
|
||
{
|
||
LogHelper.Info(string.Format("订单号{0}不存在", dto.szzyorderid));
|
||
return Utility.GetStream(sHelper.encyptData(clientid, Utility.ObjectToJson(new { state = -1, message = "订单号不存在" })));
|
||
}
|
||
}
|
||
|
||
var paylist = new List<PayInfoDto>() {
|
||
new PayInfoDto(){
|
||
resid = order.RESID,
|
||
paytype = dto.paytype,
|
||
paytypename =cache_BL.GetList_Parameter(ParameterGroup.OrderPayType).FirstOrDefault(p => p.PARAVALUE == dto.paytype.ToString()).PARANAME,
|
||
paydate = dto.paydate,
|
||
payname = dto.payname,
|
||
remark = dto.remark,
|
||
payno = dto.payno,
|
||
isuse = 0,
|
||
companycode = order.companycode,
|
||
tradeno = null,
|
||
creator = null,
|
||
creatorname = null,
|
||
checkpaytime = DateTime.Now,
|
||
payprice = dto.payprice
|
||
}
|
||
};
|
||
var orderuselist = new List<OrderuseDto>() { new OrderuseDto() { orderid = Convert.ToInt32(order.ORDERID), needpay = order.NEEDPAY.Value, arrivalpay = 0 } };
|
||
var dto2 = new CRM.Core.DTO.Ord.PayDto2
|
||
{
|
||
orderuselist = orderuselist,
|
||
resid = order.RESID,
|
||
paylist = paylist
|
||
};
|
||
LogHelper.Info("dto2:" + dto2.ToJson());
|
||
var ret = _payService.Add(dto2, 2);
|
||
LogHelper.Info("ret:" + ret.ToJson());
|
||
if (ret.result)
|
||
{
|
||
msg = JsonHelper.ObjDivertToJson(new retMsg { result = true, retcode = (int)EnumInterfaceErrcode.调用成功, retmsg = "success" });
|
||
msg = sHelper.encyptData(clientid, msg);
|
||
return Utility.GetStream(msg);
|
||
}
|
||
else
|
||
{
|
||
msg = JsonHelper.ObjDivertToJson(new retMsg { result = false, retcode = (int)EnumInterfaceErrcode.系统错误, retmsg = null });
|
||
msg = sHelper.encyptData(clientid, msg);
|
||
return Utility.GetStream(msg);
|
||
}
|
||
}
|
||
|
||
private int getOpenPlatType(string openPlat)
|
||
{
|
||
switch (openPlat)
|
||
{
|
||
case "tnb":
|
||
return 3;
|
||
default:
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
private string GetCompanyCode(int ch)
|
||
{
|
||
var companyCode = cache_BL.GetCompanyCode();
|
||
var companyModel = companyCode.FirstOrDefault(p => p.Min <= ch && p.Max >= ch);
|
||
|
||
return companyModel != null ? companyModel.CompanyCode : "DNZZ";
|
||
}
|
||
|
||
private string getPayWay(int payType)
|
||
{
|
||
switch (payType)
|
||
{
|
||
case 1:
|
||
return "AliPay";
|
||
case 5:
|
||
return "WX";
|
||
case 11:
|
||
return "ApplePay";
|
||
case 12:
|
||
return "HuaweiPay";
|
||
case 13:
|
||
return "MeizuPay";
|
||
default:
|
||
return "";
|
||
}
|
||
}
|
||
|
||
private int getPayType(string payWay)
|
||
{
|
||
switch (payWay)
|
||
{
|
||
case "AliPay":
|
||
return 1;
|
||
case "WX":
|
||
return 5;
|
||
case "ApplePay":
|
||
return 11;
|
||
case "HuaweiPay":
|
||
return 12;
|
||
case "MeizuPay":
|
||
return 13;
|
||
default:
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|