protected void Page_Load(object sender, EventArgs e)
        {
            //密钥
            string key = ConfigurationManager.AppSettings["tenpay_key"].ToString();

            //创建ResponseHandler实例
            WapPayPageResponseHandler resHandler = new WapPayPageResponseHandler(Context);

            resHandler.setKey(key);

            //判断签名
            if (resHandler.isTenpaySign())
            {
                //支付结果
                string pay_result = resHandler.getParameter("pay_result");
                //商户订单号
                string sp_billno = resHandler.getParameter("sp_billno");
                //财付通订单号
                string transaction_id = resHandler.getParameter("transaction_id");
                //金额,以分为单位
                string total_fee = resHandler.getParameter("total_fee");

                if ("0".Equals(pay_result))
                {
                    dynamic orderInfo = CommonRequest.ApiGetOrderInfo(sp_billno);
                    if (orderInfo != null && orderInfo.Orderinfo != null)
                    {
                        if (orderInfo.Orderinfo.PaymentStatus < 2)
                        {
                            var dic = CommonRequest.ApiUpdateOrderStausByWeiXin(sp_billno, "手机财付通支付");

                            if (dic != null && dic.ContainsKey("return") && dic["return"].ToString() == "202")
                            {
                                Response.Write("success");
                            }
                            else
                            {
                                Response.Write("fail");
                            }
                        }
                    }
                }
                else
                {
                    //当做不成功处理
                    Response.Write("支付失败");
                }
            }
            else
            {
                Response.Write("认证签名失败");
            }

            //获取debug信息,建议把debug信息写入日志,方便定位问题
            //string debuginfo = resHandler.getDebugInfo();
            //Response.Write("<br/>debuginfo:" + debuginfo + "<br/>");
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);
                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    try
                    {
                        //商户订单号

                        string out_trade_no = Request.Form["out_trade_no"];

                        //支付宝交易号

                        string trade_no = Request.Form["trade_no"];

                        //交易状态
                        string trade_status = Request.Form["trade_status"];

                        logger.Info("交易状态状态:" + trade_status);
                        if (trade_status == "TRADE_SUCCESS")
                        {
                            dynamic orderInfo = CommonRequest.ApiGetOrderInfo(out_trade_no);
                            if (orderInfo != null && orderInfo.Orderinfo != null)
                            {
                                if (orderInfo.Orderinfo.PaymentStatus < 2)
                                {
                                    var dic = CommonRequest.ApiUpdateOrderStausByWeiXin(out_trade_no, "手机支付宝网页支付");

                                    if (dic != null && dic.ContainsKey("return") && dic["return"].ToString() == "202")
                                    {
                                        Response.Write("success");
                                    }
                                    else
                                    {
                                        Response.Write("fail");
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception exc)
                    {
                        logger.Error("Notify_Url页面异常:" + exc);
                        Response.Write("fail");
                    }
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
Пример #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                logger.Info("------------------------------支付回调订单处理开始------------------------------------");
                #region 获取参数
                string OpenId       = string.Empty;
                string AppId        = string.Empty;
                string IsSubscribe  = string.Empty;
                string TimeStamp    = string.Empty;
                string NonceStr     = string.Empty;
                string AppSignature = string.Empty;
                string SignMethod   = string.Empty;
                string return_code  = string.Empty;
                string out_trade_no = string.Empty;
                string total_fee    = string.Empty;
                string postStr      = PostInput();


                if (!string.IsNullOrEmpty(postStr))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(postStr);
                    XmlElement rootElement = doc.DocumentElement;
                    //微信信息请求xml
                    OpenId       = rootElement.SelectSingleNode("openid").InnerText;
                    AppId        = rootElement.SelectSingleNode("appid").InnerText;
                    IsSubscribe  = rootElement.SelectSingleNode("is_subscribe").InnerText;
                    TimeStamp    = rootElement.SelectSingleNode("time_end").InnerText;
                    return_code  = rootElement.SelectSingleNode("return_code").InnerText;
                    out_trade_no = rootElement.SelectSingleNode("out_trade_no").InnerText;
                    total_fee    = rootElement.SelectSingleNode("total_fee").InnerText;
                }

                #endregion

                #region 订单相关业务逻辑处理

                if (return_code == "SUCCESS")
                {
                    out_trade_no = out_trade_no.Substring(0, out_trade_no.Length - 4);
                    logger.Info("out_trade_no:" + out_trade_no);
                    dynamic orderInfo = CommonRequest.ApiGetOrderInfo(out_trade_no);
                    if (orderInfo != null && orderInfo.Orderinfo != null)
                    {
                        if (orderInfo.Orderinfo.PaymentStatus < 2 && Convert.ToDecimal((orderInfo.Orderinfo.ShouldPayPrice * 100)) == Convert.ToDecimal(total_fee))
                        {
                            var dic = CommonRequest.ApiUpdateOrderStausByWeiXin(out_trade_no, "微信支付");

                            if (dic != null && dic.ContainsKey("return") && dic["return"].ToString() == "202")
                            {
                                Response.Write("success");
                                logger.Info("订单处理结果:success");
                            }
                            else
                            {
                                Response.Write("fail");
                                logger.Info("订单处理结果:fail");
                            }
                        }
                    }
                }
                #endregion
                logger.Info("------------------------------支付回调订单处理结束------------------------------------");
            }
            catch (Exception ex)
            {
                logger.Error("回调异常:" + ex);
            }
        }