Skip to main content

iPay88 Integration

Introduction#

iPay88 is a payment company that offers e-commerce, retail, online banking, e-wallets solutions and more to its merchants. iPay88 offers merchants comprehensive online payment options such as credit/debit cards, bank transfers and alternative online payments. The payment process uses a redirect approach, customers will be redirected to a secure iPay88 page where they will make a payment and then be returned to your store.


Supported Countries#

  • Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
  • Thailand ๐Ÿ‡น๐Ÿ‡ญ

Available Payment Methods#

Payment TypePayment Method KeyCurrencyStatus
Ovo WalletIPAY88_OVOIDRโœ…
Dana WalletIPAY88_DANAIDRโœ…
LinkAja WalletIPAY88_LINKAJAIDRโœ…
ShopeePay WalletIPAY88_SHOPEEPAYIDRโœ…
Maybank Virtual AccountIPAY88_MAYBANK_VAIDRโœ…
Permata Virtual AccountIPAY88_PERMATA_VAIDRโœ…
Mandiri Virtual AccountIPAY88_MANDIRI_ATMIDRโœ…
AkulakuIPAY88_AKULAKUIDRโœ…
GPNIPAY88_GPNIDRโœ…
Nobubank QRIPAY88_NOBUBANK_QRIDRโœ…
ShopeePay QRIPAY88_SHOPEEPAY_QRIDRโœ…
Credit CardsIPAY88_CREDIT_CARDTHBโœ…
KBankIPAY88_KBANKTHBโœ…
SCB BankIPAY88_SCBTHBโœ…
BAY BankIPAY88_BAYTHBโœ…
BBL BankIPAY88_BBLTHBโœ…
PromptPayIPAY88_PROMPT_PAYTHBโœ…
Rabbit LinePay WalletIPAY88_RABBIT_LINE_PAYTHBโœ…
ShopeePay WalletIPAY88_SHOPEEPAY_JUMPAPPTHBโœ…
TrueMoney WalletIPAY88_TRUE_MONEYTHBโœ…

Miscellaneous Details#

Indonesia#
  • Merchant needs to register Referer Domain https://chaiport.io/ with iPay88
  • Amount in Decimal value not supported for IDR currency
  • Description is mandatory
  • In Order details following fields are mandatory:
    • Id
    • Name
    • Quantity
    • Price
  • In Billing details and Shipping details following fields are mandatory:
    • Name
    • Surname
    • Phone
    • Email
    • Address - Line 1
    • Address - City
    • Address - State
    • Address - Postal Code
    • Address - Country Code

Thailand#
  • Description is mandatory
  • In Billing details following fields are mandatory:
    • Name
    • Phone
    • Email

Sandbox#

Use following values in embedded JS code to pay via iPay88 channel#

"pmt_channel": "IPAY88",
"pmt_method": { Any of above given payment method keys },

Credentials#

countrymerchantCodemerchantKey
IndonesiaID01829pNaUOCSyP4
ThailandTH000104SLxHL1j2Y

Test card data for Thailand Credit Card payment method#

TypeCard numberNameValid throughCVV/OTP
Credit Card4000 0000 0000 0002TEST CARD12/22123

Test Phone details for Dana wallet#

Mobile NumberSMSPassword
812202020208888082020

Test Virtual Account ATM Simulator#

ATM Simulator


Sample payload for initiatePayment#

{
"key": {Chaiport_Key},
"merchant_order_id": {merchant_order_id},
"amount": 40000,
"currency": "IDR",
"signature_hash": {signature_hash},
"billing_details": {
"billing_name": "Test Customer",
"billing_surname":"Something",
"billing_email": "markweins@gmail.com",
"billing_phone": "+7467345493",
"billing_address": {
"city": "Jakarta",
"country_code": "ID",
"locale": "vi",
"line_1":"Address line 1",
"line_2":"Address line 2",
"postal_code": "400202",
"state": "Mah",
"country_name":"Indonesia"
}
},
"shipping_details": {
"shipping_name": "Test Customer",
"shipping_surname":"Something",
"shipping_email": "markweins@gmail.com",
"shipping_phone": "+4875867484",
"shipping_address": {
"city": "abc",
"country_code": "ID",
"locale": "vn",
"line_1": "address_1",
"line_2": "address_2",
"postal_code": "400202",
"state": "Bac Giang"
}
},
"order_details": [
{
"id": "1",
"name": "abc",
"quantity": 1,
"price": 40000
}
],
"success_url": "https://dev-checkout.chaiport.io/success.html",
"failure_url": "https://dev-checkout.chaiport.io/failure.html",
"pmt_channel": "IPAY88",
"pmt_method": { Any of above given payment method keys },
"description":"Payment for the order #42140324",
"environment":"sandbox"
}

Sample payload for paymentLink#

