With this service, the calling app can request that debit access to a customer’s wallet be disabled. Apps will collect authorisation details and forward to OnePipe to execute, OnePipe will in turn forward to the provider’s dedicated implementation. For this service, apps are required to obtain consent to block wallet from the customer (likely at a prior time before the time the hold is required).
Before you proceed: Please read this.
Commercial model
Host clients will simply charge a fee to the calling app, and share it with the provider, OnePipe and ISO.
Special configuration notes
All providers of this service should implement OTP, but support the configuration of otp_override
such that based on this configuration, they could be instructed to bypass the OTP requirement for an app.
Settlement & fees model
This service can only support one mode.
Model | How it works |
---|---|
Invoice | The client will invoice the calling app periodically for all calls to the endpoint. |
Process flows
Sequence of calls
Getting consent
App calls
/transact
with the relevant auth detailsProvider responds with
WaitingForOTP
orPendingValidation
as may be requiredApp calls
/transact/validate
to supply OTPProvider responds with any of the completion codes
Successful
orFailed
. If successful, provider also has to respond with aprovider_token
Blocking a wallet
App calls
/transact
withauth.type
set toprovider_token
and passing a prior received token.Provider responds with any of the completion codes
Successful
orFailed
.
Interface specification - (App → OnePipe)
Consent Request
This would simply execute an authentication and return a token with app can execute a block in future. Ideal use scenario is to place this call and obtain a provider_token
to use in future. All tokens will have expiry.
Request 1
{ "request_ref":"{{request-ref}}", "request_type":"block_wallet", "auth": { "type": "wallet", "secure": "encrypted(wallet details)", "auth_provider": "Beeceptor", "route_mode":"provider | options | null" }, "transaction": { "mock_mode": "live", "transaction_ref": "{{transaction-ref}}", "transaction_desc": "A random transaction", "transaction_ref_parent": "", "amount": 0, //Always zero "customer":{ "customer_ref": "{{customer id}}", "firstname": "Uju", "surname": "Usmanu", "email": "ujuusmanu@gmail.com", "mobile_no": "234802343132" }, "meta":{ "a_key":"a_meta_value_1", "another_key":"a_meta_value_2" }, "details": null } }
Response 1
{ "status": "WaitingForOTP", "message": "Please enter the OTP sent to 2348022****08", "data": { "provider_response_code": "T0", "provider": "Beeceptor", "errors": null, "error": null, "provider_response": { "reference": "000022200225154318222333334432", "meta":{} } } }
Request 2
{ "request_ref":"{{request_ref}}", "request_type":"block_wallet", "auth": { "secure": "{{encrypted_otp}}", "auth_provider": "Beeceptor" }, "transaction": { "transaction_ref": "70713093460718" } }
Response 2
{ "status": "Successful", "message": "Transaction processed successfully", "data": { "provider_response_code": "00", "provider": "Beeceptor", "errors": null, "error": null, "provider_response": { "provider_token": "22333055555", "reference": "90988889999999988888", "token_expiry": "yyyy-MM-dd-hh-mm-ss", "hold_expiry": "yyyy-MM-dd-hh-mm-ss" } } }
The actual block process
Request
{ "request_ref":"{{request-ref}}", "request_type":"block_wallet", "auth": { "type": "provider_token", "secure": "encrypted(provider_token)", "auth_provider": "Beeceptor", "route_mode":"provider | options | null" }, "transaction": { "mock_mode": "live", "transaction_ref": "{{transaction-ref}}", "transaction_desc": "A random transaction", "transaction_ref_parent": "", "amount": 0,//always zero "customer":{ "customer_ref": "{{customer id}}", "firstname": "Uju", "surname": "Usmanu", "email": "ujuusmanu@gmail.com", "mobile_no": "234802343132" }, "meta":{ "a_key":"a_meta_value_1", "another_key":"a_meta_value_2" }, "details": null } }
Response
{ "status": "Successful", "message": "Transaction processed successfully", "data": { "provider_response_code": "00", "provider": "Beeceptor", "errors": null, "error": null, "provider_response": { "reference": "90988889999999988888", "hold_expiry": "yyyy-MM-dd-hh-mm-ss" } } }
Note that this service supports that the details object is null
Acceptable values for auth.type
Type | Description |
---|---|
wallet | Takes a wallet ID for block. |
provider_token | A token representing prior consent given to block wallet |
Possible response codes
For this service, these are the possible responses a client can receive
Response code | Meaning |
---|---|
Successful | Standard success code |
Failed | Standard failure code |
WaitingForOTP | To signify that this provider has requested an OTP from the customer and it should be supplied. |
PendingValidation | To signify that this provider needs some extra information to be provided. The |
Breakdown of the details object
For this service, the details object will be set to null
Field | Description | Possible values |
---|---|---|
null | N/A | N/A |
Interface specification - (OnePipe → Provider)
Read this closely.
Add Comment