2016-06-02 11:38:27 +00:00
|
|
|
|
include "base.thrift"
|
2016-09-27 13:01:50 +00:00
|
|
|
|
include "proxy.thrift"
|
2016-06-02 11:38:27 +00:00
|
|
|
|
include "domain.thrift"
|
|
|
|
|
|
2016-06-21 15:45:09 +00:00
|
|
|
|
namespace java com.rbkmoney.damsel.proxy_provider
|
2016-10-20 10:47:12 +00:00
|
|
|
|
namespace erlang prxprv
|
2016-06-21 15:45:09 +00:00
|
|
|
|
|
2016-06-02 11:38:27 +00:00
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Данные платежа, необходимые для обращения к провайдеру.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2016-09-27 13:01:50 +00:00
|
|
|
|
struct PaymentInfo {
|
2016-10-20 10:47:12 +00:00
|
|
|
|
1: required Shop shop
|
|
|
|
|
2: required Invoice invoice
|
|
|
|
|
3: required InvoicePayment payment
|
2017-09-12 09:36:42 +00:00
|
|
|
|
4: optional InvoicePaymentRefund refund
|
2016-10-20 10:47:12 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct Shop {
|
|
|
|
|
1: required domain.ShopID id
|
|
|
|
|
2: required domain.Category category
|
|
|
|
|
3: required domain.ShopDetails details
|
2017-07-17 10:21:41 +00:00
|
|
|
|
4: required domain.ShopLocation location
|
2016-10-20 10:47:12 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct Invoice {
|
|
|
|
|
1: required domain.InvoiceID id
|
|
|
|
|
2: required base.Timestamp created_at
|
|
|
|
|
3: required base.Timestamp due
|
2016-12-21 12:53:12 +00:00
|
|
|
|
7: required domain.InvoiceDetails details
|
2016-10-20 10:47:12 +00:00
|
|
|
|
6: required Cash cost
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct InvoicePayment {
|
|
|
|
|
1: required domain.InvoicePaymentID id
|
|
|
|
|
2: required base.Timestamp created_at
|
|
|
|
|
3: optional domain.TransactionInfo trx
|
|
|
|
|
4: required domain.Payer payer
|
|
|
|
|
5: required Cash cost
|
|
|
|
|
}
|
|
|
|
|
|
2017-09-12 09:36:42 +00:00
|
|
|
|
struct InvoicePaymentRefund {
|
|
|
|
|
1: required domain.InvoicePaymentRefundID id
|
|
|
|
|
2: required base.Timestamp created_at
|
|
|
|
|
3: optional domain.TransactionInfo trx
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-20 10:47:12 +00:00
|
|
|
|
struct Cash {
|
|
|
|
|
1: required domain.Amount amount
|
|
|
|
|
2: required domain.Currency currency
|
2016-06-02 11:38:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Данные сессии взаимодействия с провайдерским прокси.
|
|
|
|
|
*
|
|
|
|
|
* В момент, когда прокси успешно завершает сессию взаимодействия, процессинг считает,
|
|
|
|
|
* что поставленная цель достигнута, и платёж перешёл в соответствующий статус.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2017-07-17 10:21:41 +00:00
|
|
|
|
struct Session {
|
|
|
|
|
1: required domain.TargetInvoicePaymentStatus target
|
|
|
|
|
2: optional proxy.ProxyState state
|
2016-06-02 11:38:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Набор данных для взаимодействия с провайдерским прокси.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2016-09-27 13:01:50 +00:00
|
|
|
|
struct Context {
|
|
|
|
|
1: required Session session
|
2017-02-27 13:48:25 +00:00
|
|
|
|
2: required PaymentInfo payment_info
|
2016-09-27 13:01:50 +00:00
|
|
|
|
3: optional domain.ProxyOptions options = {}
|
2016-06-02 11:38:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Результат обращения к провайдерскому прокси в рамках сессии.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*
|
|
|
|
|
* В результате обращения прокси может решить, следует ли:
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* - завершить сессию взаимодействия с провайдером (FinishIntent); или
|
|
|
|
|
* - просто приостановить на определённое время (SleepIntent), обновив своё состояние, которое
|
|
|
|
|
* вернётся к нему в последующем запросе; или
|
|
|
|
|
* - приостановить до получения обратного запроса (SuspendIntent), обновив своё состояние, которое
|
|
|
|
|
* вернётся к нему при получени означенного обратного запроса.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Прокси может связать с текущим платежом данные транзакции у провайдера для учёта в нашей системе,
|
|
|
|
|
* причём на эти данные налагаются следующие требования:
|
|
|
|
|
* - данные должны быть связаны на момент завершения сессии взаимодействия с провайдером в рамках
|
|
|
|
|
* достижения цели по переводу платежа в статус `processed`;
|
2016-06-02 11:38:27 +00:00
|
|
|
|
* - идентификатор связанной транзакции _не может измениться_ при последующих обращениях в прокси
|
|
|
|
|
* по текущему платежу.
|
|
|
|
|
*/
|
2016-09-27 13:01:50 +00:00
|
|
|
|
struct ProxyResult {
|
|
|
|
|
1: required proxy.Intent intent
|
|
|
|
|
2: optional proxy.ProxyState next_state
|
|
|
|
|
3: optional domain.TransactionInfo trx
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Результат обработки провайдерским прокси обратного вызова в рамках сессии.
|
|
|
|
|
*/
|
|
|
|
|
struct CallbackResult {
|
2016-11-18 13:54:41 +00:00
|
|
|
|
1: required proxy.CallbackResponse response
|
2017-08-09 13:08:39 +00:00
|
|
|
|
2: required CallbackProxyResult result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct CallbackProxyResult {
|
|
|
|
|
// TODO temporary crutch, remove it as soon as possible
|
|
|
|
|
// An `undefined` means that the suspend will be kept untouched
|
|
|
|
|
1: optional proxy.Intent intent
|
|
|
|
|
2: optional proxy.ProxyState next_state
|
|
|
|
|
3: optional domain.TransactionInfo trx
|
2016-06-02 11:38:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
service ProviderProxy {
|
|
|
|
|
|
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Запрос к прокси на проведение взаимодействия с провайдером в рамках сессии.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2016-09-27 13:01:50 +00:00
|
|
|
|
ProxyResult ProcessPayment (1: Context context)
|
2016-06-02 11:38:27 +00:00
|
|
|
|
|
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Запрос к прокси на обработку обратного вызова от провайдера в рамках сессии.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2016-11-18 13:54:41 +00:00
|
|
|
|
CallbackResult HandlePaymentCallback (1: proxy.Callback callback, 2: Context context)
|
2016-06-02 11:38:27 +00:00
|
|
|
|
|
2016-09-27 13:01:50 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
service ProviderProxyHost {
|
2016-12-13 17:23:13 +00:00
|
|
|
|
|
2016-06-02 11:38:27 +00:00
|
|
|
|
/**
|
2016-09-27 13:01:50 +00:00
|
|
|
|
* Запрос к процессингу на обработку обратного вызова от провайдера.
|
2016-06-02 11:38:27 +00:00
|
|
|
|
*/
|
2016-11-18 13:54:41 +00:00
|
|
|
|
proxy.CallbackResponse ProcessCallback (1: base.Tag tag, 2: proxy.Callback callback)
|
2016-09-27 13:01:50 +00:00
|
|
|
|
throws (1: base.InvalidRequest ex1)
|
2016-12-13 17:23:13 +00:00
|
|
|
|
|
2016-06-02 11:38:27 +00:00
|
|
|
|
}
|