| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- using System.Collections.Generic;
- using Essensoft.Paylink.WeChatPay.V2.Response;
- namespace Essensoft.Paylink.WeChatPay.V2.Request
- {
- /// <summary>
- /// 微信代扣 - 乘车码代扣 - 申请扣款 (服务商)
- /// </summary>
- public class WeChatPayTransitPartnerPayPayApplyRequest : IWeChatPayRequest<WeChatPayTransitPartnerPayPayApplyResponse>
- {
- /// <summary>
- /// 商品描述
- /// </summary>
- public string Body { get; set; }
- /// <summary>
- /// 商品详情
- /// </summary>
- public string Detail { get; set; }
- /// <summary>
- /// 附加数据
- /// </summary>
- public string Attach { get; set; }
- /// <summary>
- /// 商户订单号
- /// </summary>
- public string OutTradeNo { get; set; }
- /// <summary>
- /// 总金额
- /// </summary>
- public int TotalFee { get; set; }
- /// <summary>
- /// 货币类型
- /// </summary>
- public string FeeType { get; set; }
- /// <summary>
- /// 终端IP
- /// </summary>
- public string SpBillCreateIp { get; set; }
- /// <summary>
- /// 商品标记
- /// </summary>
- public int GoodsTag { get; set; }
- /// <summary>
- /// 回调通知url
- /// </summary>
- public string NotifyUrl { get; set; }
- /// <summary>
- /// 交易类型
- /// </summary>
- public string TradeType { get; set; }
- /// <summary>
- /// 委托代扣协议id
- /// </summary>
- public string ContractId { get; set; }
- /// <summary>
- /// 交易场景
- /// </summary>
- public string TradeScene { get; set; }
- /// <summary>
- /// 场景信息
- /// </summary>
- public string SceneInfo { get; set; }
- /// <summary>
- /// 是否指定服务商分账
- /// </summary>
- public string ProfitSharing { get; set; }
- #region IWeChatPayRequest Members
- private string requestUrl = "https://api.mch.weixin.qq.com/transit/partnerpay/payapply";
- private WeChatPaySignType signType = WeChatPaySignType.HMAC_SHA256;
- public string GetRequestUrl()
- {
- return requestUrl;
- }
- public void SetRequestUrl(string url)
- {
- requestUrl = url;
- }
- public IDictionary<string, string> GetParameters()
- {
- var parameters = new WeChatPayDictionary
- {
- { "body", Body },
- { "detail", Detail },
- { "attach", Attach },
- { "out_trade_no", OutTradeNo },
- { "total_fee", TotalFee },
- { "fee_type", FeeType },
- { "spbill_create_ip", SpBillCreateIp },
- { "goods_tag", GoodsTag },
- { "notify_url", NotifyUrl },
- { "trade_type", TradeType },
- { "contract_id", ContractId },
- { "trade_scene", TradeScene },
- { "scene_info", SceneInfo },
- { "profit_sharing", ProfitSharing }
- };
- return parameters;
- }
- public WeChatPaySignType GetSignType()
- {
- return signType;
- }
- public void SetSignType(WeChatPaySignType signType)
- {
- this.signType = signType switch
- {
- WeChatPaySignType.HMAC_SHA256 => signType,
- _ => throw new WeChatPayException("api only support HMAC_SHA256!"),
- };
- }
- public void PrimaryHandler(WeChatPayDictionary sortedTxtParams, WeChatPayOptions options)
- {
- sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr());
- sortedTxtParams.Add(WeChatPayConsts.appid, options.AppId);
- sortedTxtParams.Add(WeChatPayConsts.sub_appid, options.SubAppId);
- sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId);
- sortedTxtParams.Add(WeChatPayConsts.sub_mch_id, options.SubMchId);
- sortedTxtParams.Add(WeChatPayConsts.sign_type, signType);
- sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.APIKey, signType));
- }
- #endregion
- }
- }
|