Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The provider microservice should have it's own way of taking money from the auth details passed in, then execute the transfer to the destination account supplied. Provider needs to send a share of income to the settlement account at the host; which will then be shared with OnePipe, host and ISO. Parties that share the fees are:

...

Code Block
languagejson
{
  "request_ref":"{{request_ref}}", 
  "request_type":"transfer_funds",
  "auth": {
    "type": "bank.account | card | wallet", 
    "secure": "{{encrypted(bank account numberdetails | card details | wallet)}}",
    "auth_provider": "Beeceptor",
    "route_mode": null
  },
  "transaction": {
    "mock_mode": "live", 
    "transaction_ref": "{{transaction_ref}}", 
    "transaction_desc": "A random transaction", 
    "transaction_ref_parent": null, 
    "amount": 1000,
    "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": {
    	"destination_account":"2363262632",
        "destination_bank_code":"011",
    	"otp_override": true
    }
  }
}

Response (when otp_override = false)

...

Code Block
languagejson
{
    "status": "Successful",
    "message": "Transaction processed successfully",
    "data": {
        "provider_response_code": "00",
        "provider": "Beeceptor",
        "errors": null,
        "error": null,
        "provider_response": {
            "reference": "000022200225154318222333334432",
            "payment_id": "136FTTP200590171",
            "destination_institution_code": "000016",
            "beneficiary_account_name": "JOHN DOE JAMES",
            "beneficiary_account_number": "3056433222",
            "beneficiary_kyc_level": "3",
            "originator_account_name": "James Jane",
            "originator_account_number": "0001131256",
            "originator_kyc_level": "1",
            "narration": "My narration",
            "transaction_final_amount": 1000,
        }    "meta":{
          } }

Request (validate with otp)

Code Block
languagejson
{   "requestfield_refkey":"{{request_ref}}field_value",
      "request_type":"transfer_funds", 	"auth": {         "securefield_key": "{{encrypted_otp}}",field_value"
        "auth_provider": "Beeceptor"      },
    "transaction": {    }
    "transaction_ref": "70713093460718"
    }
}

Request (validate with otp)

Code Block
languagejson
{
  "request_ref":"{{request_ref}}", 
  "request_type":"transfer_funds",
	"auth": {
        "secure": "{{encrypted_otp}}",
        "auth_provider": "Beeceptor" 
    },
    "transaction": {
        "transaction_ref": "70713093460718"
    }
}

Request Payload Description

Field

Type

Requirement

Description

request_ref

string

compulsory

Takes unique value for every request made to OnePipe

request_type

string

compulsory

This should be set to the service transfer_funds

auth.type

string

compulsory

Depending on the source of fund. This can be set to either bank.account, card, token or wallet

auth.secure

string

compulsory

This is the encrypted value of the source of fund. Depending on the auth type, this can be either bank account, card details, token or wallet details. See details on how to encrypt the secure field.

auth.provider

string

compulsory

This should be set to the name of the Provider

auth.route_mode

string

N/A

This can be set to null

transaction.mock_mode

string

optional

This can be set to either live or inspect. If left as null, value will fall back to the state of the service set on the console.

transaction.transaction_desc

string

optional

Description of your transaction

transaction.transaction_ref_parent

string

optional

Takes value of a (parent) transaction reference

transaction.customer.customer_ref

string

compulsory

Identifier for customer

transaction.customer.firstname

string

optional

First name of customer

transaction.customer.surname

string

optional

Surname of customer

transaction.customer.email

string

optional

Email address of customer

transaction.customer.mobile_no

string

optional

Phone number of customer

transaction.amount

big int

compulsory

This is the amount (kobo) to be transferred

transaction.transaction_ref

string

compulsory

Takes unique value for every transaction call to OnePipe.

transaction.meta

object

optional

Json object of your arbitrary transaction parameters

transaction.details

object

compulsory

Holds defined fields peculiar to this service

...

Field

Type

Requirement

Description

destination_account_number

string

compulsory

Destination account to send funds to

destination_bank_code

string

compulsory

Destination institution code

otp_override

boolean

optional

Defaults to false. If set to true, request will not be validated by OTP.

Possible status response codes

...

