Interswitch · Arazzo Workflow

Interswitch Card Payment With 3D Secure

Version 1.0.0

Authorize a card payment, step up to 3D Secure when required, then confirm the final payment status.

1 workflow 1 source API 1 provider
View Spec View on GitHub PaymentsPayment InfrastructureCard NetworkVerveQuicktellerWebpayBills PaymentTransfersLendingFintechAfricaNigeriaArazzoWorkflows

Provider

interswitch

Workflows

card-payment-with-3ds
Authorize a card payment, step up to 3D Secure if needed, and confirm.
Creates a card payment, conditionally creates a 3D Secure session when the issuer requires step-up, and reads back the final payment status.
3 steps inputs: accessToken, amount, cardToken, currency, returnUrl, transactionRef outputs: acsUrl, finalStatus, paymentId
1
authorizePayment
createCardPayment
Authorize and capture the card payment using a tokenized card. Branches to 3D Secure step-up when the status indicates authentication is required.
2
stepUp3ds
createThreeDSecureSession
Create a 3D Secure session for the authorized payment to obtain the ACS redirect details for issuer step-up authentication.
3
confirmPayment
getPayment
Read back the payment to capture its final authoritative status after authorization (and any step-up).

Source API Descriptions

Arazzo Workflow Specification

interswitch-card-payment-with-3ds-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Interswitch Card Payment With 3D Secure
  summary: Authorize a card payment, step up to 3D Secure when required, then confirm the final payment status.
  description: >-
    Direct server-to-server card payment with conditional 3D Secure step-up. The
    workflow authorizes the card payment, branches on the returned status: if the
    issuer requires authentication it creates a 3D Secure session to obtain the
    ACS redirect, otherwise it skips straight to confirmation. In both cases it
    re-reads the payment to capture the final, authoritative status. All requests
    are inlined and Bearer-authenticated with the Passport OAuth token.
  version: 1.0.0
sourceDescriptions:
- name: paymentGatewayApi
  url: ../openapi/interswitch-payment-gateway-api-openapi.yml
  type: openapi
workflows:
- workflowId: card-payment-with-3ds
  summary: Authorize a card payment, step up to 3D Secure if needed, and confirm.
  description: >-
    Creates a card payment, conditionally creates a 3D Secure session when the
    issuer requires step-up, and reads back the final payment status.
  inputs:
    type: object
    required:
    - accessToken
    - transactionRef
    - amount
    - currency
    - cardToken
    - returnUrl
    properties:
      accessToken:
        type: string
        description: Bearer access token from the Passport OAuth token endpoint.
      transactionRef:
        type: string
        description: Unique merchant transaction reference.
      amount:
        type: integer
        description: Amount in minor currency units.
      currency:
        type: string
        description: ISO currency code.
      cardToken:
        type: string
        description: Tokenized card reference to charge.
      returnUrl:
        type: string
        description: URL the issuer ACS returns to after 3D Secure step-up.
  steps:
  - stepId: authorizePayment
    description: >-
      Authorize and capture the card payment using a tokenized card. Branches to
      3D Secure step-up when the status indicates authentication is required.
    operationId: createCardPayment
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        transactionRef: $inputs.transactionRef
        amount: $inputs.amount
        currency: $inputs.currency
        paymentMethod:
          type: token
          token: $inputs.cardToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      paymentId: $response.body#/paymentId
      status: $response.body#/status
      responseCode: $response.body#/responseCode
    onSuccess:
    - name: needsStepUp
      type: goto
      stepId: stepUp3ds
      criteria:
      - context: $response.body
        condition: $.status == "PENDING_AUTHENTICATION"
        type: jsonpath
    - name: noStepUp
      type: goto
      stepId: confirmPayment
      criteria:
      - context: $response.body
        condition: $.status != "PENDING_AUTHENTICATION"
        type: jsonpath
  - stepId: stepUp3ds
    description: >-
      Create a 3D Secure session for the authorized payment to obtain the ACS
      redirect details for issuer step-up authentication.
    operationId: createThreeDSecureSession
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        paymentId: $steps.authorizePayment.outputs.paymentId
        returnUrl: $inputs.returnUrl
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      acsUrl: $response.body#/acsUrl
      pareq: $response.body#/pareq
      md: $response.body#/md
  - stepId: confirmPayment
    description: >-
      Read back the payment to capture its final authoritative status after
      authorization (and any step-up).
    operationId: getPayment
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    - name: paymentId
      in: path
      value: $steps.authorizePayment.outputs.paymentId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      finalStatus: $response.body#/status
      responseCode: $response.body#/responseCode
      authCode: $response.body#/authCode
  outputs:
    paymentId: $steps.authorizePayment.outputs.paymentId
    finalStatus: $steps.confirmPayment.outputs.finalStatus
    acsUrl: $steps.stepUp3ds.outputs.acsUrl