Пример #1
0
        public static PayResultModel GetWxPayResult(string msg)
        {
            msg = msg.Replace("<![CDATA[", "").Replace("]]>", "");
            var         model = new PayResultModel();
            XmlDocument doc   = new XmlDocument();

            doc.LoadXml(msg);
            XmlNodeList list = doc.GetElementsByTagName("xml");
            XmlNode     xn   = list[0];

            model.return_code = xn.SelectSingleNode("//return_code").InnerText; //SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
            model.return_msg  = xn.SelectSingleNode("//return_msg").InnerText;  //返回信息,如非空,为错误原因
            if (model.return_code.Contains("SUCCESS"))
            {
                model.result_code = xn.SelectSingleNode("//result_code").InnerText; //业务结果 SUCCESS/FAIL
                model.mch_appid   = xn.SelectSingleNode("//mch_appid").InnerText;   //商户appid
                model.mchid       = xn.SelectSingleNode("//mchid").InnerText;       //商户号
                if (model.result_code.Contains("SUCCESS"))
                {
                    model.partner_trade_no = xn.SelectSingleNode("//partner_trade_no").InnerText; //商户订单号
                    model.payment_no       = xn.SelectSingleNode("//payment_no").InnerText;       //微信订单号
                    model.payment_time     = xn.SelectSingleNode("//payment_time").InnerText;     //微信支付成功时间
                    model.nonce_str        = xn.SelectSingleNode("//nonce_str").InnerText;        //随机字符串,不长于32位
                    //model.device_info = xn.SelectSingleNode("//device_info").InnerText;   //微信支付分配的终端设备号
                }
                else
                {
                    model.err_code     = xn.SelectSingleNode("//err_code").InnerText;     //错误代码
                    model.err_code_des = xn.SelectSingleNode("//err_code_des").InnerText; //错误代码描述
                }
            }
            return(model);
        }
Пример #2
0
        /// <summary>
        /// 生成微信二维码订单
        /// 窦海超
        /// 2015年5月13日 14:57:38
        /// </summary>
        /// <param name="orderNo">订单号</param>
        /// <param name="WxCodeUrl">微信地址</param>
        /// <param name="TotalPrice">总金额,注意:微信要乘以100=最后支付的金额,这里传值前不要乘以100</param>
        /// <returns></returns>
        public ResultModel <PayResultModel> CreateWxPayOrder(string orderNo, decimal totalPrice, string wxCodeUrl)
        {
            //支付方式-主订单ID-子订单ID
            PayResultModel resultModel = new PayResultModel();
            string         code_url    = wxCodeUrl;

            if (string.IsNullOrEmpty(code_url))//先查一下库是否存在二维码地址,不存在去微信生成
            {
                string       wx_nonceStr = RequestHandler.getNoncestr();
                WXpayService wxpay       = new WXpayService("127.0.0.1", orderNo, "e代送", wx_nonceStr, (Convert.ToInt32(totalPrice * 100)).ToString());//传给微信的金额
                code_url = wxpay.CreateNativeApi();
                if (string.IsNullOrEmpty(code_url))
                {
                    return(ResultModel <PayResultModel> .Conclude(AliPayStatus.fail));
                }
                int productId = ParseHelper.ToInt(orderNo.Split('_')[0]);
                int orderId   = ParseHelper.ToInt(orderNo.Split('_')[1]);
                int childId   = ParseHelper.ToInt(orderNo.Split('_')[2]);
                if (productId == ProductEnum.OrderChildPay.GetHashCode())
                {
                    //如果是子订单支付
                    orderChildDao.UpdateWxCodeUrl(orderId, childId, code_url);//把获取到的支付宝地址更新到子订单下
                }
            }

            resultModel.aliQRCode = code_url;                         //微信地址
            resultModel.orderNo   = orderNo;                          //订单号
            resultModel.payAmount = totalPrice;                       //总金额,没乘以100的值
            resultModel.payType   = PayTypeEnum.WeiXin.GetHashCode(); //微信
            resultModel.notifyUrl = ETS.Config.WXNotifyUrl;           //回调地址
            return(ResultModel <PayResultModel> .Conclude(AliPayStatus.success, resultModel));
        }
