Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        private bool Notify_PaySucceed(object sender, PaySucceedEventArgs e)
        {
            if (e.GatewayType == typeof(PaySharp.Wechatpay.WechatpayGateway))
            {
                var alipayNotifyResponse = (NotifyResponse)e.NotifyResponse;

                //校验订单信息
                string payNO      = alipayNotifyResponse.TradeNo;                //微信订单号
                string orderNO    = alipayNotifyResponse.OutTradeNo;             //商户订单号
                string orderTotal = alipayNotifyResponse.TotalAmount.ToString(); //订单金额
                string payDate    = alipayNotifyResponse.TimeEnd;                //支付完成时间

                CourseOrderBLL    courseOrderBLL    = new CourseOrderBLL();
                CourseOrderEntity courseOrderEntity = courseOrderBLL.GetByOrderNO(orderNO);

                //校验订单是否存在
                if (courseOrderEntity == null)
                {
                    return(false);
                }

                if (courseOrderEntity.orderTotal * 100 == Convert.ToDecimal(orderTotal))
                {
                    //2.更新订单的相关状态
                    if (courseOrderEntity.state == 1)
                    {
                        courseOrderEntity.payNo      = payNO;
                        courseOrderEntity.payDate    = DateTime.ParseExact(payDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                        courseOrderEntity.state      = 2;
                        courseOrderEntity.modifyDate = DateTime.Now;
                        courseOrderEntity.realTotal  = Convert.ToDecimal(orderTotal) / 100;
                        courseOrderEntity.payChannel = "微信支付-APP";
                        int rows = courseOrderBLL.ActionDal.ActionDBAccess.Updateable(courseOrderEntity).ExecuteCommand();

                        //3.返回一个xml格式的结果给微信服务器
                        if (rows > 0)
                        {
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            //处理成功返回true
            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 处理结果通知
        /// </summary>
        /// <param name="strXml"></param>
        /// <returns></returns>
        public static string CourseNotify(string strXml)
        {
            string strResult = string.Empty;

            //判断是否请求成功
            if (PayHelper.GetXmlValue(strXml, "return_code") == "SUCCESS")
            {
                //判断是否支付成功
                if (PayHelper.GetXmlValue(strXml, "result_code") == "SUCCESS")
                {
                    //获得签名
                    string getSign = PayHelper.GetXmlValue(strXml, "sign");

                    //进行签名
                    string sign = PayHelper.GetSignInfo(PayHelper.GetFromXml(strXml));
                    if (sign == getSign)
                    {
                        //校验订单信息
                        string payNO      = PayHelper.GetXmlValue(strXml, "transaction_id"); //微信订单号
                        string orderNO    = PayHelper.GetXmlValue(strXml, "out_trade_no");   //商户订单号
                        string orderTotal = PayHelper.GetXmlValue(strXml, "total_fee");      //订单金额
                        string payDate    = PayHelper.GetXmlValue(strXml, "time_end");       //支付完成时间

                        CourseOrderBLL    courseOrderBLL    = new CourseOrderBLL();
                        CourseOrderEntity courseOrderEntity = courseOrderBLL.GetByOrderNO(orderNO);
                        //校验订单是否存在
                        if (courseOrderEntity.orderTotal * 100 == Convert.ToDecimal(orderTotal))
                        {
                            //2.更新订单的相关状态
                            if (courseOrderEntity.state == 1)
                            {
                                courseOrderEntity.payNo      = payNO;
                                courseOrderEntity.payDate    = DateTime.ParseExact(payDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
                                courseOrderEntity.state      = 2;
                                courseOrderEntity.modifyDate = DateTime.Now;
                                courseOrderEntity.realTotal  = Convert.ToDecimal(orderTotal) / 100;
                                courseOrderEntity.payChannel = "微信支付-APP";
                                int rows = courseOrderBLL.ActionDal.ActionDBAccess.Updateable(courseOrderEntity).ExecuteCommand();

                                //3.返回一个xml格式的结果给微信服务器
                                if (rows > 0)
                                {
                                    strResult = PayHelper.GetReturnXml("SUCCESS", "OK");
                                }
                                else
                                {
                                    strResult = PayHelper.GetReturnXml("FAIL", "订单状态更新失败");
                                }
                            }
                            else
                            {
                                strResult = PayHelper.GetReturnXml("SUCCESS", "OK");
                            }
                        }
                        else
                        {
                            strResult = PayHelper.GetReturnXml("FAIL", "支付结果中微信订单号数据库不存在!");
                        }
                    }
                    else
                    {
                        strResult = PayHelper.GetReturnXml("FAIL", "签名不一致!");
                    }
                }
                else
                {
                    strResult = PayHelper.GetReturnXml("FAIL", "支付通知失败!");
                }
            }
            else
            {
                strResult = PayHelper.GetReturnXml("FAIL", "支付通知失败!");
            }

            return(strResult);
        }