package com.liquidnet.service.goblin.param.shouqianba.response.data;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value = "创建微信预支付订单响应")
@JsonIgnoreProperties(ignoreUnknown = true)
public class CreateWechatPrepayOrderData {

    @ApiModelProperty(value = "收单号")
    private String acquiringSn;

    @ApiModelProperty(value = "收单签名")
    private String signature;

    @ApiModelProperty(value = "收单状态", notes = "0:已创建, 1:待支付, 2:部分支付成功, 3:全部支付成功, 4:已部分退款, 5:已全额退款, 6:已关闭")
    private Byte acquiringState;

    @ApiModelProperty(value = "金额明细")
    private AmountDetails amount;

    @ApiModelProperty(value = "支付凭证", notes = "用于唤起微信支付")
    private PaymentVoucher paymentVoucher;

    @ApiModelProperty(value = "通道信息")
    private ChannelInfo channelInfo;

    @Data
    @ApiModel(value = "订单金额明细")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class AmountDetails {

        @ApiModelProperty(value = "收单总金额")
        private Long totalAmount;

        @ApiModelProperty(value = "已付总金额")
        private Long paidAmount;

        @ApiModelProperty(value = "已退总金额")
        private Long refundedAmount;
    }

    @Data
    @ApiModel(value = "支付凭证详情")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class PaymentVoucher {

        @ApiModelProperty(value = "时间戳")
        private String timeStamp;

        @ApiModelProperty(value = "订单详情扩展字符串")
        private String packageStr;

        @ApiModelProperty(value = "签名")
        private String paySign;

        @ApiModelProperty(value = "Appid")
        private String appId;

        @ApiModelProperty(value = "签名方式")
        private String signType;

        @ApiModelProperty(value = "随机字符串")
        private String nonceStr;
    }

    @Data
    @ApiModel(value = "通道信息详情")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class ChannelInfo {

        @ApiModelProperty(value = "收钱吧通道流水号")
        private String payTsn;
    }



}
