package com.cyksj.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Getter;
import lombok.Setter;

/**
 * 微信H5支付 申请退款
 * https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_4&index=4
 *
 * @author zzj
 * @date 2019/3/24 15:02
 */
@Getter
@Setter
@JacksonXmlRootElement(localName = "xml")
public class WxRefundOrder {

    /**
     * 公众号appid
     */
    @JacksonXmlCData
    private String appid;

    /**
     * 商户号
     */
    @JacksonXmlCData
    @JsonProperty("mch_id")
    private String mchId;

    /**
     * 随机字符串
     */
    @JacksonXmlCData
    @JsonProperty("nonce_str")
    private String nonceStr;

    /**
     * 签名
     */
    @JacksonXmlCData
    private String sign;

    /**
     * 微信订单号 在支付通知中有返回
     */
    @JacksonXmlCData
    @JsonProperty("transaction_id")
    private String transactionId;

    /**
     * 商户退款单号 同一退款单号多次请求只退一笔
     */
    @JacksonXmlCData
    @JsonProperty("out_refund_no")
    private String outRefundNo;

    /**
     * 订单总金额 单位为分
     */
    @JacksonXmlCData
    @JsonProperty("total_fee")
    private Integer totalFee;

    /**
     * 退款金额 单位为分 可以做部分退款
     */
    @JacksonXmlCData
    @JsonProperty("refund_fee")
    private Integer refundFee;

    /**
     * 退款原因
     */
    @JacksonXmlCData
    @JsonProperty("refund_desc")
    private String refundDesc;

    /**
     * 通知地址
     */
    @JacksonXmlCData
    @JsonProperty("notify_url")
    private String notifyUrl;

    public String println(String shopKey) {
        return "appid=" + this.appid +
                "&mch_id=" + this.mchId +
                "&nonce_str=" + this.nonceStr +
                "&notify_url=" + this.notifyUrl +
                "&out_refund_no=" + this.outRefundNo +
                "&refund_fee=" + this.refundFee +
                "&total_fee=" + this.totalFee +
                "&transaction_id=" + this.transactionId +
                "&key=" + shopKey;
    }
}