{
"chaipay_key": {Chaiport_Key},
"merchant_details": {
"name": "Test company",
"back_url": "https://dev-admin.chaipay.io",
"promo_code": "NA",
"promo_discount": 0,
"shipping_charges": 0
},
"signature_hash": {signature_hash},
"amount": 20000,
"currency": "IDR",
"country_code": "ID",
"merchant_order_id": {merchant_order_id},
"billing_details": {
"billing_name": "Test Customer",
"billing_surname":"Something",
"billing_email": "markweins@gmail.com",
"billing_phone": "+4534283293",
"billing_address": {
"city": "Jakarta",
"country_code": "ID",
"locale": "vi",
"line_1":"Address line 1",
"line_2":"Address line 2",
"postal_code": "400202",
"state": "Mah",
"country_name":"Indonesia"
}
},
"shipping_details": {
"shipping_name": "Test Customer",
"shipping_surname":"Something",
"shipping_email": "markweins@gmail.com",
"shipping_phone": "+5454934232",
"shipping_address": {
"city": "abc",
"country_code": "ID",
"locale": "vi",
"line_1": "address_1",
"line_2": "address_2",
"postal_code": "400202",
"state": "Bac Giang"
}
},
"success_url": "https://dev-checkout.chaiport.io/success.html",
"failure_url": "https://dev-checkout.chaiport.io/failure.html",
"expiry_hours": 48,
"source": "api",
"description": "Payment for the order #42140324",
"show_shipping_details": false,
"show_back_button": true,
"default_guest_checkout": false,
"is_checkout_embed": false,
"environment": "sandbox",
"order_details": [
{
"id": "1",
"name": "abc",
"quantity": 2,
"price": 10000
}
]
}

Sample additional data response for initiatePayment (Thailand)#

{
"additional_data": {
"Amount": "40000.00",
"BackendURL": "https://api.chaiport.io/webhook/ipay88/"{Chaiport_Key}"?country=TH",
"Currency": "THB",
"MerchantCode": {Merchant_code},
"PaymentId": 82,
"PostingURL": "https://sandbox.ipay88.co.th/epayment/entry.asp",
"ProdDesc": "Payment for the order #42140324",
"RefNo": {Order_ref},
"ResponseURL": "https://api.chaiport.io/api/handleShopperRedirect/IPAY88?country=TH",
"Signature": "5506cd211a6ac76cca90ab385057fdb70a287c2f434c3ae9f3bd5a9ca1822d68",
"SignatureType": "SHA256",
"UserContact": "+7467345493",
"UserEmail": "markweins@gmail.com",
"UserName": "Firstname Surname"
}
}

Payment Redirect (Thailand)#

In the response of initiatePayment API with additional data but no redirect URl or deep link, then the merchants needs to submit the form using form method post.

Payment Redirect Sample#
<FORM method="post" name="ePayment" action={PostingURL}>
<INPUT type="hidden" name="MerchantCode" value={MerchantCode}>
<INPUT type="hidden" name="PaymentId" value={PaymentId}>
<INPUT type="hidden" name="RefNo" value={RefNo}>
<INPUT type="hidden" name="Amount" value={Amount}>
<INPUT type="hidden" name="Currency" value={Currency}>
<INPUT type="hidden" name="ProdDesc" value={ProdDesc}>
<INPUT type="hidden" name="UserName" value={UserName}>
<INPUT type="hidden" name="UserEmail" value={UserEmail}>
<INPUT type="hidden" name="UserContact" value={UserContact}>
<INPUT type="hidden" name="Remark" value="">
<INPUT type="hidden" name="Lang" value="ISO-8859-1">
<INPUT type="hidden" name="SignatureType" value={SignatureType}>
<INPUT type="hidden" name="Signature" value={Signature}>
<INPUT type="hidden" name="ResponseURL" value={ResponseURL}>
<INPUT type="hidden" name="BackendURL" value={BackendURL}>
<INPUT type="submit" value="Proceed with Payment" name="Submit">
</FORM>

Sample additional data response for initiatePayment (Indonesia)#

{
"additional_data": {
"CheckoutID": "7758028124035bd7baaa33b8d5a3b11803c8b0997a5d2a733affce6f1504f729",
"Code": "1",
"PostingURL": "https://sandbox.ipay88.co.id/PG/",
"RefNo": {Order_ref},
"Signature": "aa5134dee1343cfaec465f6134d4ce2b57fd92db5ea1cdb7e5321ee007b7d263"
}
}

Payment Redirect (Indonesia)#

In the response of initiatePayment API with additional data but no redirect URl or deep link, then the merchants needs to submit the form using form method post.

Payment Redirect Sample#
<form method="POST" name="redirect" action={PostingURL}>
<input type="hidden" name="CheckoutID" value={CheckoutID} />
<input type="hidden" name="Signature" value={Signature} />
</form>
<script language=javascript>
document.redirect.submit();
</script>

Reference links#