curl --request POST \
--url https://uat-interface.haipay.asia/twd/collect/apply \
--header 'Content-Type: application/json' \
--data '
{
"appId": 123,
"orderId": "<string>",
"name": "<string>",
"phone": "<string>",
"email": "jsmith@example.com",
"amount": "<string>",
"payType": "<string>",
"inBankCode": "<string>",
"callBackUrl": "<string>",
"callBackFailUrl": "<string>",
"subject": "<string>",
"partnerUserId": "<string>",
"sign": "<string>",
"notifyUrl": "<string>",
"body": "<string>",
"country": "<string>"
}
'import requests
url = "https://uat-interface.haipay.asia/twd/collect/apply"
payload = {
"appId": 123,
"orderId": "<string>",
"name": "<string>",
"phone": "<string>",
"email": "jsmith@example.com",
"amount": "<string>",
"payType": "<string>",
"inBankCode": "<string>",
"callBackUrl": "<string>",
"callBackFailUrl": "<string>",
"subject": "<string>",
"partnerUserId": "<string>",
"sign": "<string>",
"notifyUrl": "<string>",
"body": "<string>",
"country": "<string>"
}
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({
appId: 123,
orderId: '<string>',
name: '<string>',
phone: '<string>',
email: 'jsmith@example.com',
amount: '<string>',
payType: '<string>',
inBankCode: '<string>',
callBackUrl: '<string>',
callBackFailUrl: '<string>',
subject: '<string>',
partnerUserId: '<string>',
sign: '<string>',
notifyUrl: '<string>',
body: JSON.stringify('<string>'),
country: '<string>'
})
};
fetch('https://uat-interface.haipay.asia/twd/collect/apply', 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://uat-interface.haipay.asia/twd/collect/apply",
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([
'appId' => 123,
'orderId' => '<string>',
'name' => '<string>',
'phone' => '<string>',
'email' => 'jsmith@example.com',
'amount' => '<string>',
'payType' => '<string>',
'inBankCode' => '<string>',
'callBackUrl' => '<string>',
'callBackFailUrl' => '<string>',
'subject' => '<string>',
'partnerUserId' => '<string>',
'sign' => '<string>',
'notifyUrl' => '<string>',
'body' => '<string>',
'country' => '<string>'
]),
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://uat-interface.haipay.asia/twd/collect/apply"
payload := strings.NewReader("{\n \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\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://uat-interface.haipay.asia/twd/collect/apply")
.header("Content-Type", "application/json")
.body("{\n \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://uat-interface.haipay.asia/twd/collect/apply")
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 \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"error": "<string>",
"msg": "<string>",
"data": {
"orderId": "<string>",
"orderNo": "<string>",
"payUrl": "<string>",
"sign": "<string>"
}
}Collection Application
Use the appId corresponding to TWD. After successful user payment, the TWD balance will be increased.
curl --request POST \
--url https://uat-interface.haipay.asia/twd/collect/apply \
--header 'Content-Type: application/json' \
--data '
{
"appId": 123,
"orderId": "<string>",
"name": "<string>",
"phone": "<string>",
"email": "jsmith@example.com",
"amount": "<string>",
"payType": "<string>",
"inBankCode": "<string>",
"callBackUrl": "<string>",
"callBackFailUrl": "<string>",
"subject": "<string>",
"partnerUserId": "<string>",
"sign": "<string>",
"notifyUrl": "<string>",
"body": "<string>",
"country": "<string>"
}
'import requests
url = "https://uat-interface.haipay.asia/twd/collect/apply"
payload = {
"appId": 123,
"orderId": "<string>",
"name": "<string>",
"phone": "<string>",
"email": "jsmith@example.com",
"amount": "<string>",
"payType": "<string>",
"inBankCode": "<string>",
"callBackUrl": "<string>",
"callBackFailUrl": "<string>",
"subject": "<string>",
"partnerUserId": "<string>",
"sign": "<string>",
"notifyUrl": "<string>",
"body": "<string>",
"country": "<string>"
}
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({
appId: 123,
orderId: '<string>',
name: '<string>',
phone: '<string>',
email: 'jsmith@example.com',
amount: '<string>',
payType: '<string>',
inBankCode: '<string>',
callBackUrl: '<string>',
callBackFailUrl: '<string>',
subject: '<string>',
partnerUserId: '<string>',
sign: '<string>',
notifyUrl: '<string>',
body: JSON.stringify('<string>'),
country: '<string>'
})
};
fetch('https://uat-interface.haipay.asia/twd/collect/apply', 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://uat-interface.haipay.asia/twd/collect/apply",
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([
'appId' => 123,
'orderId' => '<string>',
'name' => '<string>',
'phone' => '<string>',
'email' => 'jsmith@example.com',
'amount' => '<string>',
'payType' => '<string>',
'inBankCode' => '<string>',
'callBackUrl' => '<string>',
'callBackFailUrl' => '<string>',
'subject' => '<string>',
'partnerUserId' => '<string>',
'sign' => '<string>',
'notifyUrl' => '<string>',
'body' => '<string>',
'country' => '<string>'
]),
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://uat-interface.haipay.asia/twd/collect/apply"
payload := strings.NewReader("{\n \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\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://uat-interface.haipay.asia/twd/collect/apply")
.header("Content-Type", "application/json")
.body("{\n \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://uat-interface.haipay.asia/twd/collect/apply")
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 \"appId\": 123,\n \"orderId\": \"<string>\",\n \"name\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"amount\": \"<string>\",\n \"payType\": \"<string>\",\n \"inBankCode\": \"<string>\",\n \"callBackUrl\": \"<string>\",\n \"callBackFailUrl\": \"<string>\",\n \"subject\": \"<string>\",\n \"partnerUserId\": \"<string>\",\n \"sign\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"body\": \"<string>\",\n \"country\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"error": "<string>",
"msg": "<string>",
"data": {
"orderId": "<string>",
"orderNo": "<string>",
"payUrl": "<string>",
"sign": "<string>"
}
}Secret Key & Private Key (Generate Signature)
Related Topics
Body
Business ID (obtained from the backend, needs to pass the corresponding business ID according to the currency in the URL)
Merchant order number
48User’s full name. Recommended to use real name. Format: firstName and lastName separated by a space. Example: John Doe
Real phone number
Real email
Transaction amount. For TWD orders, decimals are not allowed
Transaction type
Redirect URL after successful payment
Redirect URL after failed payment
Payment note
Unique user identifier (e.g., userId). Used for risk control. Must be valid, otherwise it will affect the transaction. Allowed format: numbers, uppercase/lowercase letters, or common symbols -~!@#$%&*()_.
^[A-Za-z0-9\-~!@#$%&*()_]+$Signature
Callback URL
Additional details
Required for cashier mode, fixed value: 158
Currency (default TWD; supported currencies: USD, TWD)
USD, TWD Was this page helpful?

