HG-73 Initial preauth proxy (#87)

* HG-73 Add preauth proxy protocol
This commit is contained in:
Artem Ocheredko 2016-11-18 16:54:41 +03:00 committed by GitHub
parent 65aa80fc4e
commit 1006c962af
4 changed files with 159 additions and 6 deletions

33
proto/preauth.thrift Normal file
View File

@ -0,0 +1,33 @@
include "base.thrift"
namespace java com.rbkmoney.damsel.preauth
namespace erlang preauth
union Status {
1: Granted granted
2: Denied denied
3: Unavailable unavailable
}
struct Granted {
1: required State state
}
struct Denied {
1: required State state
}
struct Unavailable {
1: required State state
}
union State {
1: State3DSecure state_3dsecure
}
struct State3DSecure {
1: optional byte eci
2: optional string cavv
3: optional byte cavv_algo
4: optional string xid
}

View File

@ -9,6 +9,13 @@ namespace java com.rbkmoney.damsel.proxy
*/
typedef base.Opaque ProxyState
/**
* Запрос/ответ прокси при обработке обратного вызова в рамках сессии.
*/
typedef base.Opaque Callback
typedef base.Opaque CallbackResponse
/**
* Требование прокси к процессингу, отражающее дальнейший прогресс сессии взаимодействия
* с третьей стороной.

116
proto/proxy_preauth.thrift Normal file
View File

@ -0,0 +1,116 @@
include "base.thrift"
include "proxy.thrift"
include "domain.thrift"
include "preauth.thrift"
namespace java com.rbkmoney.damsel.proxy_preauth
namespace erlang proxy_preauth
struct Context {
1: required Session session
2: required PaymentInfo payment
3: optional domain.ProxyOptions options = {}
}
/**
* Сессия взаимодействия с предавторизационным прокси
*/
struct Session {
1: optional proxy.ProxyState state
}
/**
* Данные платежа, необходимые для предавторизации платежа.
*/
struct PaymentInfo {
1: required Shop shop
2: required Invoice invoice
3: required InvoicePayment payment
}
struct Shop {
1: required domain.ShopID id
2: required domain.Category category
3: required domain.ShopDetails details
}
struct Invoice {
1: required domain.InvoiceID id
2: required base.Timestamp created_at
3: required string product
4: optional string description
5: required domain.Cash cost
}
struct InvoicePayment {
1: required domain.InvoicePaymentID id
2: required base.Timestamp created_at
3: required domain.Payer payer
4: required domain.Cash cost
}
/**
* Связь с третьей стороной - авторизатором платежей
*/
struct Binding {
1: required string id
2: optional base.Timestamp timestamp
3: required base.StringMap extra = []
}
/**
* Требование прокси к процессингу, отражающее дальнейший прогресс сессии взаимодействия
* с третьей стороной.
*/
union Intent {
1: FinishIntent finish
2: proxy.SleepIntent sleep
3: proxy.SuspendIntent suspend
}
/**
* Требование завершить сессию взаимодействия с третьей стороной.
*/
struct FinishIntent {
1: required FinishStatus status
}
typedef base.Error ThirdPartyError
/**
* Статус, c которым завершилась сессия взаимодействия с третьей стороной.
*/
union FinishStatus {
/** Успешное завершение взаимодействия. */
1: preauth.Status ok
/** Неуспешное завершение взаимодействия с пояснением возникшей проблемы. */
2: ThirdPartyError failure
}
/**
* Результат взаимодействия с прокси
*/
struct ProxyResult {
1: required Intent intent
2: optional proxy.ProxyState next_state
3: optional Binding binding
}
struct CallbackResult {
1: required proxy.CallbackResponse response
2: required ProxyResult result
}
service PreauthProxy {
ProxyResult AuthPayment (1: Context context)
throws (1: base.TryLater ex1)
CallbackResult HandleAuthCallback (1: proxy.Callback callback, 2: Context context)
throws (1: base.TryLater ex1)
}
service PreauthProxyHost {
proxy.CallbackResponse ProcessCallback (1: base.Tag tag, 2: proxy.Callback callback)
throws (1: base.InvalidRequest ex1)
}

View File

@ -5,9 +5,6 @@ include "domain.thrift"
namespace java com.rbkmoney.damsel.proxy_provider
namespace erlang prxprv
typedef base.Opaque Callback
typedef base.Opaque CallbackResponse
/**
* Данные платежа, необходимые для обращения к провайдеру.
*/
@ -130,7 +127,7 @@ struct ProxyResult {
* Результат обработки провайдерским прокси обратного вызова в рамках сессии.
*/
struct CallbackResult {
1: required CallbackResponse response
1: required proxy.CallbackResponse response
2: required ProxyResult result
}
@ -145,7 +142,7 @@ service ProviderProxy {
/**
* Запрос к прокси на обработку обратного вызова от провайдера в рамках сессии.
*/
CallbackResult HandlePaymentCallback (1: Callback callback, 2: Context context)
CallbackResult HandlePaymentCallback (1: proxy.Callback callback, 2: Context context)
throws (1: base.TryLater ex1)
}
@ -154,6 +151,6 @@ service ProviderProxyHost {
/**
* Запрос к процессингу на обработку обратного вызова от провайдера.
*/
CallbackResponse ProcessCallback (1: base.Tag tag, 2: Callback callback)
proxy.CallbackResponse ProcessCallback (1: base.Tag tag, 2: proxy.Callback callback)
throws (1: base.InvalidRequest ex1)
}