iPay88 Indonesia - Core API
Selamat datang di laman Core API iPay88 Indonesia.
Segera integrasikan
API ini dengan situs Anda untuk memulai transaksi dengan gerbang pembayaran
iPay88 Indonesia.
Catatan Penting
- iPay88 Indonesia belum menyediakan fitur iFrame untuk payment page di laman merchant.
- Metode CURL tidak dapat digunakan untuk seluruh API iPay88 Indonesia.
- Lakukan uji transaksi pada fase development atau sandbox terlebih dahulu sebelum memasuki fase production.
- Pastikan seluruh kode yang Anda tulis telah memenuhi standar pemrograman dan keamanan data.
Online Payment System Gateway Versi 2.1.0
Welcome to iPay88 Indonesia Online Payment Switching Gateway 2.0.X. We provide e-payment services and reports that are integrated with your business site. Merchants can provide various payment methods to customers to make payments directly using our API through iPay88 Indonesia.
Download OPSG Versi 2.1.0 PDF Documentations
Payment Request
1 | Sandbox | https://sandbox.ipay88.co.id/ePayment/WebService/PaymentAPI/Checkout |
2 | Production | https://payment.ipay88.co.id/ePayment/WebService/PaymentAPI/Checkout |
Request Parameter
Merchants send parameters via JSON as a request to iPay88 Indonesia. Here are some parameters as a request:
No. | Field Name | Type (Size) | Sample | M/O | Description | |||
---|---|---|---|---|---|---|---|---|
1. | ApiVersion | string(5) | 2.0 | M | Version API | |||
2. | MerchantCode | string(20) | ID00001 | M | Merchant code assigned by iPay88 | |||
3. | PaymentId | string(4) | 70 | M | Payment method identifier, see Payment Method list | |||
4. | Currency | string(5) | IDR | M | Supported currencies: IDR, USD, THB, MYR | |||
5. | RefNo | string(30) | 920201930925AM | M | Unique merchant transaction number / Order ID | |||
6. | Amount | decimal | 100000 | M | The amount must only contain the exact amount without 2 digits after. For example: 100.50 is expressed as 100,50 10 is expressed as 10 0.50 is expressed as 0.50 |
|||
Amount = Sum of Each transaction + Amount Of Shipping + Amount Of Discount | ||||||||
7. | ProdDesc | string(100) | Alat Elektronik | M | Product description | |||
8. | UserName | string(100) | John Doe | M | Customer name | |||
9. | UserEmail | string(100) | [email protected] | M | Customer email for receiving receipt | |||
10. | UserContact | string(100) | 08123123123 | M | Bank(Principle) + Phone No. Example: Prefix 2112, Phone No 08123123123, VA Number 21128123123123. See Virtual Account Static for VA payment methods that provide Static VA. | |||
11. | RequestType | string(20) | REDIRECT | O | Request type identifier, see Request Type List for the list. | |||
12. | Remark | string(100) | M | Merchant remarks | ||||
13. | Lang | string(20) | ISO-8859-1 | M |
Encoding type:
|
|||
14. | ResponseURL | string(200) | https://store.co.id/resp.asp | M | Response page URL at the merchant website to receive payment status from iPay88 OPSG. | |||
15. | BackendURL | string(200) | https://store.co.id/backend.asp | M | Backend response page URL. | |||
16. | Signature | string(100) | M | SHA256 signature | ||||
17. | FullTransactionAmount | decimal | 10000000 | O | Mandatory for BCA KlikPay | |||
18. | MiscFee | decimal | 10000000 | O | For BCA KlikPay | |||
19. | xfield1 | string(200) | O | To enable installment and discount payment | ||||
20. | ItemTransactions | List (n) | M | Only for installment details with multiple products | ||||
1. | Id | string(50) | 001 | M | Product ID | |||
2. | Name | string(100) | Smartphone | M | Name of item | |||
3. | Quantity | integer | 2 | M | Quantity of item | |||
4. | Amount | integer | 5000 | M | Total amount of item product | |||
5. | Type | string(100) | O | Type of product | ||||
6. | Url | string(100) | O | URL of the product in the merchant site/platform | ||||
7. | ImageUrl | string(256) | O | URL of the image of the product in the merchant site/platform | ||||
8. | Tenor | string(100) | O | For BCA KlikPay | ||||
9. | CodePlan | string(100) | O | For BCA KlikPay | ||||
10. | MerchantId | string(100) | O | For BCA KlikPay | ||||
11. | ParentType | string(100) | SELLER or ITEM | M | Possible values: SELLER, ITEM | |||
12. | ParentId | string(100) | SELLER88 | M | It corresponds to the SELLER ID if the ParentType is SELLER, or ITEM ID if ParentType is ITEM | |||
22. | BillingAddress | M | Billing Address detail | |||||
1. | FirstName | string(100) | M | Billing FirstName | ||||
2. | LastName | string(100) | M | Billing LastName | ||||
3. | Address | string(100) | JL. Letjen S. Parman No. 22-24 | M | Billing Address | |||
4. | City | string(100) | Jakarta Barat | M | Billing City | |||
5. | State | string(20) | Jakarta | M | Billing State | |||
6. | PostalCode | string(20) | 11480 | M | Billing Postal Code | |||
7. | Phone | string(20) | 087888888888 | M | Billing Phone | |||
8. | CountryCode | string(20) | ID | M | Billing Country Code | |||
23. | Sellers | M | Only For Seller Detail | |||||
1. | Id | string(100) | Your-seller-id | M | Seller’s ID | |||
2. | Name | string(100) | Your-seller-name | M | Seller’s Name | |||
3. | SelleridNumber | string(100) | Your-seller-id-number | M | Seller's identifier number (KTP / SIM / etc) | |||
4. | string(100) | [email protected] | M | Seller’s Email | ||||
5. | URL | string(100) | www.sunrise.com | M | Seller’s Website | |||
6. | Address | M | Seller’s Shop | |||||
6.1 | FirstName | string(100) | Seller First Name | M | Seller’s Shop FirstName | |||
6.2 | LastName | string(100) | Seller Last Name | M | Seller’s Shop LastName | |||
6.3 | Address | string(100) | JL. Letjen S. Parman No. 22-24 | M | Seller’s Shop Address | |||
6.4 | City | string(100) | DKI Jakarta | M | Seller’s Shop City | |||
6.5 | State | string(20) | Jakarta Barat | M | Seller’s Shop State | |||
6.6 | PostalCode | string(20) | 11480 | M | Seller’s Shop Postal Code | |||
6.7 | Phone | string(20) | 087888888888 | M | Seller’s Shop Phone | |||
6.8 | CountryCode | string(16) | ID | M | Seller’s Shop Country Code | |||
24. | SettingField | List (n) | ||||||
1. | Name | string(100) | TenorInstallment, or NoStaticVA | O | For other: example installment or static virtual account | |||
2. | Value | string(100) | O | For other: example installment |
Request Signature
This signature must be included in the request of every transaction and is encrypted using SHA256. This hash signature for a request is a hash of the following five fields:
- MerchantKey (Provided by iPay88 Indonesia and shared between iPay88 and the merchant only)
- MerchantCode
- RefNo
- Amount
- Currency
The fields must be set in the following order:
|| MerchantKey || MerchantCode || RefNo || Amount || Currency ||
Example:
MerchantKey = "apple"
MerchantCode = "ID00001"
RefNo = "A00000001"
Amount = "3000" (Note: 3000 represents amount as Rp 3.000)
Currency = "IDR"
The hash would be calculated based on the following string:
||apple||ID00001||A00000001||3000||IDR||
The resulting hash signature value, calculated using SHA256, is:
3ee767e49d29c46b6187db2fe511287ccd986e874a057fa2e1bb222442b68f63
To ensure the signature generated is correct, visit the link below for signature comparison:
Test Signature Comparison
Signature Sample Code
$sha256hex = hash('sha256', "||" . MerchantKey . "||" . MerchantCode . "||" . RefNo . "||" . Amount . "||" . Currency . "||");
String sha256hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex("||" + MerchantKey + "||" + MerchantCode + "||" + RefNo + "||" + Amount + "||" + Currency + "||");
Request Sample
{
"APIVersion": "2.0",
"MerchantCode": "ID00001",
"PaymentId": "71",
"Currency": "IDR",
"RefNo": "10182019103003AM",
"Amount": "500000",
"ProdDesc": "Alat Elektronik",
"UserName": "Technical Support",
"UserEmail": "[email protected]",
"UserContact": "081234567890",
"Remark": "",
"Lang": "iso-8859-1",
"RequestType": "REDIRECT",
"ResponseURL": "https://sandbox.ipay88.co.id/epayment/fujipaystatusv2.asp",
"BackendURL": "http://sandbox.ipay88.co.id/ePayment/testing/RequestForm_savetemp.asp",
"Signature": "b469c7da241554364e55b65ca807ffc501bdf981126c248c636ac9e38592fc12",
"ItemTransactions": [
{
"Id": "00001",
"Name": "Smartphone Wireless Charger",
"Quantity": "1",
"Amount": "300000",
"Type": null,
"Url": null,
"ImageUrl": null,
"ParentType": "SELLER",
"ParentId": "SELLER123"
},
{
"Id": "00002",
"Name": "Powerbank 10000maH",
"Quantity": "1",
"Amount": "200000",
"Type": null,
"Url": null,
"ImageUrl": null,
"ParentType": "SELLER",
"ParentId": "SELLER123"
},
{
"Id": "shippingfee",
"Name": "Shipping Fee",
"Quantity": "1",
"Amount": "5000",
"Type": null,
"Url": null,
"ImageUrl": null,
"ParentType": null,
"ParentId": null
},
{
"Id": "discount",
"Name": "Discount",
"Quantity": "1",
"Amount": "5000",
"Type": null,
"Url": null,
"ImageUrl": null,
"ParentType": null,
"ParentId": null
}
],
"ShippingAddress": {
"FirstName": "Techsupp",
"LastName": "Alpha",
"Address": "Jl. Test Blok R No.1",
"City": "Jakarta",
"State": "DKI Jakarta",
"PostalCode": "18800",
"Phone": "08123456789",
"CountryCode": "1"
},
"BillingAddress": {
"FirstName": "Techsupp",
"LastName": "Alpha",
"Address": "Jl. Test Blok R No.1",
"City": "Jakarta",
"State": "DKI Jakarta",
"PostalCode": "18800",
"Phone": "08123456789",
"CountryCode": "1"
},
"Sellers": [
{
"Id": "SELLER123",
"Name": "Sellername",
"LegalId": "3274011001900001",
"SellerIdNumber": 3274011001900002,
"Email": "[email protected]",
"Url": "www.sunrise.com",
"address": {
"FirstName": "Seller",
"LastName": "Alpha",
"Address": "Jalan Tentara Pelajar no 49",
"City": "Jakarta Utara",
"State": "DKI Jakarta",
"PostalCode": "12960",
"Phone": "08123456789",
"CountryCode": "IDN"
}
}
],
"SettingField": [
{
"Name": "TenorInstallment",
"Value": "3"
}
]
}
Response Format
iPay88 Indonesia sends parameters via JSON as a response to Merchant. Here are some parameters as a response:
No. | Field Name | Type | Sample | Description |
---|---|---|---|---|
1. | RefNo | string | 920201930925AM | Unique merchant transaction number / Order ID |
2. | Signature | string | b469c7da241554364e55b65ca807ffc501bdf981126c248c636ac9e38592fc12 | Signature generated with SHA256 (see Request Signature) |
3. | VirtualAccountAssigned | string | 00001234561226610016ID.CO.SHOPEE.WWW01189360091800202690420208202690420303UMI522233123455360540820000.005802ID5920iPay88DummyStore-web6015KOTA JAKARTA PU61051021062150511T03152635123T4C5F11 | Virtual Account Number. For QRIS Static, iPay88 will return the same response for registered TerminalID and MerchantCode. |
4. | TransactionExpiryDate | string | 18-08-2020 07:57 | Expiry date for Virtual Account (DD-MM-YYYY HH:MM) |
5. | CheckoutID | string | T0036521900 | iPay88 OPSG Transaction ID |
6. | Code | string | 1 - Payment Request Received 0 - Fail |
Transaction Status |
7. | Message | string | Data received | Transaction Message |
Response Sample
{
"RefNo": "920201930925AM",
"Signature": "b469c7da241554364e55b65ca807ffc501bdf981126c248c636ac9e38592fc12",
"CheckoutID": "T0036521900",
"Code": "1",
"Message": "CheckoutURL generated"
}
Response Sample (Virtual Account)
{
"RefNo": "10182019103003AM",
"Signature": "b469c7da241554364e55b65ca807ffc501bdf981126c248c636ac9e38592fc12",
"VirtualAccountAssigned": "21128123123123",
"TransactionExpiryDate": "18-08-2020 07:57",
"CheckoutID": "T0036521900",
"Code": "1",
"Message": "CheckoutURL generated"
}
Response Sample (QRIS)
{
"RefNo": "920201930911AM",
"Signature": "6f7a5e4386438adf494feecbdc582d9c81e69e2e5fae747fe9a7dc98ef9fe7f1",
"VirtualAccountAssigned": "00001234561226610016ID.CO.SHOPEE.WWW01189360091800202690420208202690420303UMI52233123455360540820000.005802ID5920iPay88DummyStore-web6015KOTA JAKARTA PU61051021062150511T03152635123T4C5F11",
"CheckoutID": "5da812906e2bc26babf28e957c918468d87d34f021cadc66e6bb65c73f9276331",
"Code": "1",
"Message": "CheckoutURL generated"
}
Payment Redirect
After getting a response from iPay88, merchants need to redirect using the form method POST using CheckoutID from the payment response.
1 | Sandbox | https://sandbox.ipay88.co.id/PG/ |
2 | Production | https://payment.ipay88.co.id/PG/ |
Payment Redirect Parameter
Merchant should configure their server to send Referrer HTTP request header in all their Payment Redirect process to iPay88 payment page. iPay88 will do system verification to make sure that the request is valid from matching Merchant Code and merchant domain URL.
Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
No. | Field Name | Type (Size) | Sample | Description |
---|---|---|---|---|
1. | CheckoutID | string(20) | 3acf947c2e40b975d07d60906aff9 ef832357ba573b933faa007140d84492cb2 |
Unique ID iPay88 generated from payment response |
2. | Signature | integer | b469c7da241554364e55b65ca807ffc 501bdf981126c248c636ac9e38592fc12 |
Signature generated with SHA256 (see Request Signature) |
Payment Redirect Sample
<form method="POST" name="redirect" action="{redirect url}">
<input type="hidden" name="CheckoutID" value="{CheckoutID}" />
<input type="hidden" name="Signature" value="{Signature}" />
</form>
<script language="javascript">
document.redirect.submit();
</script>
Payment Response
HTTPS POST redirect response to responseURL (refer to Request Parameter No. 14) from iPay88 OPSG after performing payment.
No. | Field Name | Type (Size) | Sample | Description |
---|---|---|---|---|
1. | MerchantCode | string(20) | ID00001 | Merchant code assigned by iPay88 |
2. | RefNo | string(30) | 920201930925AM | Unique merchant transaction number / Order ID |
Payment Response Sample
<%
MerchantCode = Request.Form("MerchantCode")
RefNo = Request.Form("RefNo")
%>
<Add your programming code here>
<?PHP
$merchantcode = $_REQUEST["MerchantCode"];
$refno = $_REQUEST["RefNo"];
PHP?>
<Add your programming code here>
BackendPost
Backendpost will be sent after a user payment attempt using method POST with type application/json. iPay88 will send a backendpost with 3 times retry until merchant response with Code 1.
For QRIS Static Integration you need to register the merchant BackendURL with iPay88 team in order to receive callback notification.
BackendPost Parameter
No. | Field Name | Type | Description |
---|---|---|---|
1. | MerchantCode | string | Merchant code assigned by iPay88 |
2. | PaymentID | string | Payment method identifier |
3. | Refno | string | Merchant Reference Number |
4. | Amount | string | Transaction Amount, with .00 |
5. | Currency | string | Transaction Currency |
6. | Remark | string | Additional Value |
7. | TransId | string | iPay88 transaction ID |
8. | AuthCode | string | Code from Bank |
9. | TransactionStatus | string | Transaction Status
“1” – Success “0” – Fail “6” – Pending (Only available for ATM Transfer payment) |
10. | ErrDesc | string | Transaction Error Description |
11. | Signature | string | Signature generated using SHA256 |
12. | TransactionExpiryDate | string | Date expiry distributed by iPay88 |
13. | VirtualAccountAssigned | string | Assigned and Distributed by iPay88 |
13. | PaymentDate | string | Transaction Date |
14. | QRISResponse | Only available on QRIS Static | |
RRN | string | Unique number generated by QRIS issuer | |
TID | string | Registered merchant terminal ID |
BackendPost Signature
This signature must be included in the request of every transaction and encrypted using SHA256. This hash signature for a request is a hash of the following fields:
- MerchantKey (Provided by iPay88 OPSG and shared between iPay88 and merchant only)
- MerchantCode (Provided by iPay88 OPSG and shared between iPay88 and merchant only)
- PaymentID (see References for the list)
- RefNo
- Amount
- Currency
- TransactionStatus (the status of the transaction can be obtained from iPay88)
The fields must be set in the following order:
|| MerchantKey || MerchantCode || PaymentID || RefNo || Amount || Currency || TransactionStatus ||
Example:
MerchantKey = “apple”
MerchantCode = “ID00001”
PaymentID = “1”
RefNo = “A00000001”
Amount = “3000.47” (Note: 3000.47 represents an amount of Rp 3.000,47)
Currency = “IDR”
TransactionStatus = “1”
The hash would be calculated on the following string:
||apple||ID00001||1||A00000001||3000.47||IDR||1||
The resulting hash signature value (using SHA256 algorithm) is:
ed14e9c0373a1e1f887c29929fd8d063a402f6b1924d78df0763e03bae025ee0
To ensure the signature generated is correct, visit the link below for signature comparison:
https://payment.ipay88.co.id/epayment/testing/TestSignaturev2.asp
BackendPost Signature Sample Code
<?php
$sha256hex = hash('sha256', "||" . MerchantKey . "||" . MerchantCode . "||" . PaymentId . "||" . RefNo . "||" . Amount . "||" . Currency . "||" . TransactionStatus . "||");
?>
String sha256hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex("||" + MerchantKey + "||" + MerchantCode + "||" + PaymentId + "||" + RefNo + "||" + Amount + "||" + Currency + "||" + TransactionStatus + "||");
BackendPost Sample
{
"MerchantCode": "ID00001",
"PaymentId": "118",
"RefNo": "224202234712AM",
"Amount": "30000.00",
"Currency": "IDR",
"Remark": "",
"TransId": "T0057525100",
"AuthCode": "1411600000038796",
"TransactionStatus": "1",
"ErrDesc": "",
"Signature": "e111ac4fae7eeeb07e7b07f0e0b0e6515d3040fe8ac62e0cad5cbe55a48c3fb2",
"IssuerBank": "",
"TransactionExpiryDate": "25-02-2022 10:48",
"VirtualAccountAssigned": "1411600000038796",
"PaymentDate": "24-02-2022 10:48",
"Xfield1": "",
"DCCConversionRate": "0",
"OriginalAmount": "0.00",
"DiscountAmount": "",
"DiscountCode": "",
"OriginalCurrency": "",
"SettlementAmount": "0",
"SettlementCurrency": "",
"Binbank": ""
}
BackendPost Response
Merchant must respond with a specific value of backendpost that is being sent to the merchant's BackendURL.
No. | Field Name | Type | Description |
---|---|---|---|
1. | Code | string | 0 for Failed, 1 for Success |
2. | Message | string | |
1. Indonesia | string | Message in Indonesia | |
2. English | string | Message in English |
BackendPost Response Sample
{
"Code":"1",
"Message": {
"English":"Status Received",
"Indonesian":"Pembayaran diterima"
}
}
Requery Payment Status
No | Environment | URL |
---|---|---|
1 | Sandbox | https://sandbox.ipay88.co.id/epayment/enquiry.asp |
2 | Production | https://payment.ipay88.co.id/epayment/enquiry.asp |
Request Parameter
Field Name | Type (Size) | M/O | Description |
---|---|---|---|
MerchantCode | string(20) | M | Merchant Code assigned by iPay88 |
RefNo | string(30) | M | Unique merchant transaction number / Order ID |
Amount | decimal | M |
The amount must contain 2 digits after the decimal. For example: 100.50 is expressed as 100,50 10 is expressed as 10,00 0.50 is expressed as 0,50 |
Legend:
M: Mandatory field
O: Optional field, value can be empty but the parameter must exist
Requery Sample
<%
Function SendToiPayInq(byval MerchantCode, byval RefNo, byval Amount)
Dim TryNo, thenQString, URL, strReturn
TryNo = 0
QString = "MerchantCode=" & MerchantCode & "&RefNo=" & RefNo & "&Amount=" & Amount
URL = "https://payment.ipay88.co.id/epayment/enquiry.asp"
On Error Resume Next
Do
Set xobj = Server.CreateObject ("Msxml2.ServerXMLHTTP.3.0")
xobj.setTimeouts 30000, 60000, 60000, 60000
xobj.open "POST", URL, false
xobj.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xobj.send QString
TryNo = TryNo + 1
Loop While xobj.status <> 200 and TryNo < 3
If xobj.status <> 200 Then
SendToiPayInq = Err.Description & "(" & Err.Number & ")"
Else
SendToiPayInq = xobj.responseText
End If
set xobj = nothing
End Function
%>
<?PHP
function Requery($MerchantCode, $RefNo, $Amount)
{
$query = "https://payment.ipay88.co.id/epayment/enquiry.asp?MerchantCode=" . $MerchantCode . "&RefNo=" . $RefNo . "&Amount=" . $Amount;
$url = parse_url($query);
$host = $url["host"];
$path = $url["path"] . "?" . $url["query"];
$timeout = 1;
$fp = fsockopen($host, 443, $errno, $errstr, $timeout);
if ($fp)
{
fputs($fp, "GET $path HTTP/1.0\nHost: " . $host . "\n\n");
while (!feof($fp))
{
$buf .= fgets($fp, 128);
}
$lines = split("\n", $buf);
$Result = $lines[count($lines) - 1];
fclose($fp);
}
else
{
# enter error handling code here
}
return $Result;
}
?>
Response Format
Below is iPay88 requery response parameter:
Response iPay88 OPSG | Description |
---|---|
00 | Successful payment |
Invalid parameters | Parameters pass in incorrect |
Record not found | Cannot found the record |
Incorrect amount | Amount different |
Payment fail | Payment fail |
Payment Pending | Payment is pending and need customer to pay at the ATM Machine |
Payment In Progress | Payment is not paid yet or idle on iPay88 payment page or Bank page |
Requery Payment Status v2
Download Requery Transaction Technical Documentation 2.0No | Environment | URL |
---|---|---|
1 | Sandbox | https://sandbox.ipay88.co.id/ePayment/WebService/PaymentAPI/Transaction/Requery |
2 | Production | https://payment.ipay88.co.id/ePayment/WebService/PaymentAPI/Transaction/Requery |
Request Parameter
No | Field Name | Type (Size) | Description |
---|---|---|---|
1 | RefNo | string(30) | Unique merchant transaction number / Order ID |
2 | MerchantCode | string(20) | Merchant Code assigned by iPay88 |
3 | Amount | string |
The amount must only contain the exact number without 2 digits after and without point/comma. Example: 10.000 is expressed as 10000 100.000 is expressed as 1000000 |
4 | Signature | string(100) | SHA256 signature |
5 | Currency | string(5) | IDR only |
Requery Sample
{
"RefNo": "1031202241537AM",
"MerchantCode": "ID00001",
"Amount": "10000",
"Signature": "622cbd6690e265cda0371140ee4f21fead6e0ed875f711da28cf08026a0a5617",
"Currency": "IDR"
}
Response Parameter
No. | Field Name | Type | Description |
---|---|---|---|
1 | Status | string |
Data received status "200" – Success "404" – Merchant Not Found "401" – Transaction signature is not match "400" – Record not found / Cannot requery more than 100 times / Incorrect amount |
2 | Message | string | Transaction message, see requery response message. |
3 | MerchantCode | string | Merchant code assigned by iPay88 |
4 | PaymentID | string | Payment method identifier |
5 | Refno | string | Merchant Reference Number |
6 | Amount | string |
The amount must only contain the exact amount without 2 digits after and without point/comma. Example 10.000 is expressed as 10000 100.000 is expressed as 1000000 |
7 | Currency | string | Transaction Currency |
8 | Remark | string | Additional Value |
9 | TransId | string | iPay88 transaction ID |
10 | AuthCode | string | Code from Bank |
11 | TransactionStatus | string |
Transaction Status "1" – Success "0" – Fail "3" – Payment in Progress "6" – Pending (Only available for Virtual Account) |
12 | ErrDesc | string | Transaction Error Description from Principle/Bank |
13 | Signature | string | Signature generated using SHA256 |
14 | PaymentDate | string | Transaction Date |
15 | xfield1 | string | To enable installment and discount payment |
Response Sample
{
"Status": "200",
"Message": "00",
"Data": {
"MerchantCode": "ID00001",
"PaymentId": "103",
"RefNo": "113202224101AM",
"Amount": "10000",
"Currency": "IDR",
"Remark": "",
"TransId": "T0061540600",
"AuthCode": "879558",
"TransactionStatus": "1",
"ErrDesc": "",
"Signature": "",
"IssuerBank": "P.T. BANK CIMB NIAGA TBK.",
"PaymentDate": "03-11-2022 09:43",
"Xfields1": ""
}
}
Requery Response Message
Response iPay88 OPSG | Description |
---|---|
00 | Successful payment |
Payment fail | Payment is failed or not successful |
Payment Pending | Payment is pending and customer needs to pay and complete the payment on their mobile banking or ATM Machine |
Payment In Progress | Payment is not paid yet or customer idle on iPay88 payment page or Bank page |
Invalid parameters | Incorrect request parameter |
Record not found | Transaction not found or not recorded in iPay88 system |
Merchant not found | Incorrect merchant code |
Transaction signature is not match | Incorrect request signature |
Incorrect amount | Incorrect request amount |
Referensi
Kami berusaha memberikan informasi selengkap mungkin untuk Anda. Adanya informasi tersebut menjadikan proses integrasi Anda dengan iPay88 Indonesia menjadi mudah dan cepat. Untuk itu, kami meyediakan referensi sebagai informasi tambahan untuk Anda. Berikut ini adalah referensi dari iPay88 Indonesia.
Testing Credentials
Uji transaksi dengan metode pembayaran kartu kredit melalui sandbox memerlukan data sampel kartu. Berikut ini adalah testing credentials yang dapat digunakan untuk uji transaksi dengan metode pembayaran kartu kredit.
1. Pengujian Data
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
2. Pengujian Data Eksespsi
|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Payment ID
Berikut ini adalah daftar Payment ID iPay88 Indonesia berdasarkan metode pembayaran yang tersedia.
Credit/Debit Card
PaymentID | Name | Currency | Remark | Available Seamless |
---|---|---|---|---|
101 | Credit Card (BCA) | IDR | ||
102 | Credit Card (BCA 2D) | IDR | ||
105 | Credit Card (BRI) | IDR | ||
106 | Credit Card (BRI 2D) | IDR | 2D Payment | |
103 | Credit Card (CIMB) | IDR | ||
104 | Credit Card (CIMB 2D) | IDR | ||
116 | Credit Card (CIMB Authorization) | IDR | PreAuth Payment | |
34 | Credit Card (CIMB IPG) | IDR | ||
44 | Credit Card (CIMB IPG 2D) | IDR | 2D Payment | |
88 | Credit Card (Danamon) | IDR | ||
49 | Debit Card (GPN) | IDR | ||
54 | Credit Card (UnionPay) | IDR |
Online Banking
PaymentID | Name | Currency | Remark | Available Seamless |
---|---|---|---|---|
81 | CIMB Clicks | IDR | ||
23 | D-Bank Pro | IDR | ||
80 | Jenius Pay | IDR |
Virtual Account
PaymentID | Name | Currency | Remark | Available Seamless |
---|---|---|---|---|
9 | Maybank VA | IDR | Yes | |
112 | Permata VA | IDR | Yes | |
119 | Mandiri VA | IDR | Yes | |
140 | BCA VA | IDR | Yes | |
118 | BRI VA | IDR | Yes | |
83 | BNI VA | IDR | Yes | |
135 | CIMB VA | IDR | Yes | |
111 | Danamon VA | IDR | Yes |
Virtual Account Static
PaymentID | Name | Remark | Available Seamless |
---|---|---|---|
118 | BRI VA | Yes | |
119 | Mandiri VA | Yes | |
9 | Maybank VA | Yes | |
112 | Permata VA | Yes | |
140 | ALTO BCA VA | Yes |
E-Wallet
PaymentID | Name | Currency | Remark | Available Seamless |
---|---|---|---|---|
63 | OVO | IDR | ||
77 | DANA | IDR | ||
13 | LinkAja | IDR | ||
76 | ShopeePay JumpApp | IDR |
QRIS
PaymentID | Name | Currency | Remark | Available Seamless |
---|---|---|---|---|
120 | QRIS | IDR | Yes | |
141 | QRIS Static | IDR | Yes |
Over The Counter
PaymentID | Name | Currency | Available Seamless |
---|---|---|---|
60 | Alfamart | IDR | Yes |
65 | Indomaret | IDR | Yes |
Online Credit
PaymentID | Name | Currency | Available Seamless |
---|---|---|---|
71 | Akulaku | IDR | |
70 | Indodana | IDR | |
55 | Kredivo | IDR | |
73 | Atome | IDR |
Request Type List
Request Type | Description |
---|---|
REDIRECT | Default method using checkout form |
SEAMLESS | Seamless method using API |
QRCustomerScan | Seamless method for QR customer scan payment |
Mata Uang
Berikut ini adalah mata uang yang diharuskan untuk integrasi dengan iPay88 Indonesia.
|
|
---|---|
Indonesia Rupiah |
|
Deskripsi Error
Berikut ini adalah daftar pesan dan deskripsi error dari iPay88 Indonesia saat integrasi dengan merchant.
|
|
---|---|
Duplicate transaction reference number. | Nomor referensi digunakan kembali setelah nomor tersebut digunakan untuk pembayaran yang terlah sukses. |
Merchant identifier is missing or unregistered. | Merchant code tidak terdaftar atau merchant code salah. |
Transaction exceeds maximum allowed amount. | Kelebihan nilai total per transaksi. |
Unregistered merchant callback URL. | Request url milik merchant yang terdaftar di iPay88 tidak tepat. Silahkan registrasi request url situs Anda ke iPay88. |
Transaction signature is not match. | Signature yang dihasilkan merchant tidak tepat. |
Merchant account is suspended or inactive. | Akun telah disuspend atau tidak aktif. |
Invalid transaction amount format. | Format value pada parameter Amount tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid transaction currency format. | Format value pada parameter Currency tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid merchant identifier. | Format value pada parameter MerchantCode tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid transaction channel identifier. | Format value pada parameter PaymentId tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid purchased item description format. | Format value pada parameter ProdDesc tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid transaction reference number. | Format value pada parameter RefNo tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid customer email format. | Format value pada parameter UserEmail tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Invalid customer name format. | Format value pada parameter UserName tidak sesuai atau tidak ada value pada parameter tersebut ketika merchant request ke iPay88. |
Transaction time has expired when receiving authorization response. | Respon dari Issuer/Acquirer melebihi waktu transaksi (timeout). |
Payment method or channel is not subscribed. | Merchant menggunakan metode pembayaran yang tidak didaftarkan ke iPay88. |
Transaction does not pass all fraud security check. | Transaksi ditolak oleh parameter Fraud Detection System (FDS). |