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