Пример #3
0
 /// <summary>
 /// 生成支付宝二维码
 /// 窦海超
 /// 2015年5月12日 14:36:37
 /// </summary>
 /// <param name="orderNo">订单号</param>
 /// <param name="payAmount">支付金额</param>
 /// <param name="orderId">订单ID,用于查询商家信息用</param>
 /// <returns></returns>
 private ResultModel <PayResultModel> CreateAliPayOrder(string orderNo, decimal payAmount, int orderId, int payStyle)
 {
     #region 通过订单ID,用于查询商家信息用
     BusinessDM businessModel = new BusinessDao().GetByOrderId(orderId);
     string     businessName  = string.Empty;
     if (businessModel == null || string.IsNullOrEmpty(businessModel.Name))
     {
         businessName = "e代送收款";
     }
     else
     {
         businessName = businessModel.Name;
     }
     #endregion
     PayResultModel resultModel = new PayResultModel();
     string         qrcodeUrl   = string.Empty;
     if (payStyle == 1)//用户扫二维码
     {
         //qrcodeUrl = alipayIntegrate.GetQRCodeUrl(orderNo, payAmount, businessName);
         AliModel aliModel = new AliModel()
         {
             body        = string.Empty,
             orderNo     = orderNo,
             payMoney    = payAmount,
             productName = businessName
         };
         qrcodeUrl = new AliCallBack().GetOrder(aliModel);
         if (string.IsNullOrEmpty(qrcodeUrl))
         {
             return(ResultModel <PayResultModel> .Conclude(AliPayStatus.fail));
         }
     }
     resultModel.aliQRCode = qrcodeUrl;
     resultModel.orderNo   = orderNo;
     resultModel.payAmount = payAmount;
     resultModel.payType   = PayTypeEnum.ZhiFuBao.GetHashCode();
     resultModel.notifyUrl = ETS.Config.NotifyUrl;
     return(ResultModel <PayResultModel> .Conclude(AliPayStatus.success, resultModel));
 }
Пример #4
0
        public APIResponse PayResultNotify(PayResultModel model)
        {
            IResult result = BizFactory.Pay.ResultNotify(model.UserId, ResultNotifyParty.App, model);

            return(new APIResponse(result));
        }
