All files / src/apis/p2p p2p.compat.ts

100% Statements 20/20
0% Branches 0/3
100% Functions 11/11
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 1684x 4x 4x                                   4x 4x 4x 4x               1x 1x                                                             4x                     1x                           1x                         1x                       3x                     1x                     1x                 4x                 1x                     1x      
import { formatOffsetDate } from "../shared";
import { P2p } from "./p2p";
import {
  BillCreationRequest,
  BillCurrency,
  BillFormParameters,
  BillPaySource,
  BillStatus,
  BillStatusData,
  PayUrlPatchParameters
} from "./p2p.types";
 
/**
 *
 * @deprecated Используйте класс `P2p` и новые сигнатуры
 * методов
 * @export
 * @class P2pCompat
 * @extends {P2p}
 */
export class P2pCompat extends P2p {
  static readonly Currency = BillCurrency;
  static readonly PaySource = BillPaySource;
  static readonly Status = BillStatus;
 
  /**
   * Creates an instance of P2pCompat.
   * @param {string} secretKey
   * @param {string} publicKey
   * @memberof P2pCompat
   */
  constructor(public readonly secretKey: string, public readonly publicKey: string) {
    super({
      http: P2pCompat.httpClientFactory(secretKey),
      publicKey,
      secretKey
    });
  }
 
  /**
   * ### Выставление счета
   *
   * **По оплаченным счетам возврат денежных средств не предусмотрен.**
   *
   * Доступно выставление счетов в рублях и тенге.
   * Надежный способ для интеграции. Параметры передаются
   * server2server с использованием авторизации. Метод позволяет
   * выставить счет: при успешном выполнении запроса в ответе
   * вернется параметр `payUrl` - ссылка для редиректа
   * пользователя на форму.
   *
   * {@link https://developer.qiwi.com/ru/p2p-payments/#option|Настройки формы и счета}
   *
   * **Для тестирования и отладки сервиса рекомендуем выставлять и оплачивать счета суммой 1 рубль.**
   *
   * @param {BillCreationRequest} data Сформированный запрос на создание счёта
   * @param {string} [billId] Свой ID счёта. По умолчанию генерируется UUID
   * @return {Promise<BillStatusData>}
   */
  async createBill(
    data: BillCreationRequest,
    billId?: string
  ): Promise<BillStatusData> {
    return await this.bills.create({ ...data, billId });
  }
 
  /**
   *  Создаёт ссылку оплаты счёта без запроса к API
   *
   * @param {BillFormParameters} parameters GET-параметры ссылки
   *
   * @return {string} Ссылка на оплату счёта
   */
  createBillFormUrl(parameters: BillFormParameters): string {
    return this.bills.createFormUrl(parameters);
  }
 
  /**
   * ### Проверка статуса перевода по счету
   *
   * Метод позволяет проверить статус перевода по счету. Рекомендуется
   * его использовать после получения уведомления о переводе.
   *
   * @deprecated Используйте метод {@link getBillStatus}
   * @param {string} billId Уникальный идентификатор счета в вашей системе.
   * @return {Promise<BillStatusData>} Объект счёта
   */
  async billStatus(billId: string): Promise<BillStatusData> {
    return await this.getBillStatus(billId);
  }
 
  /**
   * ### Проверка статуса перевода по счету
   *
   * Метод позволяет проверить статус перевода по счету. Рекомендуется
   * его использовать после получения уведомления о переводе.
   *
   * @param {string} billId Уникальный идентификатор счета в вашей системе.
   * @return {Promise<BillStatusData>} Объект счёта
   */
  async getBillStatus(billId: string): Promise<BillStatusData> {
    return await this.bills.getStatus(billId);
  }
 
  /**
   * ### Отмена неоплаченного счета
   *
   * Метод позволяет отменить счет, по которому не был выполнен перевод.
   *
   * @param {string} billId Уникальный идентификатор счета в вашей системе.
   * @return {Promise<BillStatusData>} Объект счёта
   */
  async rejectBill(billId: string): Promise<BillStatusData> {
    return await this.bills.reject(billId);
  }
 
  /**
   *
   * @param {number} days Кол-во дней жизни счёта (может быть не целым числом)
   * @return {string} Дата понятная QIWI
   *
   * @deprecated Используйте {@link formatLifetimeDays} или {@link formatLifetimeMinutes}
   */
  static formatLifetime(days = 1): string {
    return formatOffsetDate(days, "day");
  }
 
  /**
   * Добавляет параметры
   *
   * @param {string} payUrl
   * @param {PayUrlPatchParameters=} [options]
   * @return {string} Новый URL для оплаты
   */
  static patchPayUrl(payUrl: string, options?: PayUrlPatchParameters): string {
    return P2p.BillsApi.patchPayUrl(payUrl, options);
  }
 
  /**
   *
   * @param {number} days Кол-во дней жизни счёта (может быть не целым числом)
   * @return {string} Дата понятная QIWI
   */
  static formatLifetimeDays(days = 1): string {
    return formatOffsetDate(days, "day");
  }
 
  /**
   *
   * @param {number} [minutes] Кол-во минут жизни счёта (может быть не целым числом)
   * @return {string} Дата понятная QIWI
   */
  static formatLifetimeMinutes(minutes = 15): string {
    return formatOffsetDate(minutes, "minute");
  }
 
  /**
   * Проверяет подпись уведомления о статусе счёта
   *
   * @param {string} signature Подпись
   * @param {BillStatusData} body Объект уведомления
   * @return {boolean} Признак валидности
   */
  checkNotificationSignature(signature: string, body: BillStatusData): boolean {
    return this.bills.checkNotificationSignature(signature, body);
  }
}