Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

Touch'n Go Drop-in integration

Add Touch'n Go to your existing iOS Drop-in integration.

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:

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:

  1. Make sure that you have set up your back end implementation, and added Drop-in to your payment form.
  2. 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:

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.

  1. Pass data.paymentMethod to your server.
  2. From your server, make a /payments request, specifying:

    • paymentMethod: The data.paymentMethod from the didSubmit 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.

    /payments response
    {
    "resultCode":"RedirectShopper",
    "action":{
      "paymentMethodType":"touchngo",
      "method":"GET",
      "url":"https://checkoutshopper-test.adyen.com/checkoutshopper/checkoutPaymentRedirect?redirectData=...",
      "type":"redirect"
    }
    }
  1. 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.  

  1. 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.

  1. From your server, make a POST /payments/details request providing the data from the didProvide method from your client app.

/payments/details request
  curl https://checkout-test.adyen.com/v68/payments/details \
  -H "x-API-key: YOUR_X-API-KEY" \
  -H "content-type: application/json" \
  -d '{
       "details": {
         "redirectResult": "eyJ0cmFuc1N0YXR1cyI6IlkifQ=="
     }
  }'

You receive a response containing:

  • resultCode: Use this to present the result to your shopper.
  • pspReference: Our unique identifier for the transaction.
    /payments/details response
    {
       "resultCode": "Authorised",
       "pspReference": "FJM726V375BV9D82"
    }

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.

See also