For the complete documentation index, see llms.txt. This page is also available as Markdown.

Submit 3D Secure callback for saved card payment

Receives the 3D Secure authentication callback from the bank and finalises the saved card payment. The request may arrive as a POST body or as GET query string parameters appended by the bank redirect; both are merged before validation.

The exact fields required depend on the active payment gateway:

  • Garanti Switch: success, approved, returnCode (must be "00"), reasonCode (must be "00"), hashedData, requestId, message, and txnAmount (sent by the bank in cents; divided by 100 before validation against the order total). The full payload is verified against a gateway-generated hash.

  • PayU RO: success (must be true). An optional body JSON payload from the bank may also be submitted.

  • Tap: success (must be true), tap_id, oid, and price.

On failure, the backward navigation state is applied: the selected card, card information, installment, order number, and 3D Secure flag are all cleared so the customer can restart from the card selection step.

Next Page:

  • ThankYouPage

available_for_post_order: false

post
Header parameters
x-requested-withstring · enumRequired

Required header for AJAX requests. Must be set to XMLHttpRequest for all checkout requests.

Default: XMLHttpRequestPossible values:
CookiestringOptional

Session cookie header (e.g. sessionid=abc123 or osessionid=<session_id>)

Body

3D Secure callback payload posted by the bank after the customer completes authentication. The required fields depend on the active payment gateway.

Any GET query string parameters appended by the bank redirect are merged into this payload before validation.

  • Garanti Switch: success, approved, returnCode, reasonCode, hashedData, requestId, message, and txnAmount are required. txnAmount is sent by the bank in cents and divided by 100 before being validated against the order total. The full payload is verified against a gateway-generated hash.
  • PayU RO: success (must be true). An optional body JSON payload from the bank may also be submitted.
  • Tap: success (must be true), tap_id, oid, and price are required.
successboolean · enumOptional

Payment success flag returned by the gateway. Must be true; any other value is treated as a failed transaction.

Possible values:
approvedboolean · enumOptional

(Garanti Switch only) Authorisation approval flag. Must be true.

Possible values:
returnCodestring · enumOptional

(Garanti Switch only) Bank return code. Must be "00" for a successful transaction.

Possible values:
reasonCodestring · enumOptional

(Garanti Switch only) Bank reason code. Must be "00" for a successful transaction.

Possible values:
hashedDatastringOptional

(Garanti Switch only) Gateway-generated hash. Validated server-side before the payment is accepted.

requestIdstringOptional

(Garanti Switch only) Gateway request identifier.

messagestringOptional

(Garanti Switch only) Human-readable status message from the gateway.

txnAmountstring · decimalOptional

(Garanti Switch only) Transaction amount posted by the bank in cents (e.g. "15000" for 150.00). Divided by 100 before being validated against the order total. A mismatch returns a validation error.

Example: 15000
bodyobject · nullableOptional

(PayU RO only) Optional JSON payload posted by the bank alongside the 3D Secure callback.

tap_idstring · max: 256Optional

(Tap only) Tap charge identifier returned by the gateway.

oidstring · max: 256Optional

(Tap only) Order identifier echoed back by the Tap gateway.

pricestringOptional

(Tap only) Transaction amount returned by the Tap gateway.

Responses
200

3D Secure authentication complete

application/json
errorsone of · nullableOptional
or
string[]Optional
template_namestringOptional
post/orders/checkout/?page=SavedCardThreeDSecurePage
POST /orders/checkout/?page=SavedCardThreeDSecurePage HTTP/1.1
Host: sandbox.akinon.com
x-requested-with: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 156

"success=true&approved=true&returnCode='00'&reasonCode='00'&hashedData='abc123hash'&requestId='req-001'&message='Success'&txnAmount='15000'"
200

3D Secure authentication complete

{
  "context_list": [
    {
      "page_name": "ThankYouPage",
      "page_slug": "thankyoupage",
      "page_context": {}
    }
  ],
  "errors": [],
  "template_name": "orders/checkout.html"
}

Last updated

Was this helpful?