private bool VerifyOrder(AlipayData alipayData, UserPayOrderInfo payOrder)
 {
     if (Convert.ToDecimal(alipayData.GetValue("invoice_amount")) != payOrder.Cost)
     {
         LogHelper.Logger.Error("用户支付的金额与订单预付款金额不一致,交易失败");
         return(false);
     }
     if (!AliPayConfig.PID.Equals(alipayData.GetValue("seller_id")))
     {
         LogHelper.Logger.Error("seller_id不一致,交易失败");
         return(false);
     }
     if (!AliPayConfig.APPID.Equals(alipayData.GetValue("app_id")))
     {
         LogHelper.Logger.Error("app_id不一致,交易失败");
         return(false);
     }
     return(true);
 }
        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);
            }
        }