Versions Compared

Key

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

...

Info

All calls to OnePipe support for authorization details to be passed in where required in the auth.secure element.

A note on the secure element

  • Once it's cardWhen auth.type is ‘card’, it should be: TripleDES.encrypt("{card.Pan};{card.Cvv};{card.Expdate};{card.Pin}",secretKey)

  • Once it's bank.account When auth.type is ‘bank.account’ , it shd be: TripleDES.encrypt("{accountNumber};{bankCBNCode}",secretKey)

  • Once it's wallet When auth.type is ‘wallet’ , it shd be: TripleDES.encrypt("{walletNumber};{providerCode}",secretKey)Once

  • it's airtime When auth.type is ‘airtime’ , it shd be: TripleDES.encrypt("{phoneNumber};{telcoCode}",secretKey)

  • Once it's voucher When auth.type is ‘voucher’ , it shd be: TripleDES.encrypt("{voucherCode};{providerCode}",secretKey)Once

  • it's bvn When auth.type is ‘bvn’, it shd be: TripleDES.encrypt("{bvn}",secretKey)

For
  • When auth.type is ‘basic’ , it shd be: TripleDES.encrypt("{userName};{password}",secretKey)

  • When auth.type is 'custom' (masterpass specifically) , it shd be: TripleDES.encrypt("{user_id};{card_id};{pin}",secretKey)

  • When auth.type is ‘custom’ (anything else) , it shd be: TripleDES.encrypt("{ref}",secretKey)

For details on encryption using the Triple DES Algorithm, read this.

NOTE: While it’s such that some providers will need a PIN for their auth Type, others will likely not. But the interfaces are standardized not to request this value (except in the case of cards). If a provider needs it, they should respond with PendingValidation and request for the PIN.

...

Code Block
languagejson
{
  "request_ref":"{{request_ref}}", 
  "request_type":"transfer_funds":"transfer_funds",
  "request_mode":"transact | validate | query | reverse",
  "auth": {
    "type": "bank.account | card | wallet", 
    "secure": "{{encrypted(bank account details | 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": {
    	"a_key":"a_value",
        "a_key":"a_value"
    }
  }
}

...

Same payload as the the /transact call, only that it’s probing the provider for options. At this point auth can be null if the provider supports it.

...

languagejson

...

supports it.

Code Block
languagejson
{
  "request_ref":"{{request_ref}}", 
  "request_type":"transfer_funds",
  "auth": {
    "type": "bank.account | card | wallet", 
    "secure": "{{encrypted(bank account details | card details | wallet)}}",
    "auth_provider": "Beeceptor",
    "requestroute_typemode":"transfer_funds" null
  },
  "authtransaction": {
    "typemock_mode": "bank.account | card | walletlive", 
    "securetransaction_ref": "{{encrypted(bank account details | card details | wallet)}}",transaction_ref}}", 
    "transaction_desc": "A random transaction", 
    "authtransaction_ref_providerparent": null, 
    "Beeceptoramount": 1000,
    "route_modecustomer": null
{
 },   	"transactioncustomer_ref": "{{customer_id}}",
    	"mock_modefirstname": "liveUju",
     "transaction_ref   "surname": "{{transaction_ref}}Usmanu",
     	"transaction_descemail": "A random transactionujuusmanu@gmail.com",
     	"transactionmobile_ref_parentno": null,"234802343132"
     "amount": 1000},
    "customermeta":{
    	"customera_refkey": "{{customer_id}}"a_meta_value_1",
    	"firstnameanother_key": "Uju","a_meta_value_2"
    },
    "surnamedetails": "Usmanu",{
    	"emaila_key": "ujuusmanu@gmail.com"a_value",
    	"mobile_no    "a_key": "234802343132a_value"
    }
  },
    "meta":
}

A typical /transact/fulfil request

To force-complete a prior transaction that is partially completed. e.g. Airtime in which the customer was debited but the airtime didn't vend.

Code Block
languagejson
{
    	"arequest_keyref": "a_meta_value_1{{request_ref}}",
    	"anotherrequest_keytype":"a_meta_value_2"
    } "{{request type}",
    "detailsrequest_mode": {"fulfil",
    	"a_keytransaction":"a_value", {
        "a_keyamount": "a_value18000",
    }   } }

A typical /transact/fulfil request

To force-complete a prior transaction that is partially completed. e.g. Airtime in which the customer was debited but the airtime didn't vend.

Code Block
languagejson
{
	"request"transaction_ref": "{{request-transaction_ref}}",
	"request_type":
        "transaction_desc": "{{requesttransaction_typedesc}}",
	
        "transaction_ref_parent":{ 		"{{parent_transaction_ref":}}",
        "12978251696483details"
	: {...}
    }
}

A /transact/fulfil request should typically lead to a completion response (or in some cases: another validate response if appropriate)

...