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 Version History

« Previous Version 22 Next »

Below shows how the Payment link flow Integration works:

  • From your server, call our Create Payment link, Validate Payment link, Initiate the payment link endpoint with the payment details.

  • We'll return a link alias to a payment page. Redirect your customer to this link to make the payment.

  • When the transaction is completed, we'll redirect the customer back to you.

Step 1: Call Create Payment Link Endpoint

Title: Create Payment link

Description : This endpoint may be consumed to create payment link

URL: /api/payment/payment-link

HTTP Method : POST

Headers : authorization Set value to X-API: SECRET_KEY

string

Request Body

Here are the details you'll need:

{
  "name": "Invoice Test 5",
  "description": "Test ",
  "linkType": 1,
  "amountType": 1,
  "amountInfo": {
    "currencyCode": "GBP",
    "amount": 12
  }
}

"linkType": 0 - oneTime, 1 - reusable
"amountType": 0 - Static, 1 - Dynamic

  • Name: This is a unique name for the payment link.

  • description: This describes the payment link in details

  • linkType: This indicates the payment link type. 0 signifies oneTime, 1 - reusable.

  • amountType: This indicate the amount type for the payment link. 0 signifies- Static, 1 - Dynamic

  • currency Code: A three-letter ISO code for the currency in which you want to accept the payment. A unique code that represents a defined business currency. E.g. NGN=Nigerian Naira, USD =United State Dollars, etc. (Required) If you don't specify a value, we'll assume "NGN"

  • amount : This is the amount for the payment link transaction

Response Body Response code : 200

{
  "value": {
    "isValid": true,
    "channels": [
      {
        "id": "4f737265-27cb-40fd-84a6-f41d999a39d1",
        "name": "PayByTransfer",
        "alias": "PayByTransfer",
        "description": null
      },
      {
        "id": "2d60ca92-8f2f-486a-aa21-35cc9434898f",
        "name": "Card",
        "alias": "Card",
        "description": null
      }
    ]
  },
  "isSuccess": true,
  "error": "",
  "message": "Request Successful",
  "type": null,
  "title": null,
  "status": null,
  "detail": null,
  "instance": null
}

Step 2: Call Validate Payment Endpoint

Title: Validate Payment link

Description : This endpoint may be consumed to get the available channels for a transaction currency

URL: api /payment/pay/Validate

HTTP Method : POST

Headers : authorization Set value to X-API: SECRET_KEY

string

Request Body

Here are the details you'll need:

{
  "amount": {
    "currencyCode": "GBP",
    "amount": 2
  },
  "channels": [
    "Card",
    "PayByTransfer",
    "PayByAccount"
  ]
} 
  • amount: The transaction amount of the goods purchased by the customer.

  • currency Code: A three-letter ISO code for the currency in which you want to accept the payment. A unique code that represents a defined business currency. E.g. NGN=Nigerian Naira, USD =United State Dollars, etc. (Required) If you don't specify a value, we'll assume "NGN"

Response Body Response code : 200

{
  "value": {
    "isValid": true,
    "channels": [
      {
        "id": "4f737265-27cb-40fd-84a6-f41d999a39d1",
        "name": "PayByTransfer",
        "alias": "PayByTransfer",
        "description": null
      },
      {
        "id": "2d60ca92-8f2f-486a-aa21-35cc9434898f",
        "name": "Card",
        "alias": "Card",
        "description": null
      }
    ]
  },
  "isSuccess": true,
  "error": "",
  "message": "Request Successful",
  "type": null,
  "title": null,
  "status": null,
  "detail": null,
  "instance": null
}

Step 3: Call Initiate Payment Endpoint

Title: Initiate Payment link

Description: This endpoint may be consumed to initiate the payment link transaction

URL: api /payment/pay/Initiate

HTTP Method: POST

Headers: authorization Set value to X-API: SECRET_KEY

string

Here are the details you'll need:

Pass Reference value id generated from Validate Payment endpoint in the Reference field depending on the selected Channel (“Pay By transfer”, “Pay By Cards”) and Currency

Request Body