Пример #5
0
        public async Task <MessageModel <PayReturnResultModel> > Pay(PayNeedModel payModel)
        {
            _logger.LogInformation("支付开始");
            MessageModel <PayReturnResultModel> messageModel = new MessageModel <PayReturnResultModel>();

            messageModel.response = new PayReturnResultModel();
            string url        = string.Empty;
            string param      = string.Empty;
            string returnData = string.Empty;

            try
            {
                _logger.LogInformation($"原始GET参数->{_httpContextAccessor.HttpContext.Request.QueryString}");
                //被扫支付
                string host = "https://ibsbjstar.ccb.com.cn/CCBIS/B2CMainPlat_00_BEPAY?";
                ////商户信息
                //string merInfo = "MERCHANTID=105910100190000&POSID=000000000&BRANCHID=610000000";
                ////获取柜台完整公钥
                //string pubKey = "30819d300d06092a864886f70d010101050003818b0030818702818100a32fb2d51dda418f65ca456431bd2f4173e41a82bb75c2338a6f649f8e9216204838d42e2a028c79cee19144a72b5b46fe6a498367bf4143f959e4f73c9c4f499f68831f8663d6b946ae9fa31c74c9332bebf3cba1a98481533a37ffad944823bd46c305ec560648f1b6bcc64d54d32e213926b26cd10d342f2c61ff5ac2d78b020111";
                ////加密原串
                //string param = merInfo + "&MERFLAG=1&TERMNO1=&TERMNO2=&ORDERID=937857156" +
                //        "&QRCODE=134737690209713400&AMOUNT=0.01&TXCODE=PAY100&PROINFO=&REMARK1=&REMARK2=&SMERID=&SMERNAME=&SMERTYPEID=" +
                //        "&SMERTYPE=&TRADECODE=&TRADENAME=&SMEPROTYPE=&PRONAME=";

                Dictionary <string, string> dic = new Dictionary <string, string>();

                //支付信息
                dic.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号
                dic.Add("POSID", StaticPayInfo.POSID);           // => self::POSID, // 柜台号
                dic.Add("BRANCHID", StaticPayInfo.BRANCHID);     // => self::BRANCHID, // 分行号
                dic.Add("TXCODE", "PAY100");                     // => 'PAY100', // 交易码
                dic.Add("MERFLAG", "1");                         // => '', // 商户类型 1线上 2线下
                dic.Add("ORDERID", payModel.ORDERID);            //payModel.ORDERID);// => '', // 订单号
                dic.Add("QRCODE", payModel.QRCODE);              // => '', // 码信息(一维码、二维码)
                dic.Add("AMOUNT", payModel.AMOUNT);              // => '0.01', // 订单金额,单位:元
                dic.Add("PROINFO", payModel.PROINFO);            // => '', // 商品名称
                dic.Add("REMARK1", payModel.REMARK1);            // => '', // 备注 1
                dic.Add("REMARK2", payModel.REMARK2);            // => '', // 备注 2

                //dic.Add("TERMNO1", "");// => '', // 终端编号 1
                //dic.Add("TERMNO2", "");// => '', // 终端编号 2
                //dic.Add("GROUPMCH", "");// => '', // 集团商户信息
                //dic.Add("FZINFO1", "");// => '', // 分账信息一
                //dic.Add("FZINFO2", "");// => '', // 分账信息二
                //dic.Add("SUB_APPID", "");// => '', // 子商户公众账号 ID
                //dic.Add("RETURN_FIELD", "");// => '', // 返回信息位图
                //dic.Add("USERPARAM", "");// => '', // 实名支付
                //dic.Add("detail", "");// => '', // 商品详情
                //dic.Add("goods_tag", "");// => '', // 订单优惠标记

                //商户信息
                Dictionary <string, string> dicInfo = new Dictionary <string, string>();
                dicInfo.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号
                dicInfo.Add("POSID", StaticPayInfo.POSID);           // => self::POSID, // 柜台号
                dicInfo.Add("BRANCHID", StaticPayInfo.BRANCHID);     // => self::BRANCHID, // 分行号
                var Info = StringHelper.GetPars(dicInfo);


                //获取拼接请求串
                param = StringHelper.GetPars(dic);

                //加密
                var paramEncryption = new CCBPayUtil().makeCCBParam(param, StaticPayInfo.pubKey);
                //拼接请求串
                url = host + Info + "&ccbParam=" + paramEncryption;
                //请求
                _logger.LogInformation($"请求地址->{url}");
                _logger.LogInformation($"请求参数->{param}");
                PayResultModel payResult;
                try
                {
                    returnData = await GetNetData.PostAsync(url);

                    //转换数据
                    try
                    {
                        payResult = JsonHelper.ParseFormByJson <PayResultModel>(returnData);
                    }
                    catch
                    {
                        payResult = new PayResultModel {
                            RESULT = "N", ERRMSG = "参数错误", ORDERID = payModel.ORDERID, AMOUNT = payModel.AMOUNT
                        };
                        returnData = StringHelper.GetCusLine(returnData, 15);
                    }
                    _logger.LogInformation($"响应数据->{returnData}");
                }
                catch (Exception ex)
                {
                    _logger.LogInformation($"异常信息:{ex.Message}");
                    _logger.LogInformation($"异常堆栈:{ex.StackTrace}");
                    messageModel = await  PayCheck(payModel, 1);

                    return(messageModel);
                }
                switch (payResult.RESULT)
                {
                case "Y":
                    Dictionary <string, string> dicCheckPars = new Dictionary <string, string>();
                    dicCheckPars.Add("RESULT", payResult.RESULT);
                    dicCheckPars.Add("ORDERID", payResult.ORDERID);
                    dicCheckPars.Add("AMOUNT", payResult.AMOUNT);
                    dicCheckPars.Add("WAITTIME", payResult.WAITTIME);
                    dicCheckPars.Add("TRACEID", payResult.TRACEID);
                    string strCheckPars = StringHelper.GetPars(dicCheckPars);
                    if (NotifyCheck(strCheckPars, payResult.SIGN, StaticPayInfo.pubKey))
                    {
                        messageModel.success = true;
                        messageModel.msg     = "支付成功";
                    }
                    else
                    {
                        messageModel.success = false;
                        messageModel.msg     = "签名失败";
                    }
                    break;

                case "N":
                    messageModel.success = false;
                    messageModel.msg     = "支付失败";
                    break;

                case "U":
                case "Q":
                    int waittime = payResult.WAITTIME.ObjToInt();
                    if (waittime <= 0)
                    {
                        waittime = 5;                   //如果需要等待默认等待5秒后再次查询
                    }
                    Thread.Sleep(waittime * 1000);
                    //轮询查询
                    messageModel = await PayCheck(payModel, 1);

                    break;

                default:
                    messageModel.success = false;
                    messageModel.msg     = "支付失败";
                    break;
                }
                messageModel.response.ORDERID    = payResult.ORDERID;
                messageModel.response.ERRCODE    = payResult.ERRCODE;
                messageModel.response.ERRMSG     = payResult.ERRMSG;
                messageModel.response.TRACEID    = payResult.TRACEID;
                messageModel.response.AMOUNT     = payResult.AMOUNT;
                messageModel.response.QRCODETYPE = payResult.QRCODETYPE;
            }
            catch (Exception ex)
            {
                messageModel.success         = false;
                messageModel.msg             = "服务错误";
                messageModel.response.ERRMSG = ex.Message;
                _logger.LogInformation($"异常信息:{ex.Message}");
                _logger.LogInformation($"异常堆栈:{ex.StackTrace}");
            }
            finally
            {
                _logger.LogInformation($"返回数据->{JsonHelper.GetJSON<MessageModel<PayReturnResultModel>>(messageModel)}");
                _logger.LogInformation("支付结束");
            }
            return(messageModel);
        }
