asiapay — New Connector Integration
Workflow: new-connector
Flows: Authorize, PSync, Capture, Void, Refund, IncomingWebhook
Auth scheme: Signature
Currency unit: StringMajor
Base URL: https://www.paydollar.com/b2c2/eng
Sandbox URL: https://test.paydollar.com/b2cDemo/eng
Generated by: Grace pipeline run run-2026-05-27T08-12-02-861Z-3c225d
Discovered Docs
Acceptance Criteria
Tech Spec
AsiaPay UCS Connector Integration Technical Specification
Connector Profile
Supported Countries: Hong Kong, China, Macau, Taiwan, Singapore, Malaysia, India, Vietnam, Australia, New Zealand, Philippines, Thailand, Indonesia
Supported Currencies (ISO 4217 numeric codes used in API):
| Currency |
ISO Alpha |
ISO Numeric (currCode) |
Brand |
| Hong Kong Dollar |
HKD |
344 |
PayDollar |
| US Dollar |
USD |
840 |
PayDollar |
| Singapore Dollar |
SGD |
702 |
PayDollar |
| Chinese Yuan |
CNY |
156 |
PayDollar |
| Japanese Yen |
JPY |
392 |
PayDollar |
| Taiwan Dollar |
TWD |
901 |
PayDollar |
| Australian Dollar |
AUD |
036 |
PayDollar |
| Euro |
EUR |
978 |
PayDollar |
| British Pound |
GBP |
826 |
PayDollar |
| Canadian Dollar |
CAD |
124 |
PayDollar |
| Thai Baht |
THB |
764 |
SiamPay |
| Philippine Peso |
PHP |
608 |
PesoPay |
Note on regional brands: PesoPay, SiamPay, and BimoPay share the same API structure as PayDollar but use different base URLs (e.g., https://www.pesopay.com/b2c2/eng, https://www.siampay.com/b2c2/eng, https://www.bimopay.com/b2c2/eng).
Authentication
AsiaPay uses a Secure Hash (SHA1 or SHA256 signature) scheme. The hash is computed by the merchant server, covering key transaction fields, and included as a form POST body parameter named secureHash. No HTTP Authorization header is used.
Scheme
- Primary auth (payment requests): Signature — SHA1 (default) or SHA256 (request from AsiaPay)
- Merchant API auth (capture/void/refund/query): Form body credentials —
loginId + password
- Auth Location: Body (form-encoded POST parameter)
Credential Fields
| Field |
Type |
Purpose |
merchantId |
Number |
Unique merchant identifier assigned by AsiaPay |
secureHashSecret |
String |
Secret key for hash computation; must be enabled by contacting AsiaPay |
loginId |
String (max 30 chars) |
Separate API login ID for Merchant API operations |
password |
String (max 15 chars) |
API password for Merchant API operations |
Secure Hash Calculation (Request)
Concatenate the following fields with | as delimiter, then apply SHA1 (or SHA256 if configured):
secureHash = SHA1(merchantId + "|" + orderRef + "|" + currCode + "|" + amount + "|" + payType + "|" + secureHashSecret)
Example:
SHA1("88888|ORDER-001|344|100.00|H|MY_SECRET") => "a1b2c3d4e5f6..."
Secure Hash Verification (Datafeed Response)
The datafeed POST from AsiaPay includes a secureHash field. Verify it as:
expectedHash = SHA1(merchantId + "|" + Ref + "|" + PayRef + "|" + Cur + "|" + Amt + "|" + successcode + "|" + secureHashSecret)
Compare with the received secureHash. Discard the datafeed if they do not match.
Supported Flows
| Flow |
HTTP Method |
Endpoint Path |
Idempotency Key |
Notes |
| Authorize |
POST |
/directPay/payComp.jsp |
orderRef |
Server-to-server card submission; payType=H for auth-only |
| Capture |
POST |
/merchant/api/orderApi.jsp |
payRef |
actionType=Capture; uses separate Merchant API credentials |
| Void |
POST |
/merchant/api/orderApi.jsp |
payRef |
actionType=Void; cancels authorized or accepted payment |
| Refund |
POST |
/merchant/api/orderApi.jsp |
payRef |
actionType=Refund; must be within 14 days of original transaction |
| PSync |
POST |
/merchant/api/orderApi.jsp |
payRef |
actionType=Query; returns current orderStatus |
| IncomingWebhook |
POST |
{merchantConfiguredUrl} |
PayRef |
Datafeed POSTed asynchronously to merchant Return Value Link |
Normal Sale vs. Authorize-only: Set payType=N for an immediate auth+capture (no separate Capture call needed). Set payType=H (Hold) for authorize-only; then call Capture via Merchant API.
Request Schema
Authorize Request
Endpoint: POST https://www.paydollar.com/b2c2/eng/directPay/payComp.jsp
Content-Type: application/x-www-form-urlencoded
{
"merchantId": "88888",
"orderRef": "ORDER-2024-001",
"amount": "100.00",
"currCode": "344",
"payType": "H",
"payMethod": "CC",
"cardNo": "4111111111111111",
"cardHolder": "Test User",
"epMonth": "12",
"epYear": "2026",
"securityCode": "123",
"lang": "E",
"successUrl": "https://merchant.example.com/success",
"failUrl": "https://merchant.example.com/fail",
"cancelUrl": "https://merchant.example.com/cancel",
"secureHash": "a1b2c3d4e5f6789abc"
}
| Field |
Type |
Required |
Description |
merchantId |
Number |
Yes |
Merchant identifier assigned by AsiaPay |
orderRef |
String (max 35) |
Yes |
Merchant's unique order reference |
amount |
Decimal String |
Yes |
Amount in major units (e.g., "100.00" for 100 HKD) |
currCode |
String (3 digits) |
Yes |
ISO 4217 numeric currency code (e.g., "344" = HKD, "840" = USD) |
payType |
String |
Yes |
"N" = Normal/Sale (auth+capture); "H" = Hold (authorize only) |
payMethod |
String |
No |
"ALL", "CC", "ALIPAY", "WECHATPAY", "UNIONPAY", "PAYPAL", "CHINAPAY", "TENPAY", "99BILL", "PPS" |
cardNo |
String (16) |
Cond |
Card PAN (required for server-side direct payment) |
cardHolder |
String (max 20) |
Cond |
Cardholder name |
epMonth |
String (MM) |
Cond |
Card expiry month |
epYear |
String (YYYY) |
Cond |
Card expiry year |
securityCode |
String (3–4) |
No |
CVV2/CVC2 |
lang |
String |
No |
E=English, C=Traditional Chinese, X=Simplified Chinese, K=Korean, J=Japanese, T=Thai, F=French, G=German, R=Russian, S=Spanish |
successUrl |
String |
No |
Redirect URL on payment success |
failUrl |
String |
No |
Redirect URL on payment failure |
cancelUrl |
String |
No |
Redirect URL on cancellation |
secureHash |
String |
Yes |
SHA1 or SHA256 signature |
redirect |
Number |
No |
Auto-redirect delay (seconds) |
mpsMode |
String |
No |
Multi-currency mode: "NIL", "SCP", "DCC", "MCP" |
remark |
String |
No |
Merchant remark (passed through to datafeed) |
Capture Request
Endpoint: POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jsp
Content-Type: application/x-www-form-urlencoded
{
"merchantId": "88888",
"loginId": "api_login",
"password": "api_pass",
"actionType": "Capture",
"payRef": "4780",
"amount": "100.00"
}
| Field |
Type |
Required |
Description |
merchantId |
Number |
Yes |
Merchant identifier |
loginId |
String (max 30) |
Yes |
Merchant API login ID |
password |
String (max 15) |
Yes |
Merchant API password |
actionType |
String |
Yes |
Must be "Capture" |
payRef |
String (max 35) |
Yes |
PayDollar payment reference from original authorization |
amount |
Decimal String |
Yes |
Capture amount; must be ≤ original authorized amount |
Void Request
Endpoint: POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jsp
Content-Type: application/x-www-form-urlencoded
{
"merchantId": "88888",
"loginId": "api_login",
"password": "api_pass",
"actionType": "Void",
"payRef": "4780"
}
| Field |
Type |
Required |
Description |
merchantId |
Number |
Yes |
Merchant identifier |
loginId |
String (max 30) |
Yes |
Merchant API login ID |
password |
String (max 15) |
Yes |
Merchant API password |
actionType |
String |
Yes |
Must be "Void" |
payRef |
String (max 35) |
Yes |
PayDollar payment reference to void |
Refund Request
Endpoint: POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jsp
Content-Type: application/x-www-form-urlencoded
{
"merchantId": "88888",
"loginId": "api_login",
"password": "api_pass",
"actionType": "Refund",
"payRef": "4780",
"amount": "50.00"
}
| Field |
Type |
Required |
Description |
merchantId |
Number |
Yes |
Merchant identifier |
loginId |
String (max 30) |
Yes |
Merchant API login ID |
password |
String (max 15) |
Yes |
Merchant API password |
actionType |
String |
Yes |
Must be "Refund" |
payRef |
String (max 35) |
Yes |
PayDollar payment reference |
amount |
Decimal String |
No |
Refund amount; omit for full refund; provide for partial refund (must be ≤ original) |
PSync Request
Endpoint: POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jsp
Content-Type: application/x-www-form-urlencoded
{
"merchantId": "88888",
"loginId": "api_login",
"password": "api_pass",
"actionType": "Query",
"payRef": "4780"
}
| Field |
Type |
Required |
Description |
merchantId |
Number |
Yes |
Merchant identifier |
loginId |
String (max 30) |
Yes |
Merchant API login ID |
password |
String (max 15) |
Yes |
Merchant API password |
actionType |
String |
Yes |
Must be "Query" |
payRef |
String (max 35) |
Yes |
PayDollar payment reference to query |
IncomingWebhook
AsiaPay POSTs the datafeed as application/x-www-form-urlencoded to the merchant-configured URL.
| Field |
Type |
Description |
successcode |
String |
"0" = success, "1" = failure, "-1" = system error |
Ref |
String |
Merchant's original order reference |
PayRef |
String |
AsiaPay internal payment reference |
Amt |
Decimal String |
Transaction amount in major units |
Cur |
String |
ISO numeric currency code |
prc |
String |
Primary response code (bank response) |
src |
String |
Secondary response code |
AuthId |
String |
Bank authorization code |
errMsg |
String |
Human-readable result message |
Holder |
String |
Cardholder name |
TxTime |
DateTime |
Transaction timestamp (YYYY-MM-DD HH:mm:ss.S) |
ip |
String |
Cardholder IP address |
eci |
String |
ECI code (3D Secure result) |
payerAuth |
String |
Payer authentication result |
mpsMode |
String |
Multi-currency processing mode used |
remark |
String |
Merchant remark (passed through) |
secureHash |
String |
SHA1/SHA256 response signature for verification |
payType |
String |
"N" or "H" |
Ord |
String |
Order ID |
Response Schema
Authorize Response
For server-to-server direct post (/directPay/payComp.jsp), the result is returned synchronously in the HTTP response body as URL-encoded parameters.
Success Response:
{
"successcode": "0",
"Ref": "ORDER-2024-001",
"PayRef": "4780",
"Amt": "100.00",
"Cur": "344",
"prc": "0",
"src": "0",
"AuthId": "123456",
"errMsg": "Transaction completed",
"Holder": "Test User",
"TxTime": "2024-01-15 10:30:00.0",
"Ord": "6697090",
"eci": "05",
"secureHash": "b2c3d4e5f6..."
}
Error Response:
{
"successcode": "1",
"Ref": "ORDER-2024-001",
"PayRef": "4780",
"Amt": "100.00",
"Cur": "344",
"prc": "5",
"src": "1",
"errMsg": "Transaction declined by bank"
}
| Field |
Type |
Description |
successcode |
String |
"0" = success, "1" = failure, "-1" = system error |
Ref |
String |
Merchant's order reference |
PayRef |
String |
AsiaPay payment reference (store for subsequent Capture/Void/Refund) |
Amt |
Decimal String |
Transaction amount |
Cur |
String |
ISO numeric currency code |
prc |
String |
Primary response code from bank |
src |
String |
Secondary response code |
AuthId |
String |
Bank authorization approval code |
errMsg |
String |
Result message |
eci |
String |
ECI code (3DS status) |
secureHash |
String |
Response signature for verification |
Capture / Void / Refund / PSync Response
All Merchant API operations return URL-encoded query string in the response body.
Capture Success:
resultCode=0&orderStatus=Accepted&ref=ORDER-2024-001&payRef=4780&amt=100.00&cur=344&errMsg=Capture+Successfully
Void Success:
resultCode=0&orderStatus=Voided&ref=ORDER-2024-001&payRef=4780&amt=100.00&cur=344&errMsg=Void+Successfully
Refund Success:
resultCode=0&orderStatus=Refunded&ref=ORDER-2024-001&payRef=4780&amt=100.00&cur=344&errMsg=Refund+Successfully
Failure:
resultCode=-1&orderStatus=Authorized&ref=ORDER-2024-001&payRef=4780&amt=100.00&cur=344&errMsg=Operation+failed
| Field |
Type |
Description |
resultCode |
String |
"0" = success, "-1" = failure |
orderStatus |
String |
Current/updated order status (see Status Mapping) |
ref |
String |
Merchant's order reference |
payRef |
String |
PayDollar payment reference |
amt |
Decimal String |
Transaction amount |
cur |
String |
ISO numeric currency code |
errMsg |
String |
Error or success message |
Error Handling
| HTTP Status |
Connector Field |
Value |
UCS Error Mapping |
Cause |
| 200 |
successcode |
"0" + prc=0 |
AttemptStatus::Charged |
Transaction successful |
| 200 |
successcode |
"1" + prc=5 |
AttemptStatus::Failure |
Card declined |
| 200 |
successcode |
"1" + prc=9 |
AttemptStatus::Failure |
Transaction rejected |
| 200 |
successcode |
"1" + any prc |
AttemptStatus::Failure |
Generic bank decline |
| 200 |
successcode |
"-1" |
AttemptStatus::SystemError |
AsiaPay/bank system error |
| 200 |
resultCode |
"-1" |
AttemptStatus::Failure |
Merchant API operation failed |
| 200 |
orderStatus |
"Rejected" |
AttemptStatus::Failure |
Bank rejected transaction |
| 200 |
orderStatus |
"Cancelled" |
AttemptStatus::Voided |
Cancelled by cardholder |
PRC (Primary Response Code) meanings:
0 = Approved / Success
1 = Referral (contact bank)
5 = Declined
9 = Hold / Pickup card
- Other values = Bank-specific decline or error codes
Retry Semantics:
successcode=-1 (system error): safe to retry with the same orderRef
successcode=1 (declined): do NOT retry without cardholder action (new card details or 3DS)
- Merchant API
resultCode=-1: investigate via Query before retrying to avoid double operations
- Refund has a 14-day window from the original transaction; after expiry the call will fail with
resultCode=-1
Status Mapping
| Connector Status (verbatim) |
UCS AttemptStatus |
Notes |
Pending |
AuthenticationPending |
Authorization in progress at issuing bank |
Pending_3D |
AuthenticationPending |
3D Secure verification in progress |
Authorized |
Authorized |
Auth-only hold placed; awaiting merchant Capture |
Capturing |
CaptureInitiated |
Capture in progress |
Accepted |
Charged |
Authorized + captured / settled |
Accepted_Adj |
Charged |
Accepted with partial chargeback or partial refund applied |
Rejected |
Failure |
Transaction rejected by bank or AsiaPay |
Cancelled |
Voided |
Cancelled by cardholder before completion |
Voided |
Voided |
Voided by merchant via Merchant API |
Reverse Auth |
Voided |
Authorization reversed by merchant |
Reversal Void |
Charged |
Prior void was reversed; payment restored |
Request Refund |
AutoRefunding |
Full refund request submitted, processing |
RequestPartialRefund |
AutoRefunding |
Partial refund submitted, processing |
Refunded |
AutoRefunded |
Full refund completed |
Partial Refunded |
PartialCharged |
Partial refund completed |
ChargeBack |
AutoRefunded |
Full chargeback from cardholder/bank |
Partial ChargeBack |
PartialCharged |
Partial chargeback |
Reversal-CB |
Charged |
Successful chargeback reversal by merchant |
Webhooks
Subscription Mechanism
Merchants manually configure the datafeed URL in the AsiaPay Merchant Administration Portal:
- Log in to https://admin.paydollar.com/b2c2/eng/merchant/index.jsp
- Navigate to Profile → Payment Account Settings → Return Value Link (Datafeed)
- Enable the option by selecting the Enable radio button
- Enter the merchant-side webhook URL in the Return Value Link text field
- Click Update and confirm
Payload Structure
AsiaPay POSTs the datafeed as application/x-www-form-urlencoded:
successcode=0&Ref=ORDER-001&PayRef=4780&Amt=100.00&Cur=344&prc=0&src=0&AuthId=123456&errMsg=Transaction+completed&Holder=John+Doe&TxTime=2024-01-15+10%3A30%3A00.0&eci=05&secureHash=a1b2c3d4e5f6
Signature Verification
Header: none (signature embedded as secureHash field in POST body).
Algorithm:
expectedHash = SHA1(merchantId + "|" + Ref + "|" + PayRef + "|" + Cur + "|" + Amt + "|" + successcode + "|" + secureHashSecret)
If expectedHash != received secureHash, reject the datafeed.
Event Types
| Event |
successcode |
Trigger |
| Payment Success |
"0" |
Transaction authorized and/or captured |
| Payment Failure |
"1" |
Transaction declined or failed |
| System Error |
"-1" |
Processing error at AsiaPay or bank |
Retry / Delivery Policy
- AsiaPay retries datafeed delivery if the merchant endpoint does not return HTTP 2xx
- Implement idempotent webhook handling keyed on
PayRef
- If datafeed delivery fails persistently, use the PSync (Query) API to reconcile transaction status
3D Secure ECI Codes
| Network |
ECI |
Meaning |
| Visa |
05 |
Full 3DS authentication successful |
| Visa |
06 |
3DS attempted; one party not enrolled |
| Visa |
07 |
3DS not attempted or not supported |
| MasterCard |
02 |
Full 3DS authentication successful |
| MasterCard |
01 |
3DS attempted; one party not enrolled |
| MasterCard |
00 |
3DS not attempted or not supported |
| JCB |
05 |
Full 3DS authentication successful |
| JCB |
06 |
3DS attempted; one party not enrolled |
| JCB |
07 |
3DS not attempted or not supported |
References
Official AsiaPay
Public Mirrors / Integration Guides
Reference Implementations
Third-Party Platform Docs
asiapay — New Connector Integration
Workflow: new-connector
Flows: Authorize, PSync, Capture, Void, Refund, IncomingWebhook
Auth scheme: Signature
Currency unit: StringMajor
Base URL: https://www.paydollar.com/b2c2/eng
Sandbox URL: https://test.paydollar.com/b2cDemo/eng
Generated by: Grace pipeline run
run-2026-05-27T08-12-02-861Z-3c225dDiscovered Docs
Acceptance Criteria
Tech Spec
AsiaPay UCS Connector Integration Technical Specification
Connector Profile
Supported Countries: Hong Kong, China, Macau, Taiwan, Singapore, Malaysia, India, Vietnam, Australia, New Zealand, Philippines, Thailand, Indonesia
Supported Currencies (ISO 4217 numeric codes used in API):
currCode)Authentication
AsiaPay uses a Secure Hash (SHA1 or SHA256 signature) scheme. The hash is computed by the merchant server, covering key transaction fields, and included as a form POST body parameter named
secureHash. No HTTP Authorization header is used.Scheme
loginId+passwordCredential Fields
merchantIdsecureHashSecretloginIdpasswordSecure Hash Calculation (Request)
Concatenate the following fields with
|as delimiter, then apply SHA1 (or SHA256 if configured):Example:
Secure Hash Verification (Datafeed Response)
The datafeed POST from AsiaPay includes a
secureHashfield. Verify it as:Compare with the received
secureHash. Discard the datafeed if they do not match.Supported Flows
orderRefpayType=Hfor auth-onlypayRefactionType=Capture; uses separate Merchant API credentialspayRefactionType=Void; cancels authorized or accepted paymentpayRefactionType=Refund; must be within 14 days of original transactionpayRefactionType=Query; returns currentorderStatusPayRefRequest Schema
Authorize Request
Endpoint:
POST https://www.paydollar.com/b2c2/eng/directPay/payComp.jspContent-Type:
application/x-www-form-urlencoded{ "merchantId": "88888", "orderRef": "ORDER-2024-001", "amount": "100.00", "currCode": "344", "payType": "H", "payMethod": "CC", "cardNo": "4111111111111111", "cardHolder": "Test User", "epMonth": "12", "epYear": "2026", "securityCode": "123", "lang": "E", "successUrl": "https://merchant.example.com/success", "failUrl": "https://merchant.example.com/fail", "cancelUrl": "https://merchant.example.com/cancel", "secureHash": "a1b2c3d4e5f6789abc" }merchantIdorderRefamount"100.00"for 100 HKD)currCode"344"= HKD,"840"= USD)payType"N"= Normal/Sale (auth+capture);"H"= Hold (authorize only)payMethod"ALL","CC","ALIPAY","WECHATPAY","UNIONPAY","PAYPAL","CHINAPAY","TENPAY","99BILL","PPS"cardNocardHolderepMonthepYearsecurityCodelangE=English,C=Traditional Chinese,X=Simplified Chinese,K=Korean,J=Japanese,T=Thai,F=French,G=German,R=Russian,S=SpanishsuccessUrlfailUrlcancelUrlsecureHashredirectmpsMode"NIL","SCP","DCC","MCP"remarkCapture Request
Endpoint:
POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jspContent-Type:
application/x-www-form-urlencoded{ "merchantId": "88888", "loginId": "api_login", "password": "api_pass", "actionType": "Capture", "payRef": "4780", "amount": "100.00" }merchantIdloginIdpasswordactionType"Capture"payRefamountVoid Request
Endpoint:
POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jspContent-Type:
application/x-www-form-urlencoded{ "merchantId": "88888", "loginId": "api_login", "password": "api_pass", "actionType": "Void", "payRef": "4780" }merchantIdloginIdpasswordactionType"Void"payRefRefund Request
Endpoint:
POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jspContent-Type:
application/x-www-form-urlencoded{ "merchantId": "88888", "loginId": "api_login", "password": "api_pass", "actionType": "Refund", "payRef": "4780", "amount": "50.00" }merchantIdloginIdpasswordactionType"Refund"payRefamountPSync Request
Endpoint:
POST https://www.paydollar.com/b2c2/eng/merchant/api/orderApi.jspContent-Type:
application/x-www-form-urlencoded{ "merchantId": "88888", "loginId": "api_login", "password": "api_pass", "actionType": "Query", "payRef": "4780" }merchantIdloginIdpasswordactionType"Query"payRefIncomingWebhook
AsiaPay POSTs the datafeed as
application/x-www-form-urlencodedto the merchant-configured URL.successcode"0"= success,"1"= failure,"-1"= system errorRefPayRefAmtCurprcsrcAuthIderrMsgHolderTxTimeYYYY-MM-DD HH:mm:ss.S)ipecipayerAuthmpsModeremarksecureHashpayType"N"or"H"OrdResponse Schema
Authorize Response
For server-to-server direct post (
/directPay/payComp.jsp), the result is returned synchronously in the HTTP response body as URL-encoded parameters.Success Response:
{ "successcode": "0", "Ref": "ORDER-2024-001", "PayRef": "4780", "Amt": "100.00", "Cur": "344", "prc": "0", "src": "0", "AuthId": "123456", "errMsg": "Transaction completed", "Holder": "Test User", "TxTime": "2024-01-15 10:30:00.0", "Ord": "6697090", "eci": "05", "secureHash": "b2c3d4e5f6..." }Error Response:
{ "successcode": "1", "Ref": "ORDER-2024-001", "PayRef": "4780", "Amt": "100.00", "Cur": "344", "prc": "5", "src": "1", "errMsg": "Transaction declined by bank" }successcode"0"= success,"1"= failure,"-1"= system errorRefPayRefAmtCurprcsrcAuthIderrMsgecisecureHashCapture / Void / Refund / PSync Response
All Merchant API operations return URL-encoded query string in the response body.
Capture Success:
Void Success:
Refund Success:
Failure:
resultCode"0"= success,"-1"= failureorderStatusrefpayRefamtcurerrMsgError Handling
successcode"0"+prc=0AttemptStatus::Chargedsuccesscode"1"+prc=5AttemptStatus::Failuresuccesscode"1"+prc=9AttemptStatus::Failuresuccesscode"1"+ anyprcAttemptStatus::Failuresuccesscode"-1"AttemptStatus::SystemErrorresultCode"-1"AttemptStatus::FailureorderStatus"Rejected"AttemptStatus::FailureorderStatus"Cancelled"AttemptStatus::VoidedPRC (Primary Response Code) meanings:
0= Approved / Success1= Referral (contact bank)5= Declined9= Hold / Pickup cardRetry Semantics:
successcode=-1(system error): safe to retry with the sameorderRefsuccesscode=1(declined): do NOT retry without cardholder action (new card details or 3DS)resultCode=-1: investigate via Query before retrying to avoid double operationsresultCode=-1Status Mapping
PendingAuthenticationPendingPending_3DAuthenticationPendingAuthorizedAuthorizedCapturingCaptureInitiatedAcceptedChargedAccepted_AdjChargedRejectedFailureCancelledVoidedVoidedVoidedReverse AuthVoidedReversal VoidChargedRequest RefundAutoRefundingRequestPartialRefundAutoRefundingRefundedAutoRefundedPartial RefundedPartialChargedChargeBackAutoRefundedPartial ChargeBackPartialChargedReversal-CBChargedWebhooks
Subscription Mechanism
Merchants manually configure the datafeed URL in the AsiaPay Merchant Administration Portal:
Payload Structure
AsiaPay POSTs the datafeed as
application/x-www-form-urlencoded:Signature Verification
Header: none (signature embedded as
secureHashfield in POST body).Algorithm:
If
expectedHash != received secureHash, reject the datafeed.Event Types
successcode"0""1""-1"Retry / Delivery Policy
PayRef3D Secure ECI Codes
050607020100050607References
Official AsiaPay
Public Mirrors / Integration Guides
Reference Implementations
Third-Party Platform Docs