using System; using System.Collections.Generic; using Library; using LitJson; using System.Linq; using System.Threading; using MySystem.PxcModels; namespace MySystem { public class ConsumerOrdersReturnDoService { public readonly static ConsumerOrdersReturnDoService Instance = new ConsumerOrdersReturnDoService(); private ConsumerOrdersReturnDoService() { } public void Start() { Thread th = new Thread(DoRefund); th.IsBackground = true; th.Start(); } private void DoRefund() { bool op = true; while (op) { RefundItem item = RedisDbconn.Instance.RPop("ConsumerOrdersStat"); if (item != null) { try { bool success = false; WebCMSEntities db = new WebCMSEntities(); if (item.PayMode == 1) { string resultString = new AlipayFunction().Refund(item.TradeNo, item.RefundMoney.ToString("f2"), "202202BB4fc8c2c03c914f2f87b6c678a77d7C03"); JsonData jsonObj = JsonMapper.ToObject(resultString); if (jsonObj["alipay_trade_refund_response"]["code"].ToString() == "10000") { success = true; } } else if (item.PayMode == 2) { string AppId = "wxe2c051b3e46c0f6f"; string MchId = "1611167423"; MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == item.MerchantId) ?? new MerchantAddInfo(); MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == item.MerchantId) ?? new MerchantInfo(); string SubMchId = merchantAdd.SubMchid; string Description = merchant.Name; string RefundNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8); Dictionary dic = new WeChatFunction().Refund(AppId, MchId, SubMchId, item.RefundMoney, item.TotalMoney, item.TradeNo, RefundNo); if (dic.ContainsKey("status")) { if (dic["status"] == "SUCCESS") { success = true; } } } if (success) { ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == item.ProfitId); if (order != null) { order.Status = 2; db.SaveChanges(); } } db.Dispose(); } catch (Exception ex) { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "退款返现队列异常"); } } else { op = false; } } } } }