Пример #1
0
 public int Editwxrefundlog(B2b_pay_wxrefundlog refundlog)
 {
     using (var helper = new SqlHelper())
     {
         int r = new Internalb2b_pay_wxrefundlog(helper).Editwxrefundlog(refundlog);
         return(r);
     }
 }
Пример #2
0
        protected void Button3_Click(object sender, EventArgs e)
        {
            string transaction_id = Transaction_id.Text.Trim();
            string out_trade_no   = Out_trade_no.Text.Trim();
            string out_refund_no  = Out_refund_no.Text.Trim();
            string total_fee      = Total_fee.Text.Trim();
            string refund_fee     = Refund_fee.Text.Trim();


            //根据订单id得到支付信息,进而得到公司的微信支付设置信息
            B2b_pay modelb2pay = new B2bPayData().GetPayByoId(out_trade_no.ConvertTo <int>(0));

            if (modelb2pay == null)
            {
                Label1.Text = "支付信息不存在";
                return;
            }

            B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(modelb2pay.comid);

            if (model == null)
            {
                Label1.Text = "微信支付设置信息不存在";
                return;
            }


            WxPayConfig config = new WxPayConfig
            {
                APPID            = model.Wx_appid,
                APPSECRET        = model.Wx_appkey,
                KEY              = model.Wx_paysignkey,
                MCHID            = model.Wx_partnerid,
                IP               = CommonFunc.GetRealIP(),
                SSLCERT_PATH     = model.wx_SSLCERT_PATH,
                SSLCERT_PASSWORD = model.wx_SSLCERT_PASSWORD,
                PROXY_URL        = "http://115.28.38.65:80",
                LOG_LEVENL       = 3, //日志级别
                REPORT_LEVENL    = 0  //上报信息配置
            };


            lock (lockobj)
            {
                ////根据商户退款单号 判断退款是否已经申请成功
                //bool issuc = new B2b_pay_wxrefundlogData().JudgerefundByout_refund_no(out_refund_no);

                //string r = "";
                //if (issuc)
                //{
                //    r = "退款已经申请成功";
                //}
                //else
                //{
                //r = Refund.Run(transaction_id, out_trade_no, total_fee, refund_fee, out_refund_no, config);
                //}
                B2b_pay_wxrefundlog refundlog = new B2b_pay_wxrefundlog
                {
                    id             = 0,
                    out_refund_no  = out_refund_no,
                    out_trade_no   = out_trade_no,
                    transaction_id = transaction_id,
                    total_fee      = int.Parse(total_fee),
                    refund_fee     = int.Parse(refund_fee),
                    send_xml       = "",
                    send_time      = DateTime.Parse("1970-01-01 00:00:00"),
                    return_code    = "",
                    return_msg     = "",
                    err_code       = "",
                    err_code_des   = "",
                    refund_id      = "",
                    return_xml     = "",
                    return_time    = DateTime.Parse("1970-01-01 00:00:00"),
                };
                try
                {
                    WxPayData data = new WxPayData();

                    data.SetValue("transaction_id", transaction_id);
                    data.SetValue("out_trade_no", out_trade_no);
                    data.SetValue("total_fee", int.Parse(total_fee));                       //订单总金额
                    data.SetValue("refund_fee", int.Parse(refund_fee));                     //退款金额
                    data.SetValue("out_refund_no", out_refund_no);                          //随机生成商户退款单号
                    data.SetValue("op_user_id", config.MCHID);                              //操作员,默认为商户号
                    data.SetValue("appid", config.APPID);                                   //公众账号ID
                    data.SetValue("mch_id", config.MCHID);                                  //商户号
                    data.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", "")); //随机字符串
                    data.SetValue("sign", data.MakeSign(config));                           //签名

                    string xml   = data.ToXml(config);
                    var    start = DateTime.Now;

                    refundlog.send_xml  = xml;
                    refundlog.send_time = start;

                    int ee = new B2b_pay_wxrefundlogData().Editwxrefundlog(refundlog);
                    refundlog.id = ee;
                    if (ee == 0)
                    {
                        Label1.Text = "记录微信退款日志出错";
                        return;
                    }

                    string r = Refund.Run(transaction_id, out_trade_no, total_fee, refund_fee, out_refund_no, config);



                    string[] str = r.Replace("<br>", ",").Split(',');
                    Dictionary <string, string> dic = new Dictionary <string, string>();
                    foreach (string s in str)
                    {
                        if (s != "")
                        {
                            dic.Add(s.Split('=')[0], s.Split('=')[1]);
                        }
                    }
                    string return_code = dic["return_code"];
                    refundlog.return_code = return_code;
                    if (dic.ContainsKey("return_msg"))
                    {
                        string return_msg = dic["return_msg"];
                        refundlog.return_msg = return_msg;
                    }
                    if (dic.ContainsKey("err_code"))
                    {
                        string err_code = dic["err_code"];
                        refundlog.err_code = err_code;
                    }
                    if (dic.ContainsKey("err_code_des"))
                    {
                        string err_code_des = dic["err_code_des"];
                        refundlog.err_code_des = err_code_des;
                    }
                    if (dic.ContainsKey("refund_id"))
                    {
                        string refund_id = dic["refund_id"];
                        refundlog.refund_id = refund_id;
                    }
                    refundlog.return_xml  = r;
                    refundlog.return_time = DateTime.Now;
                    new B2b_pay_wxrefundlogData().Editwxrefundlog(refundlog);
                    Label1.Text = r;
                }
                catch (Exception ef)
                {
                    Label1.Text = "记录微信退款日志出错:" + ef.Message;
                    return;
                }
            }
        }
        internal int Editwxrefundlog(B2b_pay_wxrefundlog m)
        {
            if (m.id == 0)
            {
                string sql = @"INSERT INTO [b2b_pay_wxrefundlog]
                                       ([out_refund_no]
                                       ,[out_trade_no]
                                       ,[transaction_id]
                                       ,[total_fee]
                                       ,[refund_fee]
                                       ,[send_xml]
                                       ,[send_time]
                                       ,[return_code]
                                       ,[return_msg]
                                       ,[err_code]
                                       ,[err_code_des]
                                       ,[refund_id]
                                       ,[return_xml]
                                       ,[return_time])
                                 VALUES
                                       (@out_refund_no 
                                       ,@out_trade_no 
                                       ,@transaction_id 
                                       ,@total_fee 
                                       ,@refund_fee 
                                       ,@send_xml 
                                       ,@send_time 
                                       ,@return_code 
                                       ,@return_msg 
                                       ,@err_code 
                                       ,@err_code_des 
                                       ,@refund_id 
                                       ,@return_xml 
                                       ,@return_time);select @@identity;";
                var    cmd = sqlHelper.PrepareTextSqlCommand(sql);
                cmd.AddParam("@out_refund_no", m.out_refund_no);
                cmd.AddParam("@out_trade_no", m.out_trade_no);
                cmd.AddParam("@transaction_id", m.transaction_id);
                cmd.AddParam("@total_fee", m.total_fee);
                cmd.AddParam("@refund_fee", m.refund_fee);
                cmd.AddParam("@send_xml", m.send_xml);
                cmd.AddParam("@send_time", m.send_time);
                cmd.AddParam("@return_code", m.return_code);
                cmd.AddParam("@return_msg", m.return_msg);
                cmd.AddParam("@err_code", m.err_code);
                cmd.AddParam("@err_code_des", m.err_code_des);
                cmd.AddParam("@refund_id", m.refund_id);
                cmd.AddParam("@return_xml", m.return_xml);
                cmd.AddParam("@return_time", m.return_time);

                object o = cmd.ExecuteScalar();
                return(int.Parse(o.ToString()));
            }
            else
            {
                string sql = @"UPDATE [b2b_pay_wxrefundlog]
                               SET [out_refund_no] = @out_refund_no 
                                  ,[out_trade_no] = @out_trade_no 
                                  ,[transaction_id] = @transaction_id 
                                  ,[total_fee] = @total_fee 
                                  ,[refund_fee] = @refund_fee 
                                  ,[send_xml] = @send_xml 
                                  ,[send_time] = @send_time 
                                  ,[return_code] = @return_code
                                  ,[return_msg] = @return_msg 
                                  ,[err_code] = @err_code
                                  ,[err_code_des] = @err_code_des 
                                  ,[refund_id] = @refund_id 
                                  ,[return_xml] = @return_xml 
                                  ,[return_time] = @return_time 
                             WHERE  id=@id";
                var    cmd = sqlHelper.PrepareTextSqlCommand(sql);
                cmd.AddParam("@id", m.id);
                cmd.AddParam("@out_refund_no", m.out_refund_no);
                cmd.AddParam("@out_trade_no", m.out_trade_no);
                cmd.AddParam("@transaction_id", m.transaction_id);
                cmd.AddParam("@total_fee", m.total_fee);
                cmd.AddParam("@refund_fee", m.refund_fee);
                cmd.AddParam("@send_xml", m.send_xml);
                cmd.AddParam("@send_time", m.send_time);
                cmd.AddParam("@return_code", m.return_code);
                cmd.AddParam("@return_msg", m.return_msg);
                cmd.AddParam("@err_code", m.err_code);
                cmd.AddParam("@err_code_des", m.err_code_des);
                cmd.AddParam("@refund_id", m.refund_id);
                cmd.AddParam("@return_xml", m.return_xml);
                cmd.AddParam("@return_time", m.return_time);

                cmd.ExecuteNonQuery();
                return(m.id);
            }
        }