Пример #6
0
        public async Task <MessageModel <PayReturnResultModel> > PayCheck(PayNeedModel payModel, int times)
        {
            _logger.LogInformation("轮序开始");
            MessageModel <PayReturnResultModel> messageModel = new MessageModel <PayReturnResultModel>();

            messageModel.response = new PayReturnResultModel();
            string url        = string.Empty;
            string param      = string.Empty;
            string returnData = string.Empty;

            try
            {
                string host = "https://ibsbjstar.ccb.com.cn/CCBIS/B2CMainPlat_00_BEPAY?";

                Dictionary <string, string> dic = new Dictionary <string, string>();

                dic.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号
                dic.Add("POSID", StaticPayInfo.POSID);           // => self::POSID, // 柜台号
                dic.Add("BRANCHID", StaticPayInfo.BRANCHID);     // => self::BRANCHID, // 分行号
                dic.Add("TXCODE", "PAY101");                     // => 'PAY100', // 交易码
                dic.Add("QRYTIME", times.ToString());            // => '', // 查询此时(每次加1)
                dic.Add("MERFLAG", "1");                         // => '', // 商户类型
                dic.Add("ORDERID", payModel.ORDERID);            // => '', // 订单号
                dic.Add("QRCODE", payModel.QRCODE);              // => '', // 码信息(一维码、二维码)


                //dic.Add("GROUPMCH", "");// => '', // 集团商户信息
                //dic.Add("QRCODETYPE", "");// => '', // 支付类型1:龙支付 2:微信 3:支付宝 4:银联
                //dic.Add("TERMNO1", "");// => '', // 终端编号 1
                //dic.Add("TERMNO2", "");// => '', // 终端编号 2
                //dic.Add("AMOUNT", "");// => '0.01', // 订单金额,单位:元
                //dic.Add("PROINFO", "");// => '', // 商品名称
                //dic.Add("REMARK1", "");// => '', // 备注 1
                //dic.Add("REMARK2", "");// => '', // 备注 2
                //dic.Add("FZINFO1", "");// => '', // 分账信息一
                //dic.Add("FZINFO2", "");// => '', // 分账信息二
                //dic.Add("SUB_APPID", "");// => '', // 子商户公众账号 ID
                //dic.Add("RETURN_FIELD", "");// => '', // 返回信息位图
                //dic.Add("USERPARAM", "");// => '', // 实名支付
                //dic.Add("detail", "");// => '', // 商品详情
                //dic.Add("goods_tag", "");// => '', // 订单优惠标记

                //商户信息
                Dictionary <string, string> dicInfo = new Dictionary <string, string>();
                dicInfo.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号
                dicInfo.Add("POSID", StaticPayInfo.POSID);           // => self::POSID, // 柜台号
                dicInfo.Add("BRANCHID", StaticPayInfo.BRANCHID);     // => self::BRANCHID, // 分行号
                var Info = StringHelper.GetPars(dicInfo);

                //var newDic = dic.OrderBy(t => t.Key).ToDictionary(o => o.Key, p => p.Value);
                //参数信息
                param = StringHelper.GetPars(dic);
                //加密
                var paramEncryption = new CCBPayUtil().makeCCBParam(param, StaticPayInfo.pubKey);
                //拼接请求串
                url = host + Info + "&ccbParam=" + paramEncryption;
                //请求
                _logger.LogInformation($"请求地址->{url}");
                _logger.LogInformation($"请求参数->{param}");
                //转换数据
                PayResultModel payResult;
                try
                {
                    returnData = await GetNetData.PostAsync(url);

                    _logger.LogInformation($"响应数据->{returnData}");
                }
                catch (Exception ex)
                {
                    _logger.LogInformation($"异常信息:{ex.Message}");
                    _logger.LogInformation($"异常堆栈:{ex.StackTrace}");
                    return(await PayCheck(payModel, ++times));
                }


                try
                {
                    payResult = JsonHelper.ParseFormByJson <PayResultModel>(returnData);
                }
                catch
                {
                    payResult = new PayResultModel {
                        RESULT = "N", ERRMSG = "参数错误", ORDERID = payModel.ORDERID, AMOUNT = payModel.AMOUNT
                    };
                }

                switch (payResult.RESULT)
                {
                case "Y":
                    Dictionary <string, string> dicCheckPars = new Dictionary <string, string>();
                    dicCheckPars.Add("RESULT", payResult.RESULT);
                    dicCheckPars.Add("ORDERID", payResult.ORDERID);
                    dicCheckPars.Add("AMOUNT", payResult.AMOUNT);
                    dicCheckPars.Add("WAITTIME", payResult.WAITTIME);
                    string strCheckPars = StringHelper.GetPars(dicCheckPars);
                    if (NotifyCheck(strCheckPars, payResult.SIGN, StaticPayInfo.pubKey))
                    {
                        messageModel.success = true;
                        messageModel.msg     = "支付成功";
                    }
                    else
                    {
                        messageModel.success = false;
                        messageModel.msg     = "签名失败";
                    }
                    break;

                case "N":
                    messageModel.success = false;
                    messageModel.msg     = "支付失败";
                    break;

                case "U":
                case "Q":
                    int waittime = payResult.WAITTIME.ObjToInt();
                    if (waittime <= 0)
                    {
                        waittime = 5;                   //如果需要等待默认等待5秒后再次查询
                    }
                    Thread.Sleep(waittime * 1000);
                    //改成轮询查询
                    messageModel = await PayCheck(payModel, ++times);

                    break;

                default:
                    messageModel.success = false;
                    messageModel.msg     = "支付失败";
                    break;
                }
                messageModel.response.ORDERID    = payResult.ORDERID;
                messageModel.response.ERRCODE    = payResult.ERRCODE;
                messageModel.response.ERRMSG     = payResult.ERRMSG;
                messageModel.response.TRACEID    = payResult.TRACEID;
                messageModel.response.AMOUNT     = payResult.AMOUNT;
                messageModel.response.QRCODETYPE = payResult.QRCODETYPE;
            }
            catch (Exception ex)
            {
                messageModel.success         = false;
                messageModel.msg             = "服务错误";
                messageModel.response.ERRMSG = ex.Message;
                _logger.LogInformation($"异常信息:{ex.Message}");
                _logger.LogInformation($"异常堆栈:{ex.StackTrace}");
            }
            finally
            {
                _logger.LogInformation($"返回数据->{JsonHelper.GetJSON<MessageModel<PayReturnResultModel>>(messageModel)}");
                _logger.LogInformation("轮序结束");
            }
            return(messageModel);
        }
