public bool AlipayCallBack(AlipayData alipayData)
        {
            var userPayInfo = _uerPayOrderInfoRepository.Get(alipayData.GetValue("out_trade_no"));

            if (userPayInfo == null)
            {
                LogHelper.Logger.Error(string.Format("数据库中不存在单号为{0}的订单", alipayData.GetValue("out_trade_no")));
                return(false);
            }
            if (!VerifyOrder(alipayData, userPayInfo))
            {
                return(false);
            }
            var tradeStatus   = alipayData.GetValue("trade_status");
            var transactionId = string.Empty;

            if (alipayData.IsSet("trade_no"))
            {
                transactionId = alipayData.GetValue("trade_no");
            }
            if (tradeStatus.Equals("TRADE_SUCCESS") || tradeStatus.Equals("TRADE_FINISHED"))
            {
                //支付金额
                return(_purchaseServiceRepository.CompleteServiceOrder(new CompleteServiceOrder()
                {
                    OrderID = alipayData.GetValue("out_trade_no"),
                    Cost = Convert.ToDouble(alipayData.GetValue("invoice_amount")),
                    NewID = OrderHelper.GenerateNewId(),
                    PayExtendInfo = alipayData.ToJson(),
                    PayState = tradeStatus,
                    PayOrderID = transactionId,
                    Remarks = "支付宝手机网页支付",
                }) == 0);
            }
            //超时关闭
            else if (tradeStatus.Equals("TRADE_CLOSED"))
            {
                LogHelper.Logger.Debug("订单超时关闭");
                return(_purchaseServiceRepository.UpdateServiceOrder(new UpdateServiceOrder()
                {
                    ID = alipayData.GetValue("out_trade_no"),
                    PayExtendInfo = alipayData.ToJson(),
                    PayState = tradeStatus,
                    PayOrderID = transactionId,
                    State = 3,
                }) == 0);
            }
            else
            {
                return(false);
            }
        }
示例#2
0
        public int CompleteServiceOrder(WxPayData queryData)
        {
            string out_trade_no = queryData.GetValue("out_trade_no").ToString().Substring(10);
            //取出提交的数据包,原样返回
            //object attachData = payData.GetValue("attach");
            //交易状态
            string trade_state = queryData.GetValue("trade_state").ToString();
            //微信支付订单号
            string transaction_id = null;

            if (queryData.IsSet("transaction_id"))
            {
                transaction_id = queryData.GetValue("transaction_id").ToString();
            }

            var orderInfo = _userPayOrdeRepository.FirstOrDefault(p => p.Id == out_trade_no);

            if (trade_state == "SUCCESS")//交易成功
            {
                //支付金额
                return(_purchaseServiceRepository.CompleteServiceOrder(new CompleteServiceOrder()
                {
                    OrderID = out_trade_no,
                    Cost = Convert.ToDouble(queryData.GetValue("total_fee")) / 100,
                    NewID = OrderHelper.GenerateNewId(),
                    PayExtendInfo = queryData.ToJson(),
                    PayState = trade_state,
                    PayOrderID = transaction_id,
                    Remarks = "微信公众号支付",
                }));
            }

            else if (trade_state == "USERPAYING")//正在支付
            {
                var result = _purchaseServiceRepository.UpdateServiceOrder(new UpdateServiceOrder()
                {
                    ID            = out_trade_no,
                    PayExtendInfo = queryData.ToJson(),
                    PayState      = trade_state,
                    PayOrderID    = transaction_id,
                    State         = null
                });

                if (result != 0)
                {
                    LogHelper.Logger.Error("更新订单失败");
                }

                return(-4);
            }
            else if (trade_state == "NOTPAY")
            {
                //算作超时关闭订单
                if (orderInfo != null && orderInfo.CreateTime.AddMinutes(20) < DateTime.Now)
                {
                    var result1 = _purchaseServiceRepository.UpdateServiceOrder(new UpdateServiceOrder()
                    {
                        ID            = out_trade_no,
                        PayExtendInfo = queryData.ToJson(),
                        PayState      = trade_state,
                        PayOrderID    = transaction_id,
                        State         = 3
                    });

                    if (result1 != 0)
                    {
                        LogHelper.Logger.Error("更新订单失败");
                    }
                    LogHelper.Logger.Debug("超时关闭订单");
                    return(-4);
                }
                else
                {
                    //继续等待,还不算结束
                    var result1 = _purchaseServiceRepository.UpdateServiceOrder(new UpdateServiceOrder()
                    {
                        ID            = out_trade_no,
                        PayExtendInfo = queryData.ToJson(),
                        PayState      = trade_state,
                        PayOrderID    = transaction_id,
                        State         = null
                    });

                    return(-4);
                }
            }
            else
            {
                var result1 = _purchaseServiceRepository.UpdateServiceOrder(new UpdateServiceOrder()
                {
                    ID            = out_trade_no,
                    PayExtendInfo = queryData.ToJson(),
                    PayState      = trade_state,
                    PayOrderID    = transaction_id,
                    State         = 3
                });

                if (result1 != 0)
                {
                    LogHelper.Logger.Error("更新订单失败");
                }

                LogHelper.Logger.Error("支付失败");

                return(-4);
            }
        }