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