51Testing软件测试论坛

标题: 微信支付结果回调不通,不知道为啥,有经验的帮我瞅瞅 [打印本页]

作者: 测试积点老人    时间: 2022-4-14 14:35
标题: 微信支付结果回调不通,不知道为啥,有经验的帮我瞅瞅
问题遇到的现象和发生背景

以前微信支付结果通知是用aspx接收的,现在要改为webapi接收,现在测试下来,接收不到,我想问一下,代码是不是有啥问题的

  1. [HttpPost]
  2. public dynamic ReceiveFromWctPayResult()
  3. {
  4. try
  5. {
  6. string strXML = string.Empty;
  7. using (StreamReader sr = new StreamReader(Request.Body, Encoding.UTF8))
  8. {
  9. strXML = sr.ReadToEndAsync().Result;
  10. }
  11.             STM_Applet applet = uow.Query<STM_Applet>().FirstOrDefault();

  12.             if (applet != null)
  13.             {
  14.                 WctPayEntity receiveWctPayEntity = new WctPayEntity();
  15.                 if (!string.IsNullOrEmpty(strXML) && receiveWctPayEntity.FromXml(strXML, true, applet.ApiKey) && receiveWctPayEntity.GetValue("return_code").ToString() == "SUCCESS")
  16.                 {
  17.                     WctAttachEntity wctAttachEntity = JsonHelper.Deserialize<WctAttachEntity>(distributedCache.GetString(receiveWctPayEntity.GetValue("attach").ToString()));
  18.                     if (wctAttachEntity != null)
  19.                     {
  20.                         Order currentOrder = uow.Query<Order>().Where(x => x.OrderNo == receiveWctPayEntity.GetValue("out_trade_no").ToString()).FirstOrDefault();

  21.                         #region 更新订单状态

  22.                         currentOrder.OrderStatus = currentOrder.OrderGoodsType == Order.OrderGoodsTypeEnum.商品 ? OrderStatus.待发货 : OrderStatus.待预约;

  23.                         #endregion 更新订单状态

  24.                         #region 更新支付流水

  25.                         List<Order_Payment> currentOrderPayments = uow.Query<Order_Payment>().Where(x => x.OrderPayNo == currentOrder.OrderNo).ToList();
  26.                         for (int i = 0; i < currentOrderPayments.Count; i++)
  27.                         {
  28.                             currentOrderPayments[i].ConfirmStatus = Order_Payment.ConfirmStatusEnum.已确认;
  29.                             currentOrderPayments[i].ConfirmTime = DateTime.Now;
  30.                             currentOrderPayments[i].PayStatus = Order_Payment.PayStatusEnum.已支付;
  31.                             currentOrderPayments[i].ModifyTime = DateTime.Now;
  32.                             currentOrderPayments[i].PayTime = Convert.ToDateTime(receiveWctPayEntity.GetValue("time_end").ToString());

  33.                             if (currentOrderPayments[i].PayType == Order_Payment.PayTypeEnum.微信)
  34.                             {
  35.                                 currentOrderPayments[i].PayMentTradeNo = receiveWctPayEntity.GetValue("transaction_id").ToString();
  36.                             }
  37.                             else
  38.                             {
  39.                                 #region 卡冻结操作记录(冻结)

  40.                                 BMS_PrepaidCard_Public currentPrepaidCardPublic = uow.FindObject<BMS_PrepaidCard_Public>(CriteriaOperator.Parse("CardCode='" + currentOrderPayments[i].PayMentTradeNo + "'"));
  41.                                 if (currentPrepaidCardPublic != null)
  42.                                 {
  43.                                     currentPrepaidCardPublic.FreezeMoney += currentOrderPayments[i].PayMoney;

  44.                                     BMS_PrepaidCard_Frozen currentPrepaidCardFrozen = new BMS_PrepaidCard_Frozen(uow);
  45.                                     currentPrepaidCardFrozen.BeforeMoney = currentPrepaidCardPublic.CardMoney;
  46.                                     currentPrepaidCardFrozen.CardCode = currentPrepaidCardPublic.CardCode;
  47.                                     currentPrepaidCardFrozen.ChipCode = currentPrepaidCardPublic.ChipCode;
  48.                                     currentPrepaidCardFrozen.CurrentMoney = 0;
  49.                                     currentPrepaidCardFrozen.FrozenMoney = currentOrderPayments[i].PayMoney;
  50.                                     currentPrepaidCardFrozen.FrozenStatus = 0;
  51.                                     currentPrepaidCardFrozen.FrozenSource = "1";
  52.                                     currentPrepaidCardFrozen.OperateType = 1;
  53.                                     currentPrepaidCardFrozen.OrderID = currentOrder.Oid.ToString();
  54.                                     currentPrepaidCardFrozen.PublicID = currentPrepaidCardPublic.Oid.ToString();
  55.                                     currentPrepaidCardFrozen.Remark = "平台冻结金额";
  56.                                 }

  57.                                 #endregion 卡冻结操作记录(冻结)
  58.                             }
  59.                         }

  60.                         #endregion 更新支付流水

  61.                         #region 创建订单明细

  62.                         if (currentOrder.OrderGoodsType != Order.OrderGoodsTypeEnum.商品)
  63.                         {
  64.                             for (int i = 0; i < currentOrder.Details.Count; i++)
  65.                             {
  66.                                 for (int j = 0; j < currentOrder.Details[j].BuyCount; j++)
  67.                                 {
  68.                                     Order_Credentials currentCredentials = new Order_Credentials(uow);
  69.                                     currentCredentials.CredentialNo = "不知道咋生成的";
  70.                                     currentCredentials.CredentialsType = string.IsNullOrEmpty(currentOrder.Details[j].UnionCode) ? 1 : 0;
  71.                                     currentCredentials.CardExpiredDate = DateTime.Now.AddMonths(3);
  72.                                     currentCredentials.OrderId = currentOrder.Oid;
  73.                                     currentCredentials.OrderNo = currentOrder.OrderNo;
  74.                                     currentCredentials.OrderPackageID = currentOrder.Details[j].OrderPackageId;
  75.                                     currentCredentials.PackageTitle = currentOrder.OrderGoodsType == Order.OrderGoodsTypeEnum.套餐 ? currentOrder.Details[j].Title : currentOrder.Details[j].Title + "自定义";
  76.                                     currentCredentials.Price = currentOrder.Details[j].Price;
  77.                                     currentCredentials.Status = Order_Credentials.StatusEnum.待预约;
  78.                                     currentCredentials.UnionCode = currentOrder.Details[j].UnionCode;
  79.                                     currentCredentials.UnionID = currentOrder.Details[j].UnionId;
  80.                                     currentCredentials.UnionName = currentOrder.Details[j].UnionName;
  81.                                     currentCredentials.UserID = currentOrder.UserID.Oid;
  82.                                     currentCredentials.CreateTime = DateTime.Now;
  83.                                     currentCredentials.CreateTrueName = "平台";
  84.                                     currentCredentials.ModifyTime = DateTime.Now;
  85.                                     currentCredentials.ModifyTrueName = "平台";
  86.                                 }
  87.                             }
  88.                         }

  89.                         #endregion 创建订单明细

  90.                         uow.CommitChanges();
  91.                     }

  92.                     WctPayEntity responseWctPayEntity = new WctPayEntity();
  93.                     responseWctPayEntity.SetValue("return_code", "![CDATA[SUCCESS]]");
  94.                     responseWctPayEntity.SetValue("return_msg", "![CDATA[OK]] ");
  95.                     return responseWctPayEntity.ToXml();
  96.                 }
  97.             }
  98.         }
  99.         catch (Exception)
  100.         {

  101.         }
  102.         return null;
  103.     }
复制代码



作者: bellas    时间: 2022-4-15 10:42
先单个调试自己的接口,如果没有问题,那可能是自己接口调用微信接口的之间有问题
作者: qqq911    时间: 2022-4-15 11:16
这个需要具体的测试环境进行测试
作者: jingzizx    时间: 2022-4-15 15:56
超时?还是没反应




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2