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;
}
}
}