{
  "channel": "PayByTransfer",
  "amount": 500,
  "currency": "NGN",
  "narration": "SHOE",
  "reference": "4f737265-27cb-40fd-84a6-f41d999a39d1",
  "link": {
    "alias": "0-mjlyfib"
  },
  "userInformation": {
    "firstName": "Ayobami",
    "lastName": "Queen",
    "phone": "08132681675",
    "emailAddress": "ayobamsy@yahoo.com"
  },
  "paymentRequestProps": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "metaData": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  }
}
  • Channel: An array of payment channels to control what channels you want to make available to the user to make a payment with. Available channels include: ["pay by card", "PayByTransfer", "pay with account" ]

  • amount: The amount to charge the customer

  • currency Code: A three-letter ISO code for the currency in which you want to accept the payment. A unique code that represents a defined business currency. E.g. NGN=Nigerian Naira, USD =United State Dollars, etc. (Required) If you don't specify a value, we'll assume "NGN"

  • narration: This is usually a description of items being purchased by a customer

  • reference: This is an Id that uniquely identifies a channel type (this is derived from the Validate Payment endpoint response)

  • alias: An alias allows users to access a page (node) or file at an alternative path. A redirect is moving a user to the correct file or page (node) because it no longer exists at a previous path. Alias lets you choose a nickname for your page, meaning a new URL that points to the content the same way the original URL does

  • firstName: This is the first Name of the Customer

  • lastName: This is the Last Name of the Customer

  • phone: This is the phone number of the Customer

  • emailAddress: This is the email address of the customer

  • metadata (optional): An object containing any extra information you'd like to store alongside the transaction

Response Body Response code : 200

{
  "value": {
    "paymentStatus": "REQUIRE_USER_OFFLINE_ACTION",
    "message": "Payment Initiated",
    "bankAuthURL": null,
    "paymentItem": {
      "channel": "PayByTransfer",
      "message": "Payment Initiated",
      "amount": 500,
      "fees": 0,
      "reference": "4f737265-27cb-40fd-84a6-f41d999a39d1",
      "metaData": {
        "transfer-info": {
          "note": "NILL",
          "bank": "Providus",
          "account_number": "9979314914",
          "account_name": "MERCHANT(jkkffg)",
          "expiration": "2023-03-04T13:43:11.0447022Z",
          "mode": "banktransfer"
        }
      }
    }
  },
  "isSuccess": true,
  "error": "",
  "message": "",
  "type": null,
  "title": null,
  "status": null,
  "detail": null,
  "instance": null
}

Step 4: Call Authenticate Payment Endpoint

Title: Authenticate Payment link

Description : This endpoint may be consumed to Authenticate (Card) transaction to confirm if it requires a 3ds authentication or not

URL: api /payment/public/Pay/get-auth-3ds

HTTP Method : GET

Headers: authorization Set value to X-API: SECRET_KEY

string

Here are the details you'll need:

Pass the Reference value id for channel Pay By transfer from Validate Payment endpoint

{
  "referenceId": "4f737265-27cb-40fd-84a6-f41d999a39d1"
}
  • reference: This is an Id that uniquely identifies a channel type (this is derived from the Validate Payment endpoint response)

Response Body Response code : 200

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "isSuccess": true,
  "error": "string",
  "message": "string",
  "responseCode": "string",
  "value": {
    "status": "string",
    "IsAuthenticationEnabled": true,
    "Recommendation": "string",
    "message": "string",
    "authenticationhtml": "string"
  },
  "additionalProp1": "string",
  "additionalProp2": "string",
  "additionalProp3": "string"
}

Step 5: Call Finalize Payment Endpoint

Title: Finalize Payment

Description : This endpoint may be consumed to finalize the transaction

URL: api /payment/pay/Finalize

HTTP Method : POST

Headers: authorization Set value to X Api: SECRET_KEY

string

Here are the details you'll need:

Pass Payment reference from Validate Payment endpoint

{
  "paymentReference": "string"
}
  • paymentreference: This is an Id that uniquely identifies a payment made

Response Body Response code : 200

{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "isSuccess": true,
  "error": "string",
  "message": "string",
  "responseCode": "string",
  "value": {
    "status": "string",
    "message": "string"
  },
  "additionalProp1": "string",
  "additionalProp2": "string",
  "addi
}

Step 6: Call Transaction Reference Endpoint

Title: Get Transaction Status

Description: This endpoint may be consumed to retrieve the Transaction reference for a transaction

URL: api /payment/pay/transactions{reference}

HTTP Method : GET

Headers: authorization Set value to X-API: SECRET_KEY

string

Here are the details you'll need:

Pass reference Id from Initiate Payment endpoint

{
  "referenceId": "4f737265-27cb-40fd-84a6-f41d999a39d1"
}
  • referenceId: This is an Id that uniquely identifies a channel type (this is derived from the Validate Payment endpoint response)

Response Body Response code : 200

{
  "value": {
	"paymentReference": "TSIXIKHJYBA3DPG",
	"amount": {
  	"currencyCode": "NGN",
  	"amount": 500
	},
	"paymentStatus":“SUCCESSFUL” | “FAILED” | “PENDING”
  },
  "isSuccess": true,
  "error": "",
  "message": "",
  "type": null,
  "title": null,
  "status": null,
  "detail": null,
  "instance": null
}

After the payment is initiated and completed successfully: We'll send you a webhook if you have that configured on the dev portal. We'll send an email receipt to your customer if the payment was successful (Coming soon)

  • 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.