All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.tinkoff.acquiring.sdk.requests.InitRequestBuilder Maven / Gradle / Ivy

/*
 * Copyright © 2016 Tinkoff Bank
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package ru.tinkoff.acquiring.sdk.requests;

import java.util.Map;

import ru.tinkoff.acquiring.sdk.PayType;
import ru.tinkoff.acquiring.sdk.Receipt;

/**
 * @author Mikhail Artemyev
 */
final public class InitRequestBuilder extends AcquiringRequestBuilder {

    private InitRequest request = new InitRequest();

    /**
     * Билдер для запроса Init
     *
     * @param password    Пароль. Выдается банком на каждый магазин.
     * @param terminalKey Уникальный идентификатор терминала. Выдается банком на каждый магазин.
     */
    public InitRequestBuilder(final String password, final String terminalKey) {
        super(password, terminalKey);
    }

    /**
     * @param value Сумма в копейках
     */
    public InitRequestBuilder setAmount(final long value) {
        request.setAmount(value);
        return this;
    }

    /**
     * @param value Номер заказа в системе Продавца
     */
    public InitRequestBuilder setOrderId(final String value) {
        request.setOrderId(value);
        return this;
    }

    /**
     * @param value Идентификатор покупателя в системе Продавца.
     *              Если передается, то для данного покупателя будет осуществлена привязка карты к данному идентификатору клиента CustomerKey.
     *              В нотификации на AUTHORIZED будет передан параметр CardId, подробнее см. метод GetGardList {@link GetCardListRequestBuilder}.
     *              Параметр обязателен, если Recurrent = Y
     */
    public InitRequestBuilder setCustomerKey(final String value) {
        request.setCustomerKey(value);
        return this;
    }

    /**
     * @param value Краткое описание
     */
    public InitRequestBuilder setDescription(final String value) {
        request.setDescription(value);
        return this;
    }

    /**
     * @param value Заголовок формы, не более 20 символов
     */
    public InitRequestBuilder setPayForm(final String value) {
        request.setPayForm(value);
        return this;
    }

    /**
     * @param value Если передается и установлен в Y, то регистрирует платёж как рекуррентный. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge
     */
    public InitRequestBuilder setRecurrent(final boolean value) {
        request.setRecurrent(value);
        return this;
    }

    /**
     * @param language Язык платёжной формы.
     *                 ru - форма оплаты на русском языке;
     *                 en - форма оплаты на англифском языке.
     *                 По умолчанию (если параметр не передан) - форма оплаты на русском языке.
     */
    public InitRequestBuilder setLanguage(final String language) {
        request.setLanguage(language);
        return this;
    }

    /**
     * @param payType Тип оплаты
     */
    public InitRequestBuilder setPayType(PayType payType) {
        request.setPayType(payType.toString());
        return this;
    }

    /**
     * @param receipt Объект с данными чека
     */
    public InitRequestBuilder setReceipt(Receipt receipt) {
        request.setReceipt(receipt);
        return this;
    }

    /**
     * @param data Объект содержащий дополнительные параметры в виде “ключ”:”значение”. Данные параметры будут переданы на страницу оплаты (в случае ее кастомизации). Максимальная длина для каждого передаваемого параметра:
     *             Ключ – 20 знаков,
     *             Значение – 100 знаков.
     *             Максимальное количество пар «ключ-значение» не может превышать 20.
     */
    public InitRequestBuilder setData(Map data) {
        request.setData(data);
        return this;
    }

    /**
     * @param data Объект содержащий дополнительные параметры в виде “ключ”:”значение”. Данные параметры будут переданы на страницу оплаты (в случае ее кастомизации). Максимальная длина для каждого передаваемого параметра:
     *             Ключ – 20 знаков,
     *             Значение – 100 знаков.
     *             Максимальное количество пар «ключ-значение» не может превышать 20.
     */
    public InitRequestBuilder addData(Map data) {
        request.addData(data);
        return this;
    }

    /**
     * @param chargeFlag Флаг, о том, что происходит оплата в рекуретном режиме, и вместо вызова FinishAuthorize необходимо вызвать Charge
     */
    public InitRequestBuilder setChargeFlag(boolean chargeFlag) {
        request.setChargeFlag(chargeFlag);
        return this;
    }

    @Override
    protected void validate() {
        validateNonEmpty(request.getOrderId(), "Order ID");
        validateZeroOrPositive(request.getAmount(), "Amount");
    }

    @Override
    protected InitRequest getRequest() {
        return request;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy