package com.czg.entity.req;


import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NonNull;


/**
 * 小程序支付
 *
 * @author ww
 * 自有小程序拉起支付
 * 自有小程序拉起服务商小程序，(微信)半屏小程序支付
 * 半屏小程序需要在商户自己的小程序中的半屏小程序配置里面申请 否则会拉起全屏小程序支付
 * <p>
 * 半屏小程序支付适用场景是商户自己的小程序被纳入微信实物电商类型小程序，导致间联商户无法绑定这类的小程序APPID
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CzgLtPayReq extends CzgBaseReq {
    //必填范围
    /**
     * 用户唯一标识 String(30)
     * 微信支付时，传入用户的 openId；
     * 支付宝支付和银联支付时，传入用户的 userId
     */
    private String userId;
    private String payType;
    /**
     * 用户 IP 支付的用户 IP
     */
    private String clientIp;


    //非必填范围
    /**
     * 跳转通知地址
     * 支付结果同步跳转通知 URL
     */
    private String returnUrl;
    /**
     * 子商户 appid ，微信付款支付的时候 需要上送
     * isScreen 为 false 的情况下需要传入
     */
    private String subAppid;
    /**
     * 是否半屏
     * 是否使用半屏小程序，默认为 false
     * 前提小程序被纳入了实物电商类型的小程序，间联商户无法绑定这类的小程序的 appid
     */
    private boolean isScreen;

    public CzgLtPayReq(@NonNull String mchOrderNo, @NonNull Long amount, @NonNull String payType,
                       String body, @NonNull String openId, @NonNull String clientIp,
                       String returnUrl, String buyerRemark, @NonNull String extParam) {
        super(mchOrderNo, amount, body, buyerRemark, extParam);
        this.userId = openId;
        this.payType = "aliPay".equals(payType) ? "ALIPAY" : "WECHAT";
        this.clientIp = clientIp;
        this.returnUrl = returnUrl;
    }
}
