using System.Collections.Generic;
using Essensoft.AspNetCore.Payment.WeChatPay.Response;
using Essensoft.AspNetCore.Payment.WeChatPay.Utility;
namespace Essensoft.AspNetCore.Payment.WeChatPay.Request
{
///
/// 小程序红包 - 发放普通红包
///
public class WeChatPaySendMiniProgramHbRequest : IWeChatPayCertRequest
{
///
/// 商户订单号
///
public string MchBillNo { get; set; }
///
/// 子商户号
///
public string SubMchId { get; set; }
///
/// 触达用户appid
///
public string MsgAppId { get; set; }
///
/// 商户名称
///
public string SendName { get; set; }
///
/// 用户openid
///
public string ReOpenId { get; set; }
///
/// 付款金额
///
public int TotalAmount { get; set; }
///
/// 红包发放总人数
///
public int TotalNum { get; set; }
///
/// 红包祝福语
///
public string Wishing { get; set; }
///
/// Ip地址
///
public string ClientIp { get; set; }
///
/// 活动名称
///
public string ActName { get; set; }
///
/// 备注
///
public string Remark { get; set; }
///
/// 通知用户形式
///
public string NotifyWay { get; set; }
///
/// 场景id
///
public string SceneId { get; set; }
///
/// 活动信息
///
public string RiskInfo { get; set; }
#region IWeChatPayCertificateRequest Members
public string GetRequestUrl()
{
return "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb";
}
public IDictionary GetParameters()
{
var parameters = new WeChatPayDictionary
{
{ "mch_billno", MchBillNo },
{ "sub_mch_id", SubMchId },
{ "msgappid", MsgAppId },
{ "send_name", SendName },
{ "re_openid", ReOpenId },
{ "total_amount", TotalAmount },
{ "total_num", TotalNum },
{ "wishing", Wishing },
{ "client_ip", ClientIp },
{ "act_name", ActName },
{ "remark", Remark },
{ "scene_id", SceneId },
{ "risk_info", RiskInfo },
};
return parameters;
}
public WeChatPaySignType GetSignType()
{
return WeChatPaySignType.MD5;
}
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams)
{
sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr());
sortedTxtParams.Add(WeChatPayConsts.wxappid, options.AppId);
sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId);
sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType));
}
public bool GetNeedCheckSign()
{
return true;
}
#endregion
}
}