Our iOS Drop-in renders Touch'n Go in your payment form, and redirects the shopper to the Touch'n Go app to complete the payment.
When making an Touch'n Go payment, you additionally need to:
- Handle the redirect result after the shopper returns to your website.
Before you begin
This page explains how to add Touch'n Go to your existing iOS Drop-in integration. The iOS Drop-in integration works the same way for all payment methods. If you haven't done this integration yet, refer to our Drop-in integration guide.
Before starting your Touch'n Go integration:
- Make sure that you have set up your back end implementation, and added Drop-in to your payment form.
- Contact our Support Team to add Touch'n Go in your test Customer Area.
Show Touch'n Go in your payment form
Drop-in uses the countryCode
and the amount.currency
from your /paymentMethods request to show the available payment methods to your shopper.
To show Touch'n Go in your payment form, you need to specify in your /paymentMethods request:
- countryCode: MY
- amount.currency: MYR
- amount.value: The value of the payment.
After the shopper selects a payment method and provides payment details, Drop-in invokes the didSubmit
method which contains data.paymentMethod
. Pass data.paymentMethod
to your server and make a payment request.
Make a payment
When the shopper proceeds to pay, Drop-in invokes the didSubmit
method which contains data.paymentMethod
.
- Pass
data.paymentMethod
to your server. -
From your server, make a /payments request, specifying:
paymentMethod
: Thedata.paymentMethod
from thedidSubmit
event from your client app.
curl https://checkout-test.adyen.com/v68/payments \ -H "x-API-key: YOUR_X-API-KEY" \ -H "content-type: application/json" \ -d '{ "merchantAccount":"YOUR_MERCHANT_ACCOUNT", "reference":"YOUR_ORDER_NUMBER", "amount":{ "currency":"MYR", "value":1000 }, "paymentMethod":{ "type":"touchngo" }, "returnUrl":"my-app://" }'
# Set your X-API-KEY with the API key from the Customer Area. adyen = Adyen::Client.new adyen.api_key = "YOUR_X-API-KEY" response = adyen.checkout.payments({ :amount => { :currency => "MYR", :value => 1000 }, :reference => "YOUR_ORDER_NUMBER", :paymentMethod => { :type => "touchngo" }, :returnUrl => "my-app://", :merchantAccount => "YOUR_MERCHANT_ACCOUNT" })
// Set YOUR_X-API-KEY with the API key from the Customer Area. // Change to Environment.LIVE and add the Live URL prefix when you're ready to accept live payments. Client client = new Client("YOUR_X-API-KEY", Environment.TEST); Checkout checkout = new Checkout(client); PaymentsRequest paymentsRequest = new PaymentsRequest(); String merchantAccount = "YOUR_MERCHANT_ACCOUNT"; paymentsRequest.setMerchantAccount(merchantAccount); Amount amount = new Amount(); amount.setCurrency("MYR"); amount.setValue(15000L); paymentsRequest.setAmount(amount); DefaultPaymentMethodDetails paymentMethodDetails = new DefaultPaymentMethodDetails(); paymentMethodDetails.setType("touchngo"); paymentsRequest.setPaymentMethod(paymentMethodDetails); paymentsRequest.setReference("YOUR_ORDER_NUMBER"); paymentsRequest.setReturnUrl("my-app://"); PaymentsResponse paymentsResponse = checkout.payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area. $client = new \Adyen\Client(); $client->setXApiKey("YOUR_X-API-KEY"); $service = new \Adyen\Service\Checkout($client); $params = array( "amount" => array( "currency" => "MYR", "value" => 1000 ), "reference" => "YOUR_ORDER_NUMBER", "paymentMethod" => array( "type" => "touchngo" ), "returnUrl" => "my-app://", "merchantAccount" => "YOUR_MERCHANT_ACCOUNT" ); $result = $service->payments($params);
#Set your X-API-KEY with the API key from the Customer Area. adyen = Adyen.Adyen() adyen.client.xapikey = 'YOUR_X-API-KEY' result = adyen.checkout.payments({ 'amount': { 'value': 1000, 'currency': 'MYR' }, 'reference': 'YOUR_ORDER_NUMBER', 'paymentMethod': { 'type': 'touchngo' }, 'returnUrl': 'my-app://', 'merchantAccount': 'YOUR_MERCHANT_ACCOUNT' })
// Set your X-API-KEY with the API key from the Customer Area. var client = new Client ("YOUR_X-API-KEY", Environment.Test); var checkout = new Checkout(client); var amount = new Model.Checkout.Amount("MYR", 1000); var details = new Model.Checkout.DefaultPaymentMethodDetails{ Type = "touchngo" }; var paymentRequest = new Adyen.Model.Checkout.PaymentRequest { Reference = "YOUR_ORDER_NUMBER", Amount = amount, ReturnUrl = @"my-app://", MerchantAccount = "YOUR_MERCHANT_ACCOUNT", PaymentMethod = details }; var paymentResponse = checkout.Payments(paymentsRequest);
// Set your X-API-KEY with the API key from the Customer Area. const {Client, Config, CheckoutAPI} = require('@adyen/api-library'); const config = new Config(); // Set your X-API-KEY with the API key from the Customer Area. config.apiKey = '[API_KEY]'; config.merchantAccount = '[YOUR_MERCHANT_ACCOUNT]'; const client = new Client({ config }); client.setEnvironment("TEST"); const checkout = new CheckoutAPI(client); checkout.payments({ amount: { currency: "MYR", value: 1000 }, paymentMethod: { type: 'touchngo' }, reference: "YOUR_ORDER_NUMBER", merchantAccount: config.merchantAccount, returnUrl: "my-app://" }).then(res => res);
The /payments response contains an
action
object with the information needed to redirect the shopper.
- Pass the
action
object to your client app. Drop-in needs this to redirect the shopper to the issuing bank's website or app.
Handle the redirect result
Drop-in redirects the shopper to the issuing bank's app or website where they complete the payment.
- To inform Drop-in when the shopper returns to your app, implement the following in your
UIApplicationDelegate
:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {
RedirectComponent.applicationDidOpen(from: url)
return true
}
After Drop-in completes the action, it invokes the didProvide
method.
- From your server, make a POST /payments/details request providing the
data
from thedidProvide
method from your client app.
You receive a response containing:
resultCode
: Use this to present the result to your shopper.-
pspReference
: Our unique identifier for the transaction.
Test and go live
Check the status of Touch'n Go test payments in your Customer Area > Transactions > Payments.
To accept live Touch'n Go payments, you must contact our Support Team to add Touch'n Go in your live Customer Area.