Пример #7
0
        /// <summary>
        /// 付款操作
        /// </summary>
        /// <param name="openid">微信openid</param>
        /// <returns></returns>
        public static RJson PayAction(string openid)
        {
            RJson r = new RJson();
            //r.message = "test";
            //r.result_status = "succ";
            //return r;
            string ids     = "0"; //付款ids默认0
            int    payFlag = 0;   //付款未成功

            try
            {
                //openid = "o_-IA0YU6JgzTvKINab0B30y0L_Y";//我的openid用于测试
                //openid = "o11Z-joTwit-1j2QLx_-vAzwsvvQ";
                //获取用户扫描但是未提现的金额总和
                string sql = string.Format(@"SELECT  ISNULL(STUFF((SELECT ','+  CONVERT(VARCHAR(20),Id) 
			                                              FROM dbo.RedPackScanRecord 
			                                              WHERE  OpenId = '{0}' AND IsPay = 0  for xml path('')),1,1,''),0) Ids,
                                            ISNULL(SUM(Money),0) Total FROM RedPackScanRecord  WHERE OpenId = '{0}' AND IsPay = 0", openid);
                var    dt  = SqlHelper2.ExecuteDataTable(sql);
                ids = dt.Rows[0][0].ToString();
                double totalTxMoney = Convert.ToDouble(dt.Rows[0][1]);  //未提现金额

                if (ids == "0")
                {
                    r.message = "无可提取的额度";
                }
                else if (totalTxMoney < 1)
                {
                    r.message = "不足一元不能提取成功";
                }
                else
                {
                    //先置为已提现
                    sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =1  WHERE Id IN ({0})", ids);
                    LogHelper.WriteMsg("先置为已提现-openid:" + openid + ",ids:" + ids);
                    SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);


                    string strPayResult = CorpPay((totalTxMoney * 100).ToString(), openid); //实际付款
                    LogHelper.WriteMsg("付款结果-openid:" + openid + ",ids:" + ids + ",结果:" + strPayResult);
                    PayResultModel model = XmlHelpler.GetWxPayResult(strPayResult);         //付款结果转类

                    int payid = 0;
                    if (model.result_code == "SUCCESS")  //支付成功,增加纪录
                    {
                        payFlag = 1;
                        sql     = string.Format(@"INSERT INTO dbo.RedPackPayRecord
                                    ( OpenId ,
                                      PayAmout ,
                                      WxResult_Code ,
                                      WxPartner_Trade_No ,
                                      WxPayment_No ,
                                      WxPayment_Time ,
                                      WxReturnXML ,
                                      ScanRecordId
                                    )
                            VALUES  ( '{0}' , -- OpenId - varchar(50)
                                       {1} , -- PayAmout - float
                                      '{2}' , 
                                      '{3}' , 
                                      '{4}' , 
                                      '{5}' , 
                                      '{6}' ,
                                      '{7}'
                                    ); 
                            UPDATE dbo.RedPackScanRecord SET IsPay =1 ,PayId = (SELECT scope_identity()) WHERE Id IN ({7})
                             ", openid, totalTxMoney, model.result_code, model.partner_trade_no,
                                                model.payment_no, model.payment_time, strPayResult, ids);
                        LogHelper.WriteMsg("支付成功,增加纪录-openid:" + openid + ",ids:" + ids + ",sql:" + sql);
                        SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);
                        //payid = Convert.ToInt32(SqlHelper2.ExecuteScalar(CommandType.Text, sql));

                        //sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =1 ,PayId = {0} WHERE Id IN ({1})",
                        //                        payid, ids);
                        //SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);

                        r.message       = "提取成功";
                        r.result_status = "succ";
                    }
                    else
                    {
                        //付款失败  置为IsPay =0未付款
                        sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =0  WHERE Id IN ({0})", ids);
                        LogHelper.WriteMsg("支付失败,增加纪录-openid:" + openid + ",ids:" + ids + ",sql:" + sql);
                        SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);
                        //支付失败 增加报警信息
                        AddAlertLog(openid, "红包" + ids + "支付时:" + strPayResult, "pay");
                        r.message = "提取失败,请联系管理员";
                    }
                }

                //double totalTxMoney = Convert.ToDouble(SqlHelper2.ExecuteScalar(CommandType.Text, sql));
            }
            catch (Exception ex)
            {
                //LogHelper.WriteMsg("PayAction异常-openid:" + openid + ",结果:" + ex.ToString());//支付失败 增加报警信息
                AddAlertLog(openid, ex.ToString(), "error"); //支付失败 增加报警信息
                r.message = "提取失败,请联系管理员";
            }
            return(r);
        }