Code Block
languagejson
{
  "request_ref":"{{request_ref}}", 
  "request_type":"transfer_funds",
  "auth": {
    "type": "bank.account | card | wallet", 
    "secure": "{{bank account numberdetails | card details | wallet}}",
    "auth_provider": "Beeceptor"
  },
  "transaction": {
    "mock_mode": "live", 
    "transaction_ref": "{{transaction_ref}}", 
    "transaction_desc": "A random transaction", 
    "transaction_ref_parent": null, 
    "amount": 1000,
    "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": {
    	"destination_account":"2363262632",
        "destination_bank_code":"011",
    	"otp_override": true
    },
    "client_info": {
        "name": "TrustPay",
        "id": null,
        "bank_cbn_code": null,
        "bank_name": null,
        "console_url": null,
        "js_background_image": null,
        "css_url": null,
        "logo_url": "https://trustpay.onepipe.io/img/trustpay_logo_console.png",
        "footer_text": "Brought to you by <strong>SunTrust Bank</strong>",
        "options": [
            "BANK.TRANSFER",",
            "CARD"
        ],
        "primary_color": "CARD#b37038",
        ]"secondary_color": "#b37038",
        "primary_button_color": "#b37038",
        "secondarymodal_background_color": "#b37038linear-gradient(147.44deg, #d8903c 26.99%, #e69921 74.1%)",
        "primary_button_color": "#b37038"payment_option_color": "rgba(76, 61, 47, 0.08)",
        "modalpayment_option_backgroundactive_color": "linear-gradient(147.44degrgba(31, #d8903c 26.99%31, 31, #e69921 740.1%25)",
        "paymentapp_option_color": "rgba(76, 61, 47, 0.08)",
"#b37038"
    },
    "app_info": {
       "payment_option_active_color"name": "rgba(31, 31, 31, 0.25)Victor Motors",
      "id": "5cdab3332b7d4100015f0db4",
        "appbeneficiary_account_colorno": "#b370380001137069",
     }, "extras": {/*this will contain  "app_info": {
  an array of provider override settings*/}
   "name": "Victor Motors", }
  }
}

Response (when otp_override = false)

Set provider_response_code to 900T0

Code Block
languagejson
{
    "idstatus": "5cdab3332b7d4100015f0db4WaitingForOTP",
      "beneficiary_account_no"message": "0001137069", "Please enter the OTP sent to "extras": {/*this will contain an array of provider override settings*/}2348022****08",
    "data": {
       }
  }
}

Response (when otp_override = false)

...

 "provider_response_code

...

Code Block
languagejson
{": "900T0",
        "statusprovider": "WaitingForOTPBeeceptor",
        "messageerrors": "Pleasenull,
enter the OTP sent to 2348022****08",
    "dataerror": {null,
        "provider_response_code": "900T0", null
    }
}

Response (when otp_override = true)

Code Block
{
    "providerstatus": "BeeceptorSuccessful",

       "errorsmessage": null,"Operation was successful",
      "errordata": null,{
    	"provider_responde_code":"00",
    	"provider_response": null"Beeceptor",
    }
}

Response (when otp_override = true)

Code Block
{     "statuserrors": "Successful", null,
        "messageerror": null,
 "Operation was successful",     "dataprovider_response": {
	    	"provider_responde_code    "reference": "00000022200225154318222333334432",
    	"provider        "payment_id": "Beeceptor136FTTP200590171",
            "errorsdestination_institution_code": null,"000016",
            "errorbeneficiary_account_name": null,"JOHN DOE JAMES",
      "provider_response": { 	        "reference"beneficiary_account_number": "0000222002251543182223333344323056433222",
            "paymentbeneficiary_kyc_idlevel": "136FTTP2005901713",
            "destinationoriginator_institutionaccount_codename": "000016James Jane",
            "beneficiaryoriginator_account_namenumber": "JOHN DOE JAMES0001131256",
            "beneficiaryoriginator_accountkyc_numberlevel": "30564332221",
            "beneficiary_kyc_levelnarration": "3My narration",
            "originatortransaction_accountfinal_nameamount": "James Jane"1000,
            "originator_account_numbermeta":{
 "0001131256",             "originatorfield_kyc_levelkey": "1field_value",
              "narrationfield_key": "My narration","field_value"
            "transaction_final_amount": 1000 }
        }
    }
}

Failed Response

Code Block
{
    "status": "Failed",
    "message": "Operation was not successful",
    "data": {
    	"provider_responde_code":"91",
    	"provider": "Beeceptor",
        "errors": [
          {
            "code" : "01",
            "message : "Reason why it failed"
          }
        ],
        "error": {
          "code" : "01",
          "message : "Reason why it }failed"
        ]},
        "errorprovider_response": {
	       "response_code": "91",
		   "coderesponse_message" :"Failed",
			"01meta",:{
           "message : "Reason why it failed"
 "field_key":"field_value",
       },         "providerfield_responsekey":"field_value"
 { 	       "response_code": "91", 		   "response_message":"Failed"}
        }
    }
}

Request (validate with otp)

...

Whenever a request is to be validated by OTP, the provider microservice should first call the provider, store response info in the database, send an OTP to the phone number attached to the source of fund, then respond with WaitingForOTP.
On the OTP validation phase, if user OTP is valid, provider should retrieve info from the database, then respond with a Successful response.
NB: Data should be erased from the DB.

 

Special notes for providers

...