コード例 #1
0
        public ActionResult FeedBack()
        {
            //创建支付应答对象
            ResponseHandler resHandler = new ResponseHandler(null);

            resHandler.Init();
            resHandler.SetKey(TenPayInfo.Key, TenPayInfo.AppKey);

            string result = String.Empty;

            //判断签名
            if (resHandler.IsWXsignfeedback())
            {
                //回复服务器处理成功
                result += "OK";
                result += "OK:" + resHandler.GetDebugInfo();
            }
            else
            {
                //sha1签名失败
                result += "fail";
                result += "fail:" + resHandler.GetDebugInfo();
            }
            return(Content(result));
        }
コード例 #2
0
        public ActionResult FeedBack()
        {
            //创建支付应答对象
            ResponseHandler resHandler = new ResponseHandler(null);

            resHandler.Init();
            resHandler.SetKey(TenPayInfo.Key, TenPayInfo.AppKey);

            //判断签名
            if (resHandler.IsWXsignfeedback())
            {
                //回复服务器处理成功
                Response.Write("OK");
                Response.Write("OK:" + resHandler.GetDebugInfo());
            }
            else
            {
                //sha1签名失败
                Response.Write("fail");
                Response.Write("fail:" + resHandler.GetDebugInfo());
            }
            return(null);
        }
コード例 #3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //创建支付应答对象
        ResponseHandler resHandler = new ResponseHandler(Context);

        resHandler.Init();
        resHandler.SetKey(TenPayInfo.Key, TenPayInfo.AppKey);

        //判断签名
        if (resHandler.IsWXsignfeedback())
        {
            //回复服务器处理成功
            Response.Write("OK");
            Response.Write("OK:" + resHandler.GetDebugInfo());
        }
        else
        {
            //sha1签名失败
            Response.Write("fail");
            Response.Write("fail:" + resHandler.GetDebugInfo());
        }
        Response.End();
    }
コード例 #4
0
        public ActionResult PayNotifyUrl()
        {
            ResponseHandler resHandler = new ResponseHandler(null);

            resHandler.Init();
            resHandler.SetKey(TenPayInfo.Key, TenPayInfo.AppKey);

            string message;

            //判断签名
            if (resHandler.IsTenpaySign())
            {
                if (resHandler.IsWXsign())
                {
                    //商户在收到后台通知后根据通知ID向财付通发起验证确认,采用后台系统调用交互模式
                    string notify_id = resHandler.GetParameter("notify_id");
                    //取结果参数做业务处理
                    string out_trade_no = resHandler.GetParameter("out_trade_no");
                    //财付通订单号
                    string transaction_id = resHandler.GetParameter("transaction_id");
                    //金额,以分为单位
                    string total_fee = resHandler.GetParameter("total_fee");
                    //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                    string discount = resHandler.GetParameter("discount");
                    //支付结果
                    string trade_state = resHandler.GetParameter("trade_state");

                    string payMessage = null;

                    //即时到账
                    if ("0".Equals(trade_state))
                    {
                        //------------------------------
                        //处理业务开始
                        //------------------------------

                        //处理数据库逻辑
                        //注意交易单不要重复处理
                        //注意判断返回金额

                        //------------------------------
                        //处理业务完毕
                        //------------------------------

                        //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                        payMessage = "success 后台通知成功";
                    }
                    else
                    {
                        payMessage = "支付失败";
                    }
                    ViewData["payMessage"] = payMessage;
                    //回复服务器处理成功
                    message = "success";
                }

                else
                {//SHA1签名失败
                    message = "SHA1签名失败" + resHandler.GetDebugInfo();
                }
            }

            else
            {//md5签名失败
                message = "md5签名失败" + resHandler.GetDebugInfo();
            }
            ViewData["message"] = message;

            return(Content("Success"));
        }
