using System.Collections.Generic; using Essensoft.AspNetCore.Payment.WeChatPay.Response; using Essensoft.AspNetCore.Payment.WeChatPay.Utility; namespace Essensoft.AspNetCore.Payment.WeChatPay.Request { /// /// 酒店押金 - 申请退款 /// public class WeChatPayDepositRefundRequest : IWeChatPayCertRequest { /// /// 子商户应用号 /// public string SubAppId { get; set; } /// /// 子商户号 /// public string SubMchId { get; set; } /// /// 微信支付订单号 /// public string TransactionId { get; set; } /// /// 押金退款单号 /// public string OutRefundNo { get; set; } /// /// 订单金额 /// public int TotalFee { get; set; } /// /// 申请退款金额 /// public int RefundFee { get; set; } /// /// 退款货币种类 /// public string RefundFeeType { get; set; } /// /// 退款原因 /// public string RefundDesc { get; set; } /// /// 退款资金来源 /// public string RefundAccount { get; set; } #region IWeChatPayCertificateRequest Members public string GetRequestUrl() { return "https://api.mch.weixin.qq.com/deposit/refund"; } public IDictionary GetParameters() { var parameters = new WeChatPayDictionary { { "sub_appid", SubAppId }, { "sub_mch_id", SubMchId }, { "transaction_id", TransactionId }, { "out_refund_no", OutRefundNo }, { "total_fee", TotalFee }, { "refund_fee", RefundFee }, { "refund_fee_type", RefundFeeType }, { "refund_desc", RefundDesc }, { "refund_account", RefundAccount }, }; return parameters; } public WeChatPaySignType GetSignType() { return WeChatPaySignType.HMAC_SHA256; } 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); if (signType == WeChatPaySignType.HMAC_SHA256) { sortedTxtParams.Add(WeChatPayConsts.sign_type, WeChatPayConsts.HMAC_SHA256); } sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); } public bool GetNeedCheckSign() { return true; } #endregion } }