Payments
Continue a Flutterwave v4 order charge
Alias of the campaign charge continuation logic for Redis order checkout. It validates the same route state and authorization payload, then returns the common Flutterwave v4 charge response.
PUT
/
frontend
/
flutterwave-v4
/
order-charge
/
{client_id}
/
{program_id}
/
{charge_id}
/
{session_id}
Continue a Flutterwave v4 order charge
curl --request PUT \
--url https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id} \
--header 'Content-Type: application/json' \
--data '
{
"authorization": {
"type": "otp",
"pin": {
"value": "1234"
},
"otp": {
"value": "123456"
}
}
}
'import requests
url = "https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}"
payload = { "authorization": {
"type": "otp",
"pin": { "value": "1234" },
"otp": { "value": "123456" }
} }
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({authorization: {type: 'otp', pin: {value: '1234'}, otp: {value: '123456'}}})
};
fetch('https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}', 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.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'authorization' => [
'type' => 'otp',
'pin' => [
'value' => '1234'
],
'otp' => [
'value' => '123456'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}"
payload := strings.NewReader("{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}")
.header("Content-Type", "application/json")
.body("{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}Path Parameters
Client id stored in the Redis charge state.
Program id stored in the Redis charge state.
Flutterwave charge id returned by order-charge initialization.
Optional Redis frontend session id. When supplied, it must match the session stored for the charge.
Body
application/json
Authorization must match the charge's current next action.
Show child attributes
Show child attributes
Response
Flutterwave order charge continued.
The response is of type object.
⌘I
Continue a Flutterwave v4 order charge
curl --request PUT \
--url https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id} \
--header 'Content-Type: application/json' \
--data '
{
"authorization": {
"type": "otp",
"pin": {
"value": "1234"
},
"otp": {
"value": "123456"
}
}
}
'import requests
url = "https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}"
payload = { "authorization": {
"type": "otp",
"pin": { "value": "1234" },
"otp": { "value": "123456" }
} }
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({authorization: {type: 'otp', pin: {value: '1234'}, otp: {value: '123456'}}})
};
fetch('https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}', 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.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'authorization' => [
'type' => 'otp',
'pin' => [
'value' => '1234'
],
'otp' => [
'value' => '123456'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}"
payload := strings.NewReader("{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}")
.header("Content-Type", "application/json")
.body("{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/frontend/flutterwave-v4/order-charge/{client_id}/{program_id}/{charge_id}/{session_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"authorization\": {\n \"type\": \"otp\",\n \"pin\": {\n \"value\": \"1234\"\n },\n \"otp\": {\n \"value\": \"123456\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}