标签:des blog http ar io os 使用 sp for
public string Wxzhifurefund(string orderid,string openid,string weiId,string refund_fee) { Wxrefund refund = new Wxrefund(); try { //查询微商城appid string sql = "select * from pay_info where Enable=1";//必须保证enable=1唯一 DataTable paydata = SQLiteDBHelper.GetDataTable(sql, weiId); if (paydata.Rows.Count > 0) //大于0,用户已设置相关信息 { //处理 refund.appid = paydata.Rows[0]["Appid"].ToString();//公众号ID refund.mch_id = paydata.Rows[0]["Mchid"].ToString();//商户号 Setkey = paydata.Rows[0]["KeyValue"].ToString();//商户key } else { writeLogs.writelog("微支付退款时,查询商户配置参数错误 请检查参数是否正确"); return "{\"errcode\":\"3\"}";//商户未设置支付参数 } refund.nonce_str = openid;//随机字符串 refund.out_trade_no = orderid;//商户订单号 refund.out_refund_no =SystemSettingController.ConvertDateTimeInt(DateTime.Now);//创建退款订单号 //使用订单编号,查询订单总金额 sql = string.Format( "select * from order_info where orderid={0} and OpenId=‘{1}‘",orderid,openid);//必须保证订单号唯一性 DataTable orderdata = SQLiteDBHelper.GetDataTable(sql, weiId); refund.total_fee = Convert.ToString(float.Parse(orderdata.Rows[0]["Receivables"].ToString()) * 100);//订单总金额 if (string.IsNullOrEmpty(refund_fee))//退款金额等于空,就退全款 默认写入订单总金额 { refund.refund_fee = Convert.ToString(float.Parse(orderdata.Rows[0]["Receivables"].ToString()) * 100);//退款金额 } else { refund.refund_fee = refund_fee;//退款金额单位:分 } refund.op_user_id = refund.appid;//默认商户号 //字典排序 Dictionary<string, string> dicrefund = new Dictionary<string, string>(); dicrefund.Add("appid", refund.appid); dicrefund.Add("mch_id", refund.mch_id); dicrefund.Add("nonce_str", refund.nonce_str); dicrefund.Add("out_trade_no",refund.out_trade_no ); dicrefund.Add("out_refund_no",refund.out_refund_no); dicrefund.Add("total_fee",refund.total_fee); dicrefund.Add("refund_fee",refund.refund_fee); dicrefund.Add("op_user_id", refund.op_user_id); dicrefund.Add("sign", WxSignCreate(dicrefund)); //转换xml string xml = WxXml(dicrefund); string url = "https://api.mch.weixin.qq.com/secapi/pay/refund"; //设置证书路径,密码 string cert = @"xxxxx"; string password = "xxxxxx"; X509Certificate x509 = new X509Certificate(cert,password); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.ClientCertificates.Add(x509); //传输post数据 var encoding = System.Text.Encoding.UTF8; byte[] databyte = encoding.GetBytes(xml); request.Method = "post"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = databyte.Length; using (Stream responstream = request.GetRequestStream()) { responstream.Write(databyte, 0, databyte.Length); responstream.Close(); } HttpWebResponse response =(HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); string result = string.Empty; using (StreamReader reader = new StreamReader(stream)) { result = reader.ReadToEnd(); writeLogs.writelog("退款接口返回结果:"+result); } //反序列化 refund_return refunreturn = null; XmlSerializer refundxml = new XmlSerializer(typeof(refund_return)); using (StringReader stringreader = new StringReader(result)) { refunreturn = refundxml.Deserialize(stringreader) as refund_return; } if (refunreturn.result_code == "" || refunreturn.result_code == null) { writeLogs.writelog("退款失败,失败原因:"+ refunreturn.return_msg); return "{\"errcode\":\"18\"}";//退款失败 } if (refunreturn.result_code == "SUCCESS")//退款申请成功 { //处理退款操作 } else if (refunreturn.result_code == "FAIL")//退款申请失败 { writeLogs.writelog("退款申请失败,错误码:"+refunreturn.err_code+",失败原因:" + refunreturn.err_code_des); return "{\"errcode\":\"18\"}";//退款申请失败 } } catch (Exception e) { writeLogs.writelog("微信支付退款异常,参数:订单号:"+orderid+",openid编号:"+openid+",公众号编号:"+weiId); writeLogs.writelog("退款异常打印:"+e.Message); return "{\"errcode\":\"18\"}";//退款失败 } return "";//返回成功信息 }
标签:des blog http ar io os 使用 sp for
原文地址:http://www.cnblogs.com/xuemykisskui/p/4169224.html