Traditional Proposal Reserved Credit Rollback
curl --request POST \
--url https://api.example.com/dt/callback/rollback_reserved \
--header 'Content-Type: application/json' \
--data '
{
"platform_id": "H88",
"token": "E47A56947DF6DA25B6F95C3BFE5748E7",
"uuid": "lobby1-82818443591811",
"account": "walter123",
"type": 1,
"credit": 100,
"proposal_id": 954654,
"canceled_id": "005-200926080808-0000005",
"transaction_id": "005-200926080808-0000005RB"
}
'import requests
url = "https://api.example.com/dt/callback/rollback_reserved"
payload = {
"platform_id": "H88",
"token": "E47A56947DF6DA25B6F95C3BFE5748E7",
"uuid": "lobby1-82818443591811",
"account": "walter123",
"type": 1,
"credit": 100,
"proposal_id": 954654,
"canceled_id": "005-200926080808-0000005",
"transaction_id": "005-200926080808-0000005RB"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
platform_id: 'H88',
token: 'E47A56947DF6DA25B6F95C3BFE5748E7',
uuid: 'lobby1-82818443591811',
account: 'walter123',
type: 1,
credit: 100,
proposal_id: 954654,
canceled_id: '005-200926080808-0000005',
transaction_id: '005-200926080808-0000005RB'
})
};
fetch('https://api.example.com/dt/callback/rollback_reserved', 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/dt/callback/rollback_reserved",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform_id' => 'H88',
'token' => 'E47A56947DF6DA25B6F95C3BFE5748E7',
'uuid' => 'lobby1-82818443591811',
'account' => 'walter123',
'type' => 1,
'credit' => 100,
'proposal_id' => 954654,
'canceled_id' => '005-200926080808-0000005',
'transaction_id' => '005-200926080808-0000005RB'
]),
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.example.com/dt/callback/rollback_reserved"
payload := strings.NewReader("{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/dt/callback/rollback_reserved")
.header("Content-Type", "application/json")
.body("{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/dt/callback/rollback_reserved")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"message": "success",
"uuid": "lobby1-82818443591811",
"timestamp": 1668580007001,
"data": {
"account": "walter123",
"credit": 115,
"reserved": 100,
"balance": 215,
"platform_id": "H88",
"transaction_id": "005-200926080808-0000005RB"
}
}Wallet API
Traditional Mode Reserved Credit Rollback
This endpoint handles traditional proposal reserved credit change rollback (implemented by vendor)
Will keep retrying until successful. Implementer must handle properly to avoid duplicate credits
POST
/
dt
/
callback
/
rollback_reserved
Traditional Proposal Reserved Credit Rollback
curl --request POST \
--url https://api.example.com/dt/callback/rollback_reserved \
--header 'Content-Type: application/json' \
--data '
{
"platform_id": "H88",
"token": "E47A56947DF6DA25B6F95C3BFE5748E7",
"uuid": "lobby1-82818443591811",
"account": "walter123",
"type": 1,
"credit": 100,
"proposal_id": 954654,
"canceled_id": "005-200926080808-0000005",
"transaction_id": "005-200926080808-0000005RB"
}
'import requests
url = "https://api.example.com/dt/callback/rollback_reserved"
payload = {
"platform_id": "H88",
"token": "E47A56947DF6DA25B6F95C3BFE5748E7",
"uuid": "lobby1-82818443591811",
"account": "walter123",
"type": 1,
"credit": 100,
"proposal_id": 954654,
"canceled_id": "005-200926080808-0000005",
"transaction_id": "005-200926080808-0000005RB"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
platform_id: 'H88',
token: 'E47A56947DF6DA25B6F95C3BFE5748E7',
uuid: 'lobby1-82818443591811',
account: 'walter123',
type: 1,
credit: 100,
proposal_id: 954654,
canceled_id: '005-200926080808-0000005',
transaction_id: '005-200926080808-0000005RB'
})
};
fetch('https://api.example.com/dt/callback/rollback_reserved', 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/dt/callback/rollback_reserved",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform_id' => 'H88',
'token' => 'E47A56947DF6DA25B6F95C3BFE5748E7',
'uuid' => 'lobby1-82818443591811',
'account' => 'walter123',
'type' => 1,
'credit' => 100,
'proposal_id' => 954654,
'canceled_id' => '005-200926080808-0000005',
'transaction_id' => '005-200926080808-0000005RB'
]),
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.example.com/dt/callback/rollback_reserved"
payload := strings.NewReader("{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/dt/callback/rollback_reserved")
.header("Content-Type", "application/json")
.body("{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/dt/callback/rollback_reserved")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform_id\": \"H88\",\n \"token\": \"E47A56947DF6DA25B6F95C3BFE5748E7\",\n \"uuid\": \"lobby1-82818443591811\",\n \"account\": \"walter123\",\n \"type\": 1,\n \"credit\": 100,\n \"proposal_id\": 954654,\n \"canceled_id\": \"005-200926080808-0000005\",\n \"transaction_id\": \"005-200926080808-0000005RB\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"message": "success",
"uuid": "lobby1-82818443591811",
"timestamp": 1668580007001,
"data": {
"account": "walter123",
"credit": 115,
"reserved": 100,
"balance": 215,
"platform_id": "H88",
"transaction_id": "005-200926080808-0000005RB"
}
}Body
application/json
Platform product ID
Verification code, md5(platform_id + uuid + account + canceled_id + transaction_id + platform_secret)
Platform-defined unique request serial number
Player account
Type: 1. Buy-in 2. Add-on
Transaction serial number to cancel, must be unique and non-empty
Transaction serial number, must be unique and non-empty (1-128 characters, ASCII 32-126 printable characters only, ` and ~ are prohibited)
Amount, must be positive integer
Player proposal ID, cannot be empty
⌘I