WeChatPaySendMiniProgramHbRequest.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System.Collections.Generic;
  2. using Essensoft.AspNetCore.Payment.WeChatPay.Response;
  3. using Essensoft.AspNetCore.Payment.WeChatPay.Utility;
  4. namespace Essensoft.AspNetCore.Payment.WeChatPay.Request
  5. {
  6. /// <summary>
  7. /// 小程序红包 - 发放普通红包
  8. /// </summary>
  9. public class WeChatPaySendMiniProgramHbRequest : IWeChatPayCertRequest<WeChatPaySendMiniProgramHbResponse>
  10. {
  11. /// <summary>
  12. /// 商户订单号
  13. /// </summary>
  14. public string MchBillNo { get; set; }
  15. /// <summary>
  16. /// 子商户号
  17. /// </summary>
  18. public string SubMchId { get; set; }
  19. /// <summary>
  20. /// 触达用户appid
  21. /// </summary>
  22. public string MsgAppId { get; set; }
  23. /// <summary>
  24. /// 商户名称
  25. /// </summary>
  26. public string SendName { get; set; }
  27. /// <summary>
  28. /// 用户openid
  29. /// </summary>
  30. public string ReOpenId { get; set; }
  31. /// <summary>
  32. /// 付款金额
  33. /// </summary>
  34. public int TotalAmount { get; set; }
  35. /// <summary>
  36. /// 红包发放总人数
  37. /// </summary>
  38. public int TotalNum { get; set; }
  39. /// <summary>
  40. /// 红包祝福语
  41. /// </summary>
  42. public string Wishing { get; set; }
  43. /// <summary>
  44. /// Ip地址
  45. /// </summary>
  46. public string ClientIp { get; set; }
  47. /// <summary>
  48. /// 活动名称
  49. /// </summary>
  50. public string ActName { get; set; }
  51. /// <summary>
  52. /// 备注
  53. /// </summary>
  54. public string Remark { get; set; }
  55. /// <summary>
  56. /// 通知用户形式
  57. /// </summary>
  58. public string NotifyWay { get; set; }
  59. /// <summary>
  60. /// 场景id
  61. /// </summary>
  62. public string SceneId { get; set; }
  63. /// <summary>
  64. /// 活动信息
  65. /// </summary>
  66. public string RiskInfo { get; set; }
  67. #region IWeChatPayCertificateRequest Members
  68. public string GetRequestUrl()
  69. {
  70. return "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb";
  71. }
  72. public IDictionary<string, string> GetParameters()
  73. {
  74. var parameters = new WeChatPayDictionary
  75. {
  76. { "mch_billno", MchBillNo },
  77. { "sub_mch_id", SubMchId },
  78. { "msgappid", MsgAppId },
  79. { "send_name", SendName },
  80. { "re_openid", ReOpenId },
  81. { "total_amount", TotalAmount },
  82. { "total_num", TotalNum },
  83. { "wishing", Wishing },
  84. { "client_ip", ClientIp },
  85. { "act_name", ActName },
  86. { "remark", Remark },
  87. { "scene_id", SceneId },
  88. { "risk_info", RiskInfo },
  89. };
  90. return parameters;
  91. }
  92. public WeChatPaySignType GetSignType()
  93. {
  94. return WeChatPaySignType.MD5;
  95. }
  96. public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams)
  97. {
  98. sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr());
  99. sortedTxtParams.Add(WeChatPayConsts.wxappid, options.AppId);
  100. sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId);
  101. sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType));
  102. }
  103. public bool GetNeedCheckSign()
  104. {
  105. return true;
  106. }
  107. #endregion
  108. }
  109. }