Payout processing improvements (#263)

* Payout processing improvements
This commit is contained in:
Pavel Popov 2018-01-18 14:55:19 +03:00 committed by GitHub
parent b1da1ba687
commit ee5c9c4b56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 153 deletions

View File

@ -1,43 +0,0 @@
include "base.thrift"
include "domain.thrift"
namespace java com.rbkmoney.damsel.pay2card
namespace erlang pay2card
struct Cash {
1: required domain.Amount amount
2: required domain.Currency currency
}
enum Provider {
alfabank
binbank
}
exception ProviderFailure {
1: required Provider provider
2: required string code
3: optional string description
}
/** requestId - должен состоять только из цифр */
/** actor_id - идентификатор инициатора перевода, например MerchantId.ShopId */
struct TransferRequest {
1: required string request_id
2: required string actor_id
3: required domain.Token card_token
4: required Cash cash
}
struct TransferResult {
1: required Provider provider
2: required string transaction_id
3: required string maskCard
4: optional Cash fee
}
service Pay2Card {
Cash getFee (1: domain.Token card_token, 2: Cash cash) throws (1: ProviderFailure ex1)
TransferResult makeTransfer (1: TransferRequest request) throws (1: ProviderFailure ex1, 2: base.InvalidRequest ex2)
}

View File

@ -262,18 +262,28 @@ exception LimitExceeded {}
/**
* Диапазон времени
* from_time - начальное время.
* to_time - конечное время. Если не задано - запрашиваются все данные от from_time.
* to_time - конечное время.
* Если from > to - диапазон считается некорректным.
*/
struct TimeRange {
1: required base.Timestamp from_time
2: optional base.Timestamp to_time
2: required base.Timestamp to_time
}
struct ShopParams {
1: required domain.PartyID party_id
2: required domain.ShopID shop_id
}
/**
* Параметры для генерации выплаты
* time_range - диапазон времени, за который будет сформированы выплаты
* shop - параметры магазина. Если не указан, то генерируются выплаты за все магазины,
* имеющие платежи/возвраты/корректировки за указанный time_range
**/
struct GeneratePayoutParams {
1: required TimeRange time_range
2: required domain.PartyID party_id
3: required domain.ShopID shop_id
2: optional ShopParams shop
}
/**
@ -293,6 +303,29 @@ enum PayoutSearchStatus {
confirmed
}
/**
* Поисковый запрос по выплатам
* search_criteria - атрибуты поиска выплат
* from_id (exclusive) - начальный идентификатор, после которого будет формироваться выборка
* size - размер выборки. Не может быть отрицательным и больше 1000, в случае если не указан,
* то значение будет равно 1000.
**/
struct PayoutSearchRequest {
1: required PayoutSearchCriteria search_criteria
2: optional i64 from_id
3: optional i32 size
}
/**
* Поисковый ответ по выплатам
* payouts - информация по выплатам
* last_id (inclusive) - уникальный идентификатор, соответствующий последнему элементу выборки
**/
struct PayoutSearchResponse {
1: required list<PayoutInfo> payouts
2: required i64 last_id
}
/**
* Info по выплате для отображения в админке
**/
@ -313,20 +346,20 @@ service PayoutManagement {
/**
* Сгенерировать и отправить по почте выводы за указанный промежуток времени
*/
PayoutID GeneratePayout (1: GeneratePayoutParams params) throws (1: base.InvalidRequest ex1)
list<PayoutID> GeneratePayouts (1: GeneratePayoutParams params) throws (1: base.InvalidRequest ex1)
/**
* Подтвердить выплаты. Вернуть список подтвержденных выплат
*/
list<PayoutID> ConfirmPayouts (1: list<PayoutID> payout_ids) throws (1: base.InvalidRequest ex1)
set<PayoutID> ConfirmPayouts (1: set<PayoutID> payout_ids) throws (1: base.InvalidRequest ex1)
/**
* Отменить движения по выплатам. Вернуть список отмененных выплат
*/
list<PayoutID> CancelPayouts (1: list<PayoutID> payout_ids) throws (1: base.InvalidRequest ex1)
set<PayoutID> CancelPayouts (1: set<PayoutID> payout_ids, 2: string details) throws (1: base.InvalidRequest ex1)
/**
* Возвращает список Payout-ов согласно запросу поиска
**/
list<PayoutInfo> GetPayoutsInfo (1: PayoutSearchCriteria search_criteria) throws (1: base.InvalidRequest ex1)
PayoutSearchResponse GetPayoutsInfo (1: PayoutSearchRequest request) throws (1: base.InvalidRequest ex1)
}

View File

@ -1,102 +0,0 @@
include "base.thrift"
include "domain.thrift"
namespace java com.rbkmoney.damsel.shitter
namespace erlang shitter
typedef i64 PayoutID
/**
* Диапазон времени
* from_time - начальное время.
* to_time - конечное время. Если не задано - запрашиваются все данные от from_time.
* Если from > to - диапазон считается некорректным.
*/
struct TimeRange {
1: required base.Timestamp from_time
2: optional base.Timestamp to_time
}
/**
* Статус выплаты
* created - выплата создана, но сумма платежей еще не вычисленна и остальные атрибуты не заполненны
* ready - выплата готова и заполненна данными
* accepted - корректность выплаты подтверждена АБС и 1С.
**/
enum PayoutStatus {
created,
ready,
accepted,
canceled
}
/**
* Описание выплаты
**/
struct Payout {
1: required PayoutID id
2: required PayoutStatus status
3: required string from_time
4: required string to_time
6: required string ones_status
8: optional string ones_report
9: optional string created_at
}
/**
* Информация о платаже сохраняемая в Shiter-e
**/
struct PayoutPaymentInfo {
1: required string id
2: required string invoice_id
3: required string payment_id
4: required string party_id
5: required string shop_id
6: required string amount
7: required string provider_comission
8: required string rbk_comission
9: optional string payout_id
10: optional string created_at
}
/**
* Атрибуты поиска выплат
**/
struct PayoutSearchCriteria{
1: optional PayoutStatus status
2: optional TimeRange timeRange
3: optional list<PayoutID> payoutIDs
}
/**
* Сервис для вывода платажей из системы
**/
service Shitter {
/**
* Сгенерировать и отправить по почте выгрузку за указанный промежуток времени
* возвращает идентификатор сгенерированной выплаты.
* ?? payoutMEthoID? ?
**/
PayoutID GeneratePayout (1: TimeRange timeRange) throws (1: base.InvalidRequest ex1)
/**
* Перегенерирует отчет о выплате только по бизнес атрибутам и отправляет письмо с отчетом.
* Суммы остаются не изменными
**/
PayoutID RegenerateReport(1: PayoutID payoutID)
/**
* Подтвердить загрузку выплаты в OneS
**/
bool AcceptOneSPayout(1: PayoutID payoutID)
/*
* Исключает включенные в выплату платежи, делает ролбэк в аккаунтере, и помечает выплату как CANCELED.
* */
void cancelPayout(1: PayoutID payoutID)
/**
* Возвращает список Payout-ов согласно запросу поиска.
* Payout подтвержденный и АБС и 1С переводется в статус выплачен
**/
list<Payout> GetPayouts(1: PayoutSearchCriteria searchCriteria)
/**
* Получить список платежей попавших в Payout
**/
list<PayoutPaymentInfo> GetPayments(1: PayoutID payoutID)
}