ConsumerOrdersReturnDoService.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using Library;
  4. using LitJson;
  5. using System.Linq;
  6. using System.Threading;
  7. using MySystem.PxcModels;
  8. namespace MySystem
  9. {
  10. public class ConsumerOrdersReturnDoService
  11. {
  12. public readonly static ConsumerOrdersReturnDoService Instance = new ConsumerOrdersReturnDoService();
  13. private ConsumerOrdersReturnDoService()
  14. { }
  15. public void Start()
  16. {
  17. Thread th = new Thread(DoRefund);
  18. th.IsBackground = true;
  19. th.Start();
  20. }
  21. private void DoRefund()
  22. {
  23. bool op = true;
  24. while (op)
  25. {
  26. RefundItem item = RedisDbconn.Instance.RPop<RefundItem>("ConsumerOrdersStat");
  27. if (item != null)
  28. {
  29. try
  30. {
  31. bool success = false;
  32. WebCMSEntities db = new WebCMSEntities();
  33. if (item.PayMode == 1)
  34. {
  35. string resultString = new AlipayFunction().Refund(item.TradeNo, item.RefundMoney.ToString("f2"), "202202BB4fc8c2c03c914f2f87b6c678a77d7C03");
  36. JsonData jsonObj = JsonMapper.ToObject(resultString);
  37. if (jsonObj["alipay_trade_refund_response"]["code"].ToString() == "10000")
  38. {
  39. success = true;
  40. }
  41. }
  42. else if (item.PayMode == 2)
  43. {
  44. string AppId = "wxe2c051b3e46c0f6f";
  45. string MchId = "1611167423";
  46. MerchantAddInfo merchantAdd = db.MerchantAddInfo.FirstOrDefault(m => m.Id == item.MerchantId) ?? new MerchantAddInfo();
  47. MerchantInfo merchant = db.MerchantInfo.FirstOrDefault(m => m.Id == item.MerchantId) ?? new MerchantInfo();
  48. string SubMchId = merchantAdd.SubMchid;
  49. string Description = merchant.Name;
  50. string RefundNo = DateTime.Now.ToString("yyyyMMddHHmmssfff") + function.get_Random(8);
  51. Dictionary<string, string> dic = new WeChatFunction().Refund(AppId, MchId, SubMchId, item.RefundMoney, item.TotalMoney, item.TradeNo, RefundNo);
  52. if (dic.ContainsKey("status"))
  53. {
  54. if (dic["status"] == "SUCCESS")
  55. {
  56. success = true;
  57. }
  58. }
  59. }
  60. if (success)
  61. {
  62. ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == item.ProfitId);
  63. if (order != null)
  64. {
  65. order.Status = 2;
  66. db.SaveChanges();
  67. }
  68. }
  69. db.Dispose();
  70. }
  71. catch (Exception ex)
  72. {
  73. function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "退款返现队列异常");
  74. }
  75. }
  76. else
  77. {
  78. op = false;
  79. }
  80. }
  81. }
  82. }
  83. }