Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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

  1. Getting consent

    1. App calls /transact with the relevant auth details

    2. Provider responds with WaitingForOTP or PendingValidation as may be required

    3. App calls /transact/validate to supply OTP

    4. Provider responds with any of the completion codes Successful or Failed. If successful, provider also has to respond with a provider_token

  2. Blocking a wallet

    1. App calls /transact with auth.type set to provider_token and passing a prior received token.

    2. Provider responds with any of the completion codes Successful or Failed.

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 response.message will contain the prompt.

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.

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.