Exemple #1
0
        public void ProcessRequest(HttpContext context)
        {
            string sTipMessage = string.Empty;

            try
            {
                logger.Info("----------------微信退款查询开始---------------------");

                string appid         = context.Request.Form["appid"];
                string out_refund_no = context.Request.Form["out_refund_no"];

                string sign = context.Request["sign"];
                //签名Key
                QueryAccountResult payAccount = ApiHelper.QueryPayAccount(appid, 2, logger);
                string             sSignKey   = "HJHSJHFSUOUSF564564HJJJHHJSDSDSD";// payAccount.Pubkey;
                string             newSign    = GetSign(context.Request.Form, sSignKey);
                logger.Info(string.Format(@"微信退款查询的输入参数:订单号:
                                                                          out_refund_no:{0}", out_refund_no));
                if (sign == newSign)
                {//签名认证成功
                    //获取支付账户信息
                    var result = PingAnPay.PayRefundQuery(new TenPayConfig()
                    {
                        appid        = payAccount.Appid,
                        mch_id       = payAccount.Mchid,
                        key          = payAccount.Pubkey,
                        SSLCERT_PATH = payAccount.CertPath
                    }, out_refund_no);
                    sTipMessage = result.data;
                }
                else
                {
                    sTipMessage = "签名验证失败";
                }
            }
            catch (Exception e)
            {
                logger.Info("----------------微信退款查询异常---------------------");
                logger.Fatal("异常错误信息:" + e.Message, e);
                sTipMessage = "System Server Error";
            }
            context.Response.Clear();
            context.Response.ContentType = "text/xml";
            context.Response.Write(sTipMessage);
        }
Exemple #2
0
 public void ProcessRequest(HttpContext context)
 {
     try
     {
         var result = string.Empty;//返回结果
         //创建订单
         string requestData = context.Request.Form["orderInfo"];
         logger.Info("请求参数:" + requestData);
         var orderInfo = JsonConvert.DeserializeObject <HWOrder>(requestData);
         //获取用户的真实IP
         string ip = context.Request.UserHostAddress;
         if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
         {
             ip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0];//获取用户的真实的IP
         }
         orderInfo.user_ip         = ip.Split(':')[0];
         orderInfo.down_channel_no = ConfigurationManager.AppSettings["jsyh_channel_no"];//获取下游渠道编号
         var revOrderResult = Server.SaveOrder(orderInfo, logger);
         logger.Info(string.Format("订单状态:{0},消息:{1}", revOrderResult.Status, revOrderResult.ResultMsg));
         if (revOrderResult.Status)
         {
             logger.Info("订单保存成功");
             QueryAccountResult accountResult = ApiHelper.QueryPayAccount(revOrderResult.AppId, revOrderResult.AccountType, logger);
             if (!accountResult.Status)
             {
                 logger.Info("获取支付信息失败");
                 result = JsonConvert.SerializeObject(new { success = false, info = "获取支付信息失败" });
             }
             else
             {
                 //拼接支付信息  HttpUtility.UrlEncode
                 var PayParams = new Dictionary <string, object>();
                 PayParams.Add("MERCHANTID", accountResult.Appid); //商户代码
                 PayParams.Add("POSID", accountResult.Mchid);      //商户柜台代码
                 PayParams.Add("BRANCHID", accountResult.Ext1);    //分行代码
                 PayParams.Add("ORDERID", revOrderResult.OrderNo); //商户订单号PAYMENT
                 PayParams.Add("PAYMENT", revOrderResult.PayFee);  //付款金额
                 PayParams.Add("CURCODE", "01");                   //币种
                 PayParams.Add("TXCODE", accountResult.Ext2);      //交易码
                 PayParams.Add("REMARK1", string.Empty);
                 PayParams.Add("REMARK2", string.Empty);
                 PayParams.Add("TYPE", 1);    //接口类型
                 PayParams.Add("PUB", accountResult.Pubkey);
                 PayParams.Add("GATEWAY", 0); //网关类型 默认送0
                 PayParams.Add("CLIENTIP", string.Empty);
                 PayParams.Add("REGINFO", string.Empty);
                 PayParams.Add("PROINFO", string.Empty);
                 PayParams.Add("REFERER", string.Empty);
                 StringBuilder Sign = new StringBuilder();
                 foreach (var key in PayParams.Keys)
                 {
                     Sign.AppendFormat("{0}={1}&", key, PayParams[key].ToString());
                 }
                 string sign = TenPayHelp.MD5(Sign.ToString().TrimEnd('&')).ToLower();
                 PayParams.Add("TIMEOUT", string.Empty);
                 PayParams.Add("MAC", sign);
                 PayParams.Remove("PUB");
                 StringBuilder PayInfo = new StringBuilder();
                 foreach (var key in PayParams.Keys)
                 {
                     PayInfo.AppendFormat("{0}={1}&", key, PayParams[key].ToString());
                 }
                 string payinfo = PayInfo.ToString().TrimEnd('&');
                 result = JsonConvert.SerializeObject(new
                 {
                     success = true,
                     info    = "支付请求成功",
                     data    = payinfo
                 });
             }
         }
         else
         {
             logger.Info("订单保存失败");
             result = JsonConvert.SerializeObject(new { success = false, info = "订单保存失败" });
             ApiHelper.SetFail(revOrderResult.OrderNo, revOrderResult.ResultMsg, logger);
         }
         context.Response.ContentType = "text/plain";
         context.Response.Write(result);
     }
     catch (Exception e)
     {
         logger.Info(e.Message);
         logger.Fatal(e.Message, e);
         var res = new { code = 200, info = "服务错误" };
         context.Response.ContentType = "text/plain";
         context.Response.Write(JsonConvert.SerializeObject(res));
     }
 }
Exemple #3
0
 public void ProcessRequest(HttpContext context)
 {
     try
     {
         var result = string.Empty;//返回结果
         //创建订单
         string requestData = context.Request.Form["orderInfo"];
         logger.Info("华为支付请求参数:" + requestData);
         HWOrder orderInfo = JsonConvert.DeserializeObject <HWOrder>(requestData);
         if (!string.IsNullOrEmpty(orderInfo.orderno))
         {//订单编号不为空
             //根据订单编号获取订单数据
             orderInfo = Server.GetOrderInfo(orderInfo.orderno, orderInfo.pay_type);
             if (orderInfo == null)
             {
                 logger.Info("订单数据异常");
                 result = JsonConvert.SerializeObject(new { success = false, info = "订单数据异常" });
             }
         }
         //获取用户的真实IP
         string ip = context.Request.UserHostAddress;
         if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
         {
             ip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0];//获取用户的真实的IP
         }
         orderInfo.user_ip         = ip.Split(':')[0];
         orderInfo.down_channel_no = ConfigurationManager.AppSettings["hw_channel_no"];//获取下游渠道编号
         RevOrderResult revOrderResult = null;
         //判断是否是慢充
         //if (orderInfo.recharge_mode == 0)
         //    revOrderResult = Server.SaveOrder(orderInfo, logger);
         //else
         revOrderResult = Server.SaveSlowOrder(orderInfo, logger);
         logger.Info(string.Format("订单状态:{0},消息:{1}", revOrderResult.Status, revOrderResult.ResultMsg));
         if (revOrderResult.Status)
         {
             logger.Info("订单保存成功");
             QueryAccountResult accountResult = ApiHelper.QueryPayAccount(revOrderResult.AppId, revOrderResult.AccountType, logger);
             if (!accountResult.Status)
             {
                 logger.Info("获取支付信息失败");
                 result = JsonConvert.SerializeObject(new { success = false, info = "获取支付信息失败" });
             }
             //请求支付
             var message = PayRequest.Instance.bookOrder(new TenPayConfig()
             {
                 appid  = accountResult.Appid,
                 mch_id = accountResult.Mchid,
                 key    = accountResult.Pubkey,
                 merchant_private_key = accountResult.Prikey
             }, orderInfo.user_ip, revOrderResult.OrderNo, orderInfo.product_name, revOrderResult.PayFee, revOrderResult.AsyncUrl, revOrderResult.SyncUrl, Convert.ToInt32(orderInfo.pay_type), 6);
             if (message.state)
             {
                 logger.Info("支付请求成功");
                 result = JsonConvert.SerializeObject(new { success      = true,
                                                            url          = message.data,
                                                            info         = "支付请求成功",
                                                            orderno      = revOrderResult.OrderNo,
                                                            appid        = revOrderResult.AppId,
                                                            account_type = revOrderResult.AccountType });
             }
             else
             {
                 logger.Info("支付请求失败");
                 logger.Info("支付返回的数据:" + message.error);
                 result = JsonConvert.SerializeObject(new { success = false, info = "支付请求失败" });
             }
         }
         else
         {
             logger.Info("订单保存失败");
             result = JsonConvert.SerializeObject(new { success = false, info = "订单保存失败" });
             ApiHelper.SetFail(revOrderResult.OrderNo, revOrderResult.ResultMsg, logger);
         }
         context.Response.ContentType = "text/plain";
         context.Response.Write(result);
     }
     catch (Exception e)
     {
         logger.Info(e.Message);
         logger.Fatal(e.Message, e);
         var res = new { code = 200, msg = "服务错误" };
         context.Response.ContentType = "text/plain";
         context.Response.Write(JsonConvert.SerializeObject(res));
     }
 }
