WeChatPayPaPayPartnerEntrustWebRequest.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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 WeChatPayPaPayPartnerEntrustWebRequest : IWeChatPayRequest<WeChatPayPaPayPartnerEntrustWebResponse>
  10. {
  11. /// <summary>
  12. /// 子商户应用号
  13. /// </summary>
  14. public string SubAppId { get; set; }
  15. /// <summary>
  16. /// 子商户号
  17. /// </summary>
  18. public string SubMchId { get; set; }
  19. /// <summary>
  20. /// 模板id
  21. /// </summary>
  22. public string PlanId { get; set; }
  23. /// <summary>
  24. /// 签约协议号
  25. /// </summary>
  26. public string ContractCode { get; set; }
  27. /// <summary>
  28. /// 请求序列号
  29. /// </summary>
  30. public string RequestSerial { get; set; }
  31. /// <summary>
  32. /// 用户账户展示名称
  33. /// </summary>
  34. public string ContractDisplayAccount { get; set; }
  35. /// <summary>
  36. /// 回调通知url
  37. /// </summary>
  38. public string NotifyUrl { get; set; }
  39. /// <summary>
  40. /// 版本号
  41. /// </summary>
  42. public string Version { get; set; }
  43. /// <summary>
  44. /// 客户端 IP
  45. /// </summary>
  46. public string ClientIp { get; set; }
  47. /// <summary>
  48. /// 设备ID
  49. /// </summary>
  50. public string Deviceid { get; set; }
  51. /// <summary>
  52. /// 手机号
  53. /// </summary>
  54. public string Mobile { get; set; }
  55. /// <summary>
  56. /// 邮箱地址
  57. /// </summary>
  58. public string Email { get; set; }
  59. /// <summary>
  60. /// QQ号
  61. /// </summary>
  62. public string QQ { get; set; }
  63. /// <summary>
  64. /// 微信OpenId
  65. /// </summary>
  66. public string OpenId { get; set; }
  67. /// <summary>
  68. /// 身份证号
  69. /// </summary>
  70. public string CreId { get; set; }
  71. /// <summary>
  72. /// 商户侧用户标识
  73. /// </summary>
  74. public string OuterId { get; set; }
  75. /// <summary>
  76. /// 返回app
  77. /// </summary>
  78. public string ReturnApp { get; set; }
  79. /// <summary>
  80. /// 返回web
  81. /// </summary>
  82. public string ReturnWeb { get; set; }
  83. #region IWeChatPayRequest Members
  84. public string GetRequestUrl()
  85. {
  86. return "https://api.mch.weixin.qq.com/papay/partner/entrustweb";
  87. }
  88. public IDictionary<string, string> GetParameters()
  89. {
  90. var parameters = new WeChatPayDictionary
  91. {
  92. { "sub_appid", SubAppId },
  93. { "sub_mch_id", SubMchId },
  94. { "plan_id", PlanId },
  95. { "contract_code", ContractCode },
  96. { "request_serial", RequestSerial },
  97. { "contract_display_account", ContractDisplayAccount },
  98. { "notify_url", NotifyUrl },
  99. { "version", Version },
  100. { "clientip", ClientIp },
  101. { "deviceid", Deviceid },
  102. { "mobile", Mobile },
  103. { "email", Email },
  104. { "qq", QQ },
  105. { "creid", CreId },
  106. { "outerid", OuterId },
  107. { "return_app", ReturnApp },
  108. { "return_web", ReturnWeb },
  109. };
  110. return parameters;
  111. }
  112. public WeChatPaySignType GetSignType()
  113. {
  114. return WeChatPaySignType.MD5;
  115. }
  116. public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams)
  117. {
  118. sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr());
  119. sortedTxtParams.Add(WeChatPayConsts.appid, options.AppId);
  120. sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId);
  121. sortedTxtParams.Add(WeChatPayConsts.timestamp, WeChatPayUtility.GetTimeStamp());
  122. sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType));
  123. }
  124. public bool GetNeedCheckSign()
  125. {
  126. return false;
  127. }
  128. #endregion
  129. }
  130. }