コード例 #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ResponseHandler resHandler = new ResponseHandler(Context);

        resHandler.Init();
        resHandler.SetKey(WeixinPayUtil.Key, WeixinPayUtil.AppKey);

        //判断签名
        if (resHandler.IsTenpaySign())
        {
            if (resHandler.IsWXsign())
            {
                //商户在收到后台通知后根据通知ID向财付通发起验证确认,采用后台系统调用交互模式
                string notify_id = resHandler.GetParameter("notify_id");
                //取结果参数做业务处理
                string out_trade_no = resHandler.GetParameter("out_trade_no");
                //财付通订单号
                string transaction_id = resHandler.GetParameter("transaction_id");
                //金额,以分为单位
                string total_fee = resHandler.GetParameter("total_fee");
                //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                string discount = resHandler.GetParameter("discount");
                //支付结果
                string trade_state = resHandler.GetParameter("trade_state");

                //即时到账
                if ("0".Equals(trade_state))
                {
                    //------------------------------
                    //处理业务开始
                    //------------------------------

                    //处理数据库逻辑
                    //注意交易单不要重复处理
                    //注意判断返回金额

                    //------------------------------
                    //处理业务完毕
                    //------------------------------

                    //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                    Response.Write("success 后台通知成功");
                }
                else
                {
                    Response.Write("支付失败");
                }
                //回复服务器处理成功
                Response.Write("success");
            }

            else
            {//SHA1签名失败
                Response.Write("fail -SHA1 failed");
                Response.Write(resHandler.GetDebugInfo());
            }
        }

        else
        {//md5签名失败
            Response.Write("fail -md5 failed");
            Response.Write(resHandler.GetDebugInfo());
        }
    }
コード例 #6
0
        public ActionResult Index()
        {
            ResponseHandler resHandler = new ResponseHandler(null);

            resHandler.Init();
            resHandler.SetKey(SiteConfig.MCHKEY);

            if (!resHandler.IsTenpaySign())
            {
                return(Content("签名错误!"));
            }

            string return_code = resHandler.GetParameter("return_code");
            string return_msg  = resHandler.GetParameter("return_msg");

            //即时到账
            if (return_code == "SUCCESS")
            {
                string result_code = resHandler.GetParameter("result_code");
                string err_code    = resHandler.GetParameter("err_code");

                //验证请求是否从微信发过来(安全)
                if (!resHandler.IsTenpaySign() || return_code.ToUpper() != "SUCCESS")  //支付签名检验
                {
                    LogUtility.Order.ErrorFormat("订单支付失败:{0} / {1}", return_code, return_msg);
                    return(Content("wrong"));//错误的订单处理
                }
                else
                {
                    //直到这里,才能认为交易真正成功了,可以进行数据库操作,但是别忘了返回规定格式的消息!

                    var orderService = ObjectFactory.GetInstance <OrderService>();

                    string out_trade_no = resHandler.GetParameter("out_trade_no");

                    var order = orderService.GetObject(z => z.OrderNumber == out_trade_no);
                    //判断订单是否被处理过
                    if (order.PayType == (int)Order_PayType.微信支付 && order.Status == (int)Order_Status.已支付)
                    {
                        LogUtility.Order.InfoFormat("订单{0}已被处理", order.OrderNumber);
                        return(Content("SUCCESS"));
                    }
                    lock (PayLock)
                    {
                        //TODO:检查支付信息

                        var fullSystemConfigCache = ObjectFactory.GetInstance <IFullSystemConfigCache>();
                        var fullSystemConfig      = fullSystemConfigCache.Data;

                        //订单支付成功处理
                        orderService.OrderFinish(order);
                        LogUtility.Order.InfoFormat("订单{0}支付成功,处理成功", order.OrderNumber);
                        return(Content("SUCCESS"));
                    }
                }
            }
            else
            {
                LogUtility.Order.ErrorFormat("订单支付失败:{0} / {1}", return_code, return_msg);
                return(Content(return_msg));
            }
        }