using System; using System.Collections.Generic; namespace WX.CRM.Common.WxPay { public class NativePay { /// /// 生成直接支付二维码url,支付url有效期为2小时 /// /// 商品ID,trade_type=NATIVE时,此参数必传。此参数为二维码中包含的商品ID,商户自行定义 /// 商户订单号。商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一 /// 商品描述 /// 订单总金额,单位为分 /// public string GetPayQRCode(string productId, string orderNo, string body, double totalAmount, string mchId) { Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing..."); WxPayData data = new WxPayData(); data.SetValue("body", body);//商品描述 //data.SetValue("attach", "test");//附加数据 data.SetValue("out_trade_no", orderNo);//随机字符串 data.SetValue("total_fee", totalAmount);//总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间 //data.SetValue("time_expire", DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));//交易结束时间 data.SetValue("time_expire", DateTime.Now.Date.AddDays(1).ToString("yyyyMMddHHmmss"));//交易结束时间 data.SetValue("trade_type", "NATIVE");//交易类型 data.SetValue("product_id", productId);//商品ID data.SetValue("limit_pay", "no_credit"); LogHelper.Info("paydata:" + data.ToJson()); WxPayData result = WxPayApi.UnifiedOrder(data, mchId);//调用统一下单接口 string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接 Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url); return url; } /** * 参数数组转换为url格式 * @param map 参数名与参数值的映射表 * @return URL字符串 */ private string ToUrlParams(SortedDictionary map) { string buff = ""; foreach (KeyValuePair pair in map) { buff += pair.Key + "=" + pair.Value + "&"; } buff = buff.Trim('&'); return buff; } } }