GoPay (by GoJek - Indonesia)
Integrate GoPay and allow merchants to accept payments from consumers in Indonesia.
Payment Method Properties
Available country codes | ID |
Processing (Presentation) currencies | IDR |
Settlement currencies | USD |
Consumer currencies | IDR |
Channel member tag | gopay |
Scheme name in the settlement file | GoPay |
Minimum transaction amount | IDR 1.00 |
Maximum transaction amount | GoPay wallet: Non-KYC user: IDR 2,000,000 per transaction KYC’ed user: IDR 20,000,000 per transaction GoPayLater: Limit available for each user differs, based on the user’s spending and repayment history. The maximum possible is IDR 3 million. KYC = Know Your Customer - a verification process. |
Session timeout | 1 hour |
Refund | Full, partial and multiple partial reunds are all available. |
Refund Validity | 30 days |
Chargeback | No |
Integration Type | Asynchronous |
Sandbox | PPRO-hosted |
Transaction Flow
- Consumer conducts the checkout process on merchant's site
- The merchant/PSP sends the Transaction request to PPRO
- A Charge Request is sent to GoPay
- A Charge Response is returned along with the GoJek app deeplink URL
- A Redirect URL is built and sent to merchant/PSP
- Merchant forwards the GoPay deeplink redirect URL to consumer's mobile browser
- Consumer is taken to the GoPay deeplink URL
- Consumer is shown the PIN entry and confirmation screen
- Consumer confirms payment
- GoPay apps shows success screen to consumer
- GoPay notifies PPRO of the transaction result
- PPRO acknowledges GoPay’s notification
- A notification is sent to the PSP informing of a status update
- If the transaction status is not known, PPRO sends a Check Status call to GoPay
- GoPay returns the result
GoPay Integration
Specific input parameters for the TRANSACTION call
Field Name | M/O/C | Type | Regex | Description |
---|---|---|---|---|
specin.deeplinkcallbackurl | O | string | Valid URL | Needed if the merchant wants to support a deeplink callback to redirect the consumer back to the merchant app. |
specin.email | O | string | RFC-Compliant Email | RFC-compliant email of the shopper. |
specin.phone | O | String | see description | There is no strict regex on the phone, however it must be inclusive of the + symbol and the country code of the shopper. |
specin.billingaddrfirstname | O | String | .{0,255} | Customer's first name. Note that this value is not automatically derived from the accountholdername API field). |
specin.billingaddrlastname | O | String | .{0,255} | Customer's last name Note that this value is not automatically derived from the accountholdername API field). |
specin.billingphone | O | String | .{0,255} | Customer's billing phone number (if differing from the value of specin.phone ). |
specin.billingaddrline1 | O | String | .{0,255} | Customer's billing address - if multiple lines, concatenate as a single long string. |
specin.billingaddrcity | O | String | .{0,255} | Customer's billing city. |
specin.billingaddrpostalcde | O | String | .{0,255} | Postal code of the billing address. Note: Format is alpha-numeric, accepts “-” and space. |
specin.billingcntrycde | O | String | .{2} | Country code of the billing address (e.g. ID). Format follows ISO 3166-1 alpha-2. |
specin.shippingaddrfirstname | O | String | .{0,255} | Shipping address first name. |
specin.shippingaddrlastname | O | String | .{0,255} | Shipping address last name. |
specin.shippingphone | O | String | .{0,255} | Shipping recipient's phone number. |
specin.shippingaddrline1 | O | String | .{0,255} | Shipping address - if multiple lines, concatenate as a single long string. |
specin.shippingaddrcity | O | String | .{0,255} | Shipping city. |
specin.shippingaddrpostalcde | O | String | .{0,255} | Shipping postal code. Note: Format is alpha-numeric, accepts “-” and space. |
specin.shippingcntrycde | O | String | .{0,255} | Country code of the shipping address (e.g. ID). Format follows ISO 3166-1 alpha-2. |
For standard input parameters, see Input parameters for the TRANSACTION call.
This payment method supports the dynamic descriptor field (see The dynamic descriptor).
TRANSIENTIN parameters
Transientin Parameter | M/O | Type | RegEx | Description |
---|---|---|---|---|
transientin.orderitems | M | string | .* | A list of items in the customer’s cart that is being purchased. Format: A serialized JSON array containing item objects Each item object contains the following fields: name - Name of the item price - Price of the item. (Note: In major units and the cents must be in 00) Sum of item amounts, each multiplied by its quantity (next field) must equal to the amount on the order. quantity - Quantity of item bought, in integer For example: [{"name":"table","price":"2000.00","quantity":2},{"name":"Laptop 2.0","price":"3000.00","quantity":2}] In the above example, there are two items in the basket as shown below. - Item 1 Name: table Unit price: 2000.00 Quantity: 2 - Item 2 Name: Laptop 2.0 Unit price: 3000.00 Quantity: 2 Since the total cost of all items is 1000000 (Note: In minor units), the transaction amount must be 1000000 (Note: In minor units). Please ensure that the total cost of all items equals to the transaction amount. |
Specific output parameters for the TRANSACTION call
For standard output parameters, see Output parameters for the TRANSACTION call.
TRANSACTION call input
A minimal payload for GoPay follows:
tag=gopay
&txtype=TRANSACTION
&countrycode=ID
¤cy=IDR
&amount=1000
&merchanttxid=6168974689
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOETESTCONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
¬ificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&accountholdername=Tester%20Doe
&returnmode=urlencodeext
TRANSACTION call output
REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=553231415
&ERRMSG=
&CHANNEL=testchannel
&TAG=gopay
&REDIRECTSECRET=WTX7yn2WAU3Xdm5PuFbUcdKRidZWthpv
Additional Information
GoPay offers two payment flows depending on the device used by the consumer:
- Computer or tablet
- Smartphone or mobile phone
If a computer or tablet is used, a QR code appears and the consumer is asked to scan the QR code using the GoJek app.
If a smartphone or mobile phone is used, the consumer is redirected to the GoJek-GoPay app through a deeplink to confirm the payment/order details. PPRO’s current integration supports the mobile deeplink flow. This is where the consumer browses the merchant store on their mobile phone, selects GoPay and is redirected to the GoPay-GoJek app. The QR code flow is currently not supported.
Updated about 1 year ago