Пример #8
0
        /// <summary>
        /// 支付结果
        /// </summary>
        public ActionResult PayResult()
        {
            //订单id
            int oid = WebHelper.GetQueryInt("oid");
            //订单信息
            OrderInfo orderInfo = Orders.GetOrderByOid(oid);
            if (orderInfo == null || orderInfo.Uid != WorkContext.Uid || orderInfo.PayMode != 1)
                return Redirect("/");

            PayResultModel model = new PayResultModel();
            model.OrderInfo = orderInfo;
            if (orderInfo.OrderState != (int)OrderState.Confirming)
                model.State = 0;
            else
                model.State = 1;

            return View(model);
        }
Пример #9
0
        private CustomJsonResult App_ResultNotify(int operater, PayResultModel model)
        {
            CustomJsonResult result = new CustomJsonResult();

            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    OrderPayResultNotifyLog resultLog = new OrderPayResultNotifyLog();
                    resultLog.SysOrderId = model.OrderId;
                    resultLog.SysOrderSn = model.OrderSn;
                    resultLog.CreateTime = this.DateTime;
                    resultLog.Creator    = model.UserId;

                    if (model.Params.Result == PayResultType.Success)
                    {
                        resultLog.Result       = "1";
                        resultLog.OrderNo      = model.Params.MerchantInfo.order_no.NullStringToNullObject();
                        resultLog.MerchantId   = model.Params.MerchantId.NullStringToNullObject();
                        resultLog.Amount       = model.Params.Amount.NullStringToNullObject();
                        resultLog.TerminalId   = model.Params.TerminalId.NullStringToNullObject();
                        resultLog.MerchantNo   = model.Params.MerchantNo.NullStringToNullObject();
                        resultLog.BatchNo      = model.Params.BatchNo.NullStringToNullObject();
                        resultLog.MerchantName = model.Params.MerchantName.NullStringToNullObject();
                        resultLog.Issue        = model.Params.Issue.NullStringToNullObject();
                        resultLog.TraceNo      = model.Params.TraceNo.NullStringToNullObject();
                        resultLog.ReferenceNo  = model.Params.ReferenceNo.NullStringToNullObject();
                        resultLog.Type         = model.Params.Type.NullStringToNullObject();
                        resultLog.CardNo       = model.Params.CardNo.NullStringToNullObject();


                        switch (model.ProductType)
                        {
                        case Enumeration.ProductType.InsureForCarForInsure:
                        case Enumeration.ProductType.InsureForCarForRenewal:

                            result = PayCarInsureCompleted(operater, model.OrderSn);

                            break;

                        case Enumeration.ProductType.InsureForCarForClaim:

                            result = PayCarClaimCompleted(operater, model.OrderSn);

                            break;

                        case Enumeration.ProductType.PosMachineDepositRent:

                            result = PayDepositRentCompleted(operater, model.OrderSn);

                            break;

                        case Enumeration.ProductType.PosMachineRent:

                            result = PayRentCompleted(operater, model.OrderSn);

                            break;
                        }
                    }
                    else if (model.Params.Result == PayResultType.Failure)
                    {
                        resultLog.Result        = "2";
                        resultLog.FailureReason = model.Params.FailureReason;

                        Log.WarnFormat("订单:{0},支付失败,原因:{1}", model.OrderSn, model.Params.FailureReason);

                        result = new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "支付失败");
                    }

                    CurrentDb.OrderPayResultNotifyLog.Add(resultLog);
                    CurrentDb.SaveChanges();

                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("订单号({0})结果反馈发生异常,原因:{1}", model.OrderSn, ex.StackTrace);

                result = new CustomJsonResult(ResultType.Exception, ResultCode.Exception, "支付失败");
            }

            return(result);
        }