package com.jeequan.jeepay.core.model.rqrs.payorder;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.model.rqrs.AbstractRS;
import com.jeequan.jeepay.core.model.rqrs.msg.ChannelAppletPayMsg;
import com.jeequan.jeepay.core.model.rqrs.msg.ChannelRetMsg;
import lombok.Data;
import lombok.NoArgsConstructor;

/*
* 创建订单(统一订单) 响应参数
*
* @author terrfly
* 
* @date 2021/6/8 17:34
*/
@Data
@NoArgsConstructor
public class UnifiedOrderRS extends AbstractRS {

    /** 支付订单号 **/
    private String payOrderId;

    /** 商户订单号 **/
    private String mchOrderNo;

    /** 订单状态 **/
    private Byte orderState;

    /** 支付参数类型  ( 无参数，  调起支付插件参数， 重定向到指定地址，  用户扫码   )   **/
    private String payDataType;

    /** 支付参数 **/
    private String payData;

    /** 渠道返回错误代码 **/
    private String errCode;

    /** 渠道返回错误信息 **/
    private String errMsg;

    /** 订单信息， 当直接支付成功时会返回此数据。 **/
    private String payOrderInfo;

    /** 上游渠道返回数据包 (无需JSON序列化) **/
    @JSONField(serialize = false)
    private ChannelRetMsg channelRetMsg;

    /**
     * 扩展参数
     */
    private JSONObject extData;

    /**
     * 门店名称
     */
    private String storeName;



    /** 生成聚合支付参数 (仅统一下单接口使用) **/
    public String buildPayDataType(){
        return CS.PAY_DATA_TYPE.NONE;
    }

    /** 生成支付参数 **/
    public String buildPayData(){
        return "";
    }

    public UnifiedOrderRS(String payOrderId, String payUrl, ChannelAppletPayMsg payMsg) {
        this.payOrderId = payOrderId;
        this.payData = payUrl;
        ChannelRetMsg retMsg = ChannelRetMsg.waiting();
        retMsg.setLiteMsg(payMsg);
        this.setChannelRetMsg(retMsg);
    }
}
