All files / src/apis/wallet payment-history.api.ts

100% Statements 9/9
100% Branches 1/1
83.33% Functions 5/6
100% Lines 9/9

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 1295x 5x 5x                                     5x                                 1x                                     1x                                     1x                                     6x           6x                                                      
import { url } from "../shared/url";
import { WalletApi } from "./api";
import {
  GetPaymentHistoryParameters as GetPaymentHistoryParameters,
  GetTransactionsHistoryResponse,
  GetPaymentHistoryTotalParameters as GetPaymentHistoryTotalParameters,
  GetPaymentHistoryTotalResponse,
  Transaction,
  StringOrNumber,
  ChequeFormat,
  TransactionTypeAny
} from "./wallet.types";
 
/**
 * # История платежей
 * [Документация QIWI](https://developer.qiwi.com/ru/qiwi-wallet-personal/#payments_history)
 *
 * @export
 * @class WalletPaymentHistoryApi
 * @extends {WalletApi}
 */
export class WalletPaymentHistoryApi extends WalletApi {
  /**
   * ## Список платежей
   *
   * Запрос выгружает список платежей и пополнений вашего кошелька.
   * Можно использовать фильтр по количеству, ID и дате
   * (интервалу дат) транзакций.
   *
   * **Этот метод требует наличия валидного `walletId` (номера телефона привязанного к кошельку) в конфигурации API.**
   *
   * @param {GetPaymentHistoryParams} parameters Тело запроса
   * @return {Promise<GetTransactionsHistoryResponse>} Promise<GetTransactionsHistoryResponse>
   * @memberof WalletPaymentHistoryApi
   */
  async getHistory(
    parameters: GetPaymentHistoryParameters
  ): Promise<GetTransactionsHistoryResponse> {
    return await this.http.get(
      url`payment-history/v2/persons/${this.walletId}/payments`(parameters)
    );
  }
  /**
   * ## Статистика платежей
   *
   * Данный запрос используется для получения сводной статистики
   * по суммам платежей за заданный период.
   *
   * **Этот метод требует наличия валидного `walletId` (номера телефона привязанного к кошельку) в конфигурации API.**
   *
   * @param {GetPaymentHistoryTotalParams} parameters Тело запроса
   * @return {Promise<GetPaymentHistoryTotalResponse>} Promise<GetPaymentHistoryTotalResponse>
   * @memberof WalletPaymentHistoryApi
   */
  async getTotal(
    parameters: GetPaymentHistoryTotalParameters
  ): Promise<GetPaymentHistoryTotalResponse> {
    return await this.http.get(
      url`payment-history/v2/persons/${this.walletId}/payments/total`(parameters)
    );
  }
  /**
   * ## Информация о транзакции
   *
   * Запрос используется для получения информации по определенной
   * транзакции из вашей истории платежей.
   *
   * @param {StringOrNumber} transactionId Номер транзакции
   * @param {TransactionTypeAny} [type] Тип транзакции
   * @return {Promise<Transaction>} Promise<Transaction>
   * @memberof WalletPaymentHistoryApi
   */
  async getTransaction(
    transactionId: StringOrNumber,
    type?: TransactionTypeAny
  ): Promise<Transaction> {
    return await this.http.get(
      url`payment-history/v2/transactions/${transactionId}`({ type })
    );
  }
 
  /**
   * ### Файл квитанции
   *
   * @param {StringOrNumber} transactionId  номер транзакции из {@link WalletPaymentHistoryApi.getHistory} (параметр `data[].txnId` в ответе)
   * @param {TransactionTypeAny} type тип транзакции из {@link WalletPaymentHistoryApi.getHistory} (параметр `data[].type` в ответе)
   * @param {ChequeFormat} format тип файла, в который сохраняется квитанция. Допустимые значения: `JPEG`, `PDF`
   * @return {Promise<Uint8Array>} Promise<Uint8Array>
   * @memberof WalletPaymentHistoryApi
   */
  async getTransactionCheque(
    transactionId: StringOrNumber,
    type: TransactionTypeAny,
    format: ChequeFormat = ChequeFormat.JPEG
  ): Promise<Uint8Array> {
    return await this.http.request({
      url: url`payment-history/v1/transactions/${transactionId}/cheque/file`({
        type,
        format
      }),
      method: "GET",
      parseResponse: (body) => body
    });
  }
 
  /**
   * ### Отправка квитанции
   *
   * @param {number} transactionId  номер транзакции из {@link WalletPaymentHistoryApi.getHistory} (параметр `data[].txnId` в ответе)
   * @param {TransactionTypeAny} type тип транзакции из {@link WalletPaymentHistoryApi.getHistory} (параметр `data[].type` в ответе)
   * @param {string} email Адрес для отправки электронной квитанции
   * @return {Promise<void>} Promise<void>
   * @memberof WalletPaymentHistoryApi
   */
  async sendTransactionCheque(
    transactionId: StringOrNumber,
    type: TransactionTypeAny,
    email: string
  ): Promise<void> {
    // Деструктивный метод. Отправляет почту. Не может быть вызван
    // несколько раз подряд, что требуется для тестов
    /* istanbul ignore next */
    await this.http.post(
      url`payment-history/v2/transactions/${transactionId}/cheque/send`({ type }),
      { email }
    );
  }
}