Exemple #4
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                string orderno      = context.Request.Form["orderno"];//查询的订单号
                string appid        = context.Request.Form["appid"];
                string account_type = context.Request.Form["account_type"];
                if (!string.IsNullOrEmpty(orderno))
                {
                    //查询订单支付状态
                    //获取账户信息
                    var type = Convert.ToInt32(account_type);
                    QueryAccountResult accountResult = ApiHelper.QueryPayAccount(appid, type, logger);
                    if (type == 2)
                    {//查询微信支付状态
                        string wxPayType = System.Configuration.ConfigurationManager.AppSettings["wxPayMtd"];
                        wxPayType = string.IsNullOrEmpty(wxPayType) ? "weixin" : wxPayType;
                        Message result = null;
                        var     config = new TenPayConfig()
                        {
                            appid  = accountResult.Appid,
                            key    = accountResult.Pubkey,
                            mch_id = accountResult.Mchid
                        };
                        if (wxPayType.Equals("weixin"))
                        {
                            result = TenPayMode.OrderQuery(config, orderno);
                        }
                        else if (wxPayType.Equals("pingan"))
                        {
                            result = PingAnPay.OrderQuery(config, orderno);
                        }
                        else
                        {
                            logger.Info("微信查询支付订单的wxPayType参数错误");//日志输出
                            context.Response.ContentType = "text/plain";
                            context.Response.Write(JsonConvert.SerializeObject(new { success = false, info = "查询出错" }));
                            return;
                        }

                        if (result.state)
                        {                                                                       //支付成功
                            logger.Info("微信查询支付订单的返回参数" + JsonConvert.SerializeObject(result)); //日志输出
                            context.Response.ContentType = "text/plain";
                            context.Response.Write(JsonConvert.SerializeObject(new { success = true, info = "支付成功" }));
                        }
                        else
                        {
                            logger.Info("微信查询支付订单的返回参数" + JsonConvert.SerializeObject(result));//日志输出
                            context.Response.ContentType = "text/plain";
                            context.Response.Write(JsonConvert.SerializeObject(new { success = false, info = "支付失败" }));
                        }
                    }
                    else
                    {
                        //查询支付宝支付状态
                        IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do",
                                                                 accountResult.Appid, //"2017081108144704",//支付宝分配给开发者的应用ID
                                                                 accountResult.Prikey,
                                                                 "json",              //仅支持JSON
                                                                 "1.0",               //调用的接口版本,固定为:1.0
                                                                 "RSA2",              //商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
                                                                 accountResult.Pubkey,
                                                                 "utf-8",
                                                                 false);
                        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
                        AlipayTradeQueryModel   model   = new AlipayTradeQueryModel();
                        model.OutTradeNo = orderno;
                        request.SetBizModel(model);
                        AlipayTradeQueryResponse response = client.Execute(request);
                        //获取响应返回的数据
                        if (!response.IsError)
                        {
                            if (response.TradeStatus == "TRADE_SUCCESS")
                            {
                                context.Response.ContentType = "text/plain";
                                context.Response.Write(JsonConvert.SerializeObject(new { success = true, info = "支付成功" }));
                            }
                            else
                            {
                                logger.Info("支付宝查询支付订单的返回参数" + response.Body);//日志输出
                                context.Response.ContentType = "text/plain";
                                context.Response.Write(JsonConvert.SerializeObject(new { success = false, info = "支付失败" }));
                            }
                        }
                        else
                        {                                                                     //错误信息
                            logger.Info("支付宝查询支付订单的返回参数:" + response.Code + response.SubMsg); //日志输出
                            context.Response.ContentType = "text/plain";
                            context.Response.Write(JsonConvert.SerializeObject(new { success = false, info = "支付失败" }));
                        }
                    }
                }
                else
                {
                    context.Response.ContentType = "text/plain";
                    context.Response.Write(JsonConvert.SerializeObject(new { success = false, info = "缺少参数" }));
                }
            }
            catch (Exception e)
            {
                logger.Info(e.Message);
                logger.Fatal(e.Message, e);
                var res = new { success = false, info = "服务错误" };
                context.Response.ContentType = "text/plain";
                context.Response.Write(JsonConvert.SerializeObject(res));
            }
        }