using System.Collections.Generic; using Essensoft.AspNetCore.Payment.WeChatPay.Response; using Essensoft.AspNetCore.Payment.WeChatPay.Utility; namespace Essensoft.AspNetCore.Payment.WeChatPay.Request { /// /// 微信代扣 - 乘车码代扣 - 申请签约 /// public class WeChatPayPaPayPartnerEntrustWebRequest : IWeChatPayRequest { /// /// 子商户应用号 /// public string SubAppId { get; set; } /// /// 子商户号 /// public string SubMchId { get; set; } /// /// 模板id /// public string PlanId { get; set; } /// /// 签约协议号 /// public string ContractCode { get; set; } /// /// 请求序列号 /// public string RequestSerial { get; set; } /// /// 用户账户展示名称 /// public string ContractDisplayAccount { get; set; } /// /// 回调通知url /// public string NotifyUrl { get; set; } /// /// 版本号 /// public string Version { get; set; } /// /// 客户端 IP /// public string ClientIp { get; set; } /// /// 设备ID /// public string Deviceid { get; set; } /// /// 手机号 /// public string Mobile { get; set; } /// /// 邮箱地址 /// public string Email { get; set; } /// /// QQ号 /// public string QQ { get; set; } /// /// 微信OpenId /// public string OpenId { get; set; } /// /// 身份证号 /// public string CreId { get; set; } /// /// 商户侧用户标识 /// public string OuterId { get; set; } /// /// 返回app /// public string ReturnApp { get; set; } /// /// 返回web /// public string ReturnWeb { get; set; } #region IWeChatPayRequest Members public string GetRequestUrl() { return "https://api.mch.weixin.qq.com/papay/partner/entrustweb"; } public IDictionary GetParameters() { var parameters = new WeChatPayDictionary { { "sub_appid", SubAppId }, { "sub_mch_id", SubMchId }, { "plan_id", PlanId }, { "contract_code", ContractCode }, { "request_serial", RequestSerial }, { "contract_display_account", ContractDisplayAccount }, { "notify_url", NotifyUrl }, { "version", Version }, { "clientip", ClientIp }, { "deviceid", Deviceid }, { "mobile", Mobile }, { "email", Email }, { "qq", QQ }, { "creid", CreId }, { "outerid", OuterId }, { "return_app", ReturnApp }, { "return_web", ReturnWeb }, }; 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.appid, options.AppId); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); sortedTxtParams.Add(WeChatPayConsts.timestamp, WeChatPayUtility.GetTimeStamp()); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); } public bool GetNeedCheckSign() { return false; } #endregion } }