58 lines
2.6 KiB
C#
58 lines
2.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
|
||
namespace WX.CRM.Common.WxPay
|
||
{
|
||
public class NativePay
|
||
{
|
||
|
||
|
||
/// <summary>
|
||
/// 生成直接支付二维码url,支付url有效期为2小时
|
||
/// </summary>
|
||
/// <param name="productId">商品ID,trade_type=NATIVE时,此参数必传。此参数为二维码中包含的商品ID,商户自行定义</param>
|
||
/// <param name="orderNo">商户订单号。商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一</param>
|
||
/// <param name="body">商品描述</param>
|
||
/// <param name="totalAmount">订单总金额,单位为分</param>
|
||
/// <returns></returns>
|
||
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<string, object> map)
|
||
{
|
||
string buff = "";
|
||
foreach (KeyValuePair<string, object> pair in map)
|
||
{
|
||
buff += pair.Key + "=" + pair.Value + "&";
|
||
}
|
||
buff = buff.Trim('&');
|
||
return buff;
|
||
}
|
||
}
|
||
} |