TG.WXCRM.V4/Common/WxPay/NativePay.cs

58 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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