Handle 3DS challenge completion
curl --request POST \
--url https://api.example.com/three-ds/challenge \
--header 'Content-Type: multipart/form-data' \
--form 'cres=<string>'import requests
url = "https://api.example.com/three-ds/challenge"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {"Content-Type": "multipart/form-data"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('cres', '<string>');
const options = {method: 'POST'};
options.body = form;
fetch('https://api.example.com/three-ds/challenge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/three-ds/challenge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/three-ds/challenge"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/three-ds/challenge")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/three-ds/challenge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body<string>{
"message": "<string>"
}3D Secure
Handle 3DS challenge completion
Callback endpoint for 3D Secure challenge completion. This is called after the cardholder has completed the authentication challenge (e.g., entering an OTP or approving via banking app).
POST
/
three-ds
/
challenge
Handle 3DS challenge completion
curl --request POST \
--url https://api.example.com/three-ds/challenge \
--header 'Content-Type: multipart/form-data' \
--form 'cres=<string>'import requests
url = "https://api.example.com/three-ds/challenge"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {"Content-Type": "multipart/form-data"}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('cres', '<string>');
const options = {method: 'POST'};
options.body = form;
fetch('https://api.example.com/three-ds/challenge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/three-ds/challenge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/three-ds/challenge"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/three-ds/challenge")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/three-ds/challenge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cres\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body<string>{
"message": "<string>"
}Query Parameters
The custom order identifier associated with the payment
Body
multipart/form-data
3D Secure challenge response data
3D Secure challenge response token from the card issuer
Response
Loading screen displayed to the cardholder while payment is processed
The response is of type string.