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