package com.alipay.api.domain;

import com.alipay.api.AlipayObject;
import com.alipay.api.internal.mapping.ApiField;
import com.alipay.api.internal.mapping.ApiListField;

import java.util.List;

/**
 * 批量代发统一接口
 *
 * @author auto create
 * @since 1.0, 2018-05-21 20:51:50
 */
public class AlipayFundBatchTransferModel extends AlipayObject {

	private static final long serialVersionUID = 3349437245488944428L;

	/**
	 * 代发到账户明细列。biz_code=BATCH_TRANS_ACC时，该参数必填。biz_code为其他值时忽略该参数。
	 */
	@ApiListField("acc_detail_list")
	@ApiField("acc_trans_detail")
	private List<AccTransDetail> accDetailList;

	/**
	 * test
	 */
	@ApiField("batch_no")
	private String batchNo;

	/**
	 * 付款方账单地址，用于反洗钱，biz_scene=GLOBAL时必填。格式: 两位国家编码,账单地址.  账单地址至少提供到市. 账单地址中只能包含如下字符: a-zA-Z0-9()/-?:.'+, 和空格。
	 */
	@ApiField("billing_address")
	private String billingAddress;

	/**
	 * 批量代发业务标识。
	 * <p>
	 * 批量代发到账户：BATCH_TRANS_ACC
	 * 批量代发到银行卡：BATCH_TRANS_BC
	 */
	@ApiField("biz_code")
	private String bizCode;

	/**
	 * 批量代发业务场景。
	 * <p>
	 * GLOBAL: 全球代发. 除CNY的多币种代发或人民币跨境代发。
	 * LOCAL：中国境内纯人民币代发。
	 */
	@ApiField("biz_scene")
	private String bizScene;

	/**
	 * 扩展参数。使用前需要和支付宝先约定key值。
	 */
	@ApiField("extend_params")
	private String extendParams;

	/**
	 * 跨境批量代发场景下，描述批量代发请求，是否针对付汇失败场景下商户所做的重试。
	 * T: 代表重试请求，对应的代发文件明细中alipay_order_no不能为空；
	 * F: 代表非重试请求，对应的代发文件明细中alipay_order_no必须为空。
	 * biz_scene=LOCAL时忽略该参数。
	 */
	@ApiField("pay_retry")
	private String payRetry;

	/**
	 * 付款方账号，来账场景中填写VA账号。
	 */
	@ApiField("payer_account")
	private String payerAccount;

	/**
	 * 付款方账号类型.与payer_account配合使用, 如果payer_account是VA账号, 则填写VA.
	 */
	@ApiField("payer_account_type")
	private String payerAccountType;

	/**
	 * 商户支付给支付宝的币种。
	 * biz_scene=GLOBAL时必填;
	 * biz_scene=LOCAL时忽略该参数。
	 */
	@ApiField("payment_currency")
	private String paymentCurrency;

	/**
	 * 批量代发产品签约产品码。
	 */
	@ApiField("product_code")
	private String productCode;

	/**
	 * 对客资金交割时效。
	 * biz_scene=GLOBAL时, 如果未填写以合约为准。
	 * biz_scene=LOCAL时, 忽略该参数。
	 */
	@ApiField("request_value_time")
	private String requestValueTime;

	/**
	 * 签约主体，即签约了批量代发产品的支付宝账号。
	 */
	@ApiField("sign_principal")
	private String signPrincipal;

	/**
	 * 本次代发明细总数据. 正整数，最小1笔，最大支持1000笔，该字段值会和明细总数做比对校验。
	 */
	@ApiField("total_count")
	private String totalCount;

	/**
	 * 总转账金额。
	 * biz_scene=LOCAL时，该参数必传。
	 * biz_scene=GLOBAL时，如果明细列中trans_currency只存在一种币种，且值等于payment_currency时，该参数必传，并且total_trans_amount等于明细列中trans_amount累加总和。其他场景下，忽略该参数。
	 */
	@ApiField("total_trans_amount")
	private String totalTransAmount;

	/**
	 * 转账币种三位英文短码, 用于修饰total_trans_amount.
	 * biz_scene=LOCAL时，该参数选传, 如果传入必须为CNY。
	 * biz_scene=GLOBAL时，如果明细列中trans_currency只存在一种币种，且值等于payment_currency时，该参数必传，与trans_currency相同。其他场景下，忽略该参数。
	 */
	@ApiField("total_trans_currency")
	private String totalTransCurrency;

	public List<AccTransDetail> getAccDetailList() {
		return this.accDetailList;
	}

	public void setAccDetailList(List<AccTransDetail> accDetailList) {
		this.accDetailList = accDetailList;
	}

	public String getBatchNo() {
		return this.batchNo;
	}

	public void setBatchNo(String batchNo) {
		this.batchNo = batchNo;
	}

	public String getBillingAddress() {
		return this.billingAddress;
	}

	public void setBillingAddress(String billingAddress) {
		this.billingAddress = billingAddress;
	}

	public String getBizCode() {
		return this.bizCode;
	}

	public void setBizCode(String bizCode) {
		this.bizCode = bizCode;
	}

	public String getBizScene() {
		return this.bizScene;
	}

	public void setBizScene(String bizScene) {
		this.bizScene = bizScene;
	}

	public String getExtendParams() {
		return this.extendParams;
	}

	public void setExtendParams(String extendParams) {
		this.extendParams = extendParams;
	}

	public String getPayRetry() {
		return this.payRetry;
	}

	public void setPayRetry(String payRetry) {
		this.payRetry = payRetry;
	}

	public String getPayerAccount() {
		return this.payerAccount;
	}

	public void setPayerAccount(String payerAccount) {
		this.payerAccount = payerAccount;
	}

	public String getPayerAccountType() {
		return this.payerAccountType;
	}

	public void setPayerAccountType(String payerAccountType) {
		this.payerAccountType = payerAccountType;
	}

	public String getPaymentCurrency() {
		return this.paymentCurrency;
	}

	public void setPaymentCurrency(String paymentCurrency) {
		this.paymentCurrency = paymentCurrency;
	}

	public String getProductCode() {
		return this.productCode;
	}

	public void setProductCode(String productCode) {
		this.productCode = productCode;
	}

	public String getRequestValueTime() {
		return this.requestValueTime;
	}

	public void setRequestValueTime(String requestValueTime) {
		this.requestValueTime = requestValueTime;
	}

	public String getSignPrincipal() {
		return this.signPrincipal;
	}

	public void setSignPrincipal(String signPrincipal) {
		this.signPrincipal = signPrincipal;
	}

	public String getTotalCount() {
		return this.totalCount;
	}

	public void setTotalCount(String totalCount) {
		this.totalCount = totalCount;
	}

	public String getTotalTransAmount() {
		return this.totalTransAmount;
	}

	public void setTotalTransAmount(String totalTransAmount) {
		this.totalTransAmount = totalTransAmount;
	}

	public String getTotalTransCurrency() {
		return this.totalTransCurrency;
	}

	public void setTotalTransCurrency(String totalTransCurrency) {
		this.totalTransCurrency = totalTransCurrency;
	}

}
