Exemplo n.º 1
0
        private string refund(HttpContext context)
        {
            try
            {
                //string alluserid = context.Request["alluserid"];
                string biaoNum = context.Request["biaoNum"];
                string payNo   = context.Request["orderno"];
                ms.makeLog("进来了退款的方法:" + ",还镖数量:" + biaoNum + ",付款单号:" + payNo);

                //注意这里,这里有异常
                refundInfo info = ms.getRefundInfo(biaoNum, payNo);     //这里计算出需要退款的信息
                payNo = info.orderno;

                Random      rand    = new Random();
                int         num     = rand.Next(1000, 9999);
                Parameteres param   = new Parameteres();
                string      orderno = DateTime.Now.ToString("yyyyMMddHHmmss") + num;

                Refund refund = new Refund();
                refund.appid         = "wxd6cf371dbe9f5906";
                refund.key           = "F56S456F4SD5F4S65F4AS65D4FS6D54F";
                refund.mch_id        = "1519238551";
                refund.nonce_str     = "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"; //随机字符串
                refund.out_refund_no = orderno;                            //退款单号随机生成
                refund.out_trade_no  = payNo;                              //支付单号
                refund.refund_fee    = info.refundPrice;
                refund.total_fee     = info.totalPrice;
                refund.notify_url    = "https://feibiao.ty-gz.com:8137/dist/Handler/refundNotify.ashx";

                string strParam  = getRefundParam(refund);
                string payResXML = Helper.PostWebRequest("https://api.mch.weixin.qq.com/secapi/pay/refund", strParam);
                ms.makeLog("退款方法:" + payResXML + ",refund.refund_fee:" + refund.refund_fee + ",refund.total_fee:" + refund.total_fee);
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(payResXML);

                XmlNode rootNode = xmlDoc.SelectSingleNode("xml");

                XmlNode nodeScuecc = rootNode.SelectSingleNode("result_code");
                if (nodeScuecc == null)
                {
                    ms.makeLog("微信退款:result_code节点为空");
                    return("");
                }

                XmlNode refund_idNode = rootNode.SelectSingleNode("refund_id");
                if (refund_idNode != null)
                {
                    string refund_id = refund_idNode.InnerText;
                    refund_id = refund_id.Replace("<![CDATA[", "").Replace("]]", "");

                    XmlNode refund_feeNode = rootNode.SelectSingleNode("cash_refund_fee");
                    string  refundfee      = refund_feeNode.InnerText.Replace("<![CDATA[", "").Replace("]]", "");

                    XmlNode out_trade_noNode = rootNode.SelectSingleNode("out_trade_no");
                    string  out_trade_no     = out_trade_noNode.InnerText.Replace("<![CDATA[", "").Replace("]]", "");

                    XmlNode out_refund_noNode = rootNode.SelectSingleNode("out_refund_no");
                    string  out_refund_no     = out_refund_noNode.InnerText.Replace("<![CDATA[", "").Replace("]]", "");

                    int count = ms.selectRefundCount(refund_id);
                    if (count > 0)
                    {
                        return("");
                    }

                    int aa = ms.addRefund(out_trade_no, out_refund_no, refund_id, refundfee);

                    int changeState = ms.updateRefundState(out_trade_no);
                }
                return("成功退押金:" + info.refundPrice + "分");
            }
            catch (Exception ex)
            {
                ms.makeLog("退款方法异常:" + ex.ToString());
                return(ex.ToString());
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="backBiaoNum"></param>
        /// <param name="payno"></param>
        /// <returns></returns>
        public refundInfo getRefundInfo(string backBiaoNum, string payno)
        {
            try
            {
                //在这个地方处理退款
                string selectNo = string.Format("SELECT borrowBiaoNum,choose.orderno,result.price from userchoosegame choose INNER JOIN pay_result result on result.order_no=choose.orderno where choose.orderno='{0}' GROUP BY choose.orderno", payno);
                makeLog("getRefundInfo:" + selectNo);
                DataTable dt         = MySqlHelper.GetDataTable(CommandType.Text, selectNo);
                string    orderno    = "";
                string    totalPrice = "";
                int       borrowNum  = 0;
                if (dt != null && dt.Rows.Count > 0)
                {
                    orderno    = dt.Rows[0]["orderno"].ToString();
                    totalPrice = dt.Rows[0]["price"].ToString();
                    if (dt.Rows[0]["borrowBiaoNum"] != DBNull.Value)
                    {
                        borrowNum = Convert.ToInt32(dt.Rows[0]["borrowBiaoNum"]);
                    }
                }
                if (borrowNum == 0)
                {
                    borrowNum = Convert.ToInt32(backBiaoNum);
                }
                if (borrowNum == 0)
                {
                    borrowNum   = 1;
                    backBiaoNum = "1";
                }
                //计算退款的金额
                DataTable dtMoney         = getDeposit();
                int       sinlgeBiaoMoney = Convert.ToInt32(dtMoney.Rows[0]["biaoMoney"]);
                //int money = sinlgeBiaoMoney * (borrowNum - Convert.ToInt32(backBiaoNum));      //押金按比例退
                //if (money > sinlgeBiaoMoney * borrowNum)
                //{
                //    money = sinlgeBiaoMoney * borrowNum;
                //}

                int money = sinlgeBiaoMoney * (Convert.ToInt32(backBiaoNum));      //押金按比例退
                if (money > sinlgeBiaoMoney * borrowNum)
                {
                    money = sinlgeBiaoMoney * borrowNum;
                }
                money = (money > 0) ? money : 0;
                //money = deposit * Convert.ToInt32(backBiaoNum) / borrowNum;
                makeLog("订单号:" + orderno + "总额:" + totalPrice + "还了:" + backBiaoNum + "借了:" + borrowNum + "退还金额:" + money);
                if (!string.IsNullOrEmpty(orderno))
                {
                    refundInfo info = new refundInfo();
                    info.orderno     = orderno;
                    info.totalPrice  = totalPrice;
                    info.refundPrice = money.ToString();
                    return(info);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                makeLog("getRefundInfo()异常:" + ex.ToString());
                return(null);
            }
        }