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()); } }
/// <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); } }