{"title":"Alipay+ for API only","category":"default","creationDate":1784631444,"content":"<p>You can add Alipay+ to your existing integration. The following instructions show only what you must add to your integration specifically for Alipay+.<\/p>\n<p>If an instruction on this page corresponds with a step in the main integration guide, it includes a link to corresponding step of the main integration guide.<\/p>\n<h2>Requirements<\/h2>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">Make sure that you have an existing <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only\">API-only integration<\/a>.<\/td>\n<td> <\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Redirect handling<\/strong><\/td>\n<td style=\"text-align: left;\">Make sure that your existing integration is set up to <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#handle-the-redirect\">handle the redirect<\/a>. <br>  <code>action.type<\/code>: <strong>redirect<\/strong>.<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\"> Before you begin, <a href=\"\/payment-methods\/add-payment-methods\">add Alipay+ in your Customer Area<\/a>. <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<ol>\n<li>The shopper selects Alipay+ as payment method.<\/li>\n<li>The shopper then selects their preferred wallet that is included with Alipay+.<\/li>\n<li>The shopper enters their details in the <a href=\"#build-your-payment-form\">payment form that you build<\/a>, if applicable.<\/li>\n<li>When you make the payment request, you <a href=\"#additional-parameters-payments\">include additional information about the items that the shopper intends to purchase<\/a>, if applicable.<\/li>\n<li>Your existing integration setup will <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#handle-the-redirect\">handle the redirect<\/a>.<\/li>\n<\/ol>\n<h2 id=\"build-your-payment-form\">Build your payment form<\/h2>\n<p>Include Alipay+ in the list of <a href=\"#methods\">available payment methods<\/a>. You do not need to collect any additional information from the shopper in your payment form.<\/p>\n<div class=\"notices green\">\n<p>You can <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%2Bonly&amp;version=71#downloading-logos\">download the logo for Alipay+<\/a> to use in your form.<\/p>\n<\/div>\n<h2 id=\"methods\">Get Alipay+ as an available payment method<\/h2>\n<p>When you make the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/paymentMethods<\/a> to <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#get-available-payment-methods\">get available payment methods<\/a>, specify the following so that Alipay+ is included in the response.<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Values<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods#request-countryCode\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">countryCode<\/a><\/td>\n<td><strong>AT<\/strong>, <strong>AU<\/strong>, <strong>BE<\/strong>, <strong>CA<\/strong>, <strong>CH<\/strong>, <strong>CN<\/strong>, <strong>CY<\/strong>, <strong>CZ<\/strong>, <strong>DE<\/strong>, <strong>DK<\/strong>, <strong>EE<\/strong>, <strong>ES<\/strong>, <strong>FI<\/strong>, <strong>FR<\/strong>, <strong>GB<\/strong>, <strong>GR<\/strong>, <strong>HK<\/strong>, <strong>HU<\/strong>, <strong>IE<\/strong>, <strong>IS<\/strong>, <strong>IT<\/strong>, <strong>JP<\/strong>, <strong>LI<\/strong>, <strong>LT<\/strong>, <strong>LU<\/strong>, <strong>LV<\/strong>, <strong>MT<\/strong>, <strong>MY<\/strong>, <strong>NL<\/strong>, <strong>NO<\/strong>, <strong>NZ<\/strong>, <strong>PL<\/strong>, <strong>PT<\/strong>, <strong>RO<\/strong>, <strong>SE<\/strong>, <strong>SG<\/strong>, <strong>SI<\/strong>, <strong>SK<\/strong>, <strong>US<\/strong><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paymentMethods#request-amount-currency\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">amount.currency<\/a><\/td>\n<td><strong>AED<\/strong>, <strong>AUD<\/strong>, <strong>CAD<\/strong>, <strong>CHF<\/strong>, <strong>CNY<\/strong>, <strong>CZK<\/strong>, <strong>DKK<\/strong>, <strong>EUR<\/strong>, <strong>GBP<\/strong>, <strong>HKD<\/strong>, <strong>JPY<\/strong>, <strong>MYR<\/strong>, <strong>NOK<\/strong>, <strong>NZD<\/strong>, <strong>SEK<\/strong>, <strong>SGD<\/strong>, <strong>USD<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example request for available payment methods'\" :id=\"'payment-methods-request'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/paymentMethods \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST\\n-d '{\\n   \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n   \\&quot;countryCode\\&quot;: \\&quot;SG\\&quot;,\\n   \\&quot;amount\\&quot;: {\\n      \\&quot;currency\\&quot;: \\&quot;SGD\\&quot;,\\n\\t  \\&quot;value\\&quot;: 1000\\n   }\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v41.1.1\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.checkout.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.checkout.*;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nPaymentsApi service = new PaymentsApi(client);\\nPaymentMethodsResponse response = service.paymentMethods(paymentMethodsRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v29.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Service\\\\Checkout\\\\PaymentsApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new PaymentsApi($client);\\n$response = $service-&gt;paymentMethods($paymentMethodsRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .NET API Library v34.0.2\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Checkout;\\nusing Adyen.Service.Checkout;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nvar service = new PaymentsService(client);\\nvar response = service.PaymentMethods(paymentMethodsRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v30.1.0\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst paymentMethodsRequest = {\\n  merchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  countryCode: \\&quot;SG\\&quot;,\\n  amount: {\\n    currency: \\&quot;SGD\\&quot;,\\n    value: 1000\\n  }\\n}\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.paymentMethods(paymentMethodsRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v21.2.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/checkout\\&quot;\\n)\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nservice := client.Checkout()\\nreq := service.PaymentsApi.PaymentMethodsInput().IdempotencyKey(\\&quot;UUID\\&quot;).PaymentMethodsRequest(paymentMethodsRequest)\\nres, httpRes, err := service.PaymentsApi.PaymentMethods(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v15.0.1\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  \\&quot;countryCode\\&quot;: \\&quot;SG\\&quot;,\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;currency\\&quot;: \\&quot;SGD\\&quot;,\\n    \\&quot;value\\&quot;: 1000\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payment_methods(request=json_request, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v11.2.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :merchantAccount =&gt; 'ADYEN_MERCHANT_ACCOUNT',\\n  :countryCode =&gt; 'SG',\\n  :amount =&gt; {\\n    :currency =&gt; 'SGD',\\n    :value =&gt; 1000\\n  }\\n}\\n\\n# Send the request\\nresult = adyen.checkout.payments_api.payment_methods(request_body, headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v30.1.0\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.PaymentsApi.paymentMethods(paymentMethodsRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example response with Alipay+ available'\" :id=\"'payment-methods-response'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"paymentMethods\\\": [\\n        {\\n            \\\"name\\\": \\\"Alipay+\\\",\\n            \\\"type\\\": \\\"alipay_plus\\\"\\n        }\\n    ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2 id=\"additional-parameters-payments\">Add additional parameters to your \/payments request<\/h2>\n<p>When you <a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only#make-a-payment\">make a payment<\/a>, add the following additional parameters:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter<\/th>\n<th>Required<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-channel\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">channel<\/a><\/td>\n<td><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>Set to the applicable channel: <strong>Web<\/strong>, <strong>iOS<\/strong>, or <strong>Android<\/strong><\/td>\n<\/tr>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments#request-browserInfo\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">browserInfo<\/a><\/td>\n<td><\/td>\n<td>Information about the shopper's browser. Required when <code>channel<\/code> is <strong>Web<\/strong>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example payment request for Alipay+'\" :id=\"'payments-request'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments \\\\\\n-H 'x-API-key: ADYEN_API_KEY' \\\\\\n-H 'idempotency-key: YOUR_IDEMPOTENCY_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n   \\&quot;amount\\&quot;: {\\n       \\&quot;currency\\&quot;: \\&quot;SGD\\&quot;,\\n       \\&quot;value\\&quot;: 1000\\n   },\\n   \\&quot;paymentMethod\\&quot;: {\\n       \\&quot;type\\&quot;: \\&quot;alipay_plus\\&quot;\\n   },\\n   \\&quot;channel\\&quot;: \\&quot;web\\&quot;,\\n   \\&quot;countryCode\\&quot;: \\&quot;SG\\&quot;,\\n   \\&quot;shopperLocale\\&quot;: \\&quot;en-SG\\&quot;,\\n   \\&quot;shopperEmail\\&quot;: \\&quot;shopper@example.com\\&quot;,\\n   \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n   \\&quot;shopperReference\\&quot;: \\&quot;YOUR_SHOPPER_REFERENCE\\&quot;,\\n   \\&quot;reference\\&quot;: \\&quot;ORDER-12345\\&quot;,\\n   \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/?shopperOrder=12xy..\\&quot;,\\n   \\&quot;browserInfo\\&quot;: {\\n      \\&quot;userAgent\\&quot;: \\&quot;Mozilla\\\/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit\\\/605.1.15 (KHTML, like Gecko) Version\\\/17.0 Mobile\\\/15E148 Safari\\\/604.1\\&quot;,\\n      \\&quot;acceptHeader\\&quot;: \\&quot;text\\\/html,application\\\/xhtml+xml,application\\\/xml;q=0.9,*\\\/*;q=0.8\\&quot;,\\n      \\&quot;language\\&quot;: \\&quot;en-SG\\&quot;,\\n      \\&quot;colorDepth\\&quot;: 32,\\n      \\&quot;screenHeight\\&quot;: 844,\\n      \\&quot;screenWidth\\&quot;: 390,\\n      \\&quot;timeZoneOffset\\&quot;: -480,\\n      \\&quot;javaEnabled\\&quot;: false,\\n      \\&quot;javaScriptEnabled\\&quot;: true\\n      }\\n   }'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The response includes the <code>action.type<\/code>: <strong>redirect<\/strong>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example response with an additional action'\" :id=\"'payments-response'\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"pspReference\\\": \\\"LXVKGQ9CWQ9FDR65\\\",\\n    \\\"resultCode\\\": \\\"RedirectShopper\\\",\\n    \\\"amount\\\": {\\n        \\\"currency\\\": \\\"SGD\\\",\\n        \\\"value\\\": 1000\\n    },\\n    \\\"merchantReference\\\": \\\"ORDER-12345\\\",\\n    \\\"paymentMethod\\\": {\\n        \\\"type\\\": \\\"alipay_plus\\\"\\n    },\\n    \\\"action\\\": {\\n        \\\"method\\\": \\\"GET\\\",\\n        \\\"paymentMethodType\\\": \\\"alipay_plus\\\",\\n        \\\"type\\\": \\\"redirect\\\",\\n        \\\"url\\\": \\\"https:\\\/\\\/global.alipay.com\\\/payment\\\/initiate?token=eyJhbGciOiJSUzI1Ni...\\\"\\n    }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>The shopper is redirected to the checkout page of Alipay+ where they select their wallet (for example GCash, KakaoPay, TrueMoney, DANA, AlipayHK, or one of the other available wallets).<\/p>\n<h2>Handle the redirect<\/h2>\n<p>After the shopper authenticates in their wallet they are redirected back to <code>returnUrl<\/code>.<\/p>\n<p>Adyen collects the redirect result value from <code>returnUrl<\/code>, for example:<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example returnUrl that contains the redirectResult value'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"returnUrl\\\": \\\"https:\\\/\\\/your-website.com\\\/checkout\\\/return?redirectResult=eyJhbGciOiJSUzI1NiIsInR5cCI6Ik...\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>Adyen then sends the value of <code>redirectResult<\/code> in the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/details\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/details<\/a> request:<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example \/payments\/details request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"details\\\": {\\n      \\\"redirectResult\\\": \\\"eyJhbGciOiJSUzI1NiIsInR5cCI6Ik...\\\"\\n  },\\n  \\\"paymentData\\\": \\\"Ab02b4c0!BQABAgA...\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<ul>\n<li><code>paymentData<\/code> - contains the value from the original  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> response. (When using Drop-in or the sessions flow it is handled automatically.)<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Example \/payments\/details response'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"pspReference\\\": \\\"LXVKGQ9CWQ9FDR65\\\",\\n  \\\"resultCode\\\": \\\"Authorised\\\",\\n  \\\"amount\\\": {\\n      \\\"currency\\\": \\\"SGD\\\",\\n  \\\"value\\\": 1000\\n  },\\n  \\\"merchantReference\\\": \\\"ORDER-12345\\\",\\n  \\\"paymentMethod\\\": {\\n      \\\"type\\\": \\\"alipay_plus_gcash\\\"\\n  },\\n  \\\"additionalData\\\": {\\n      \\\"paymentMethodVariant\\\": \\\"alipay_plus_gcash\\\"\\n  }\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>It is important to note that the value for <code>paymentMethod.type<\/code> is now <strong>alipay_plus_gcash<\/strong>, which reflects the specific wallet the shopper used (in this example, GCash).<\/p>\n<p>The original payment request used <strong>alipay_plus<\/strong> (the generic aggregator type). The resolved <code>paymentMethod.type<\/code> is only known after the shopper authenticates in their selected wallet app.<\/p>\n<h2>Webhook notification<\/h2>\n<p>Adyen sends an AUTHORISATION notification after the payment is processed. The <code>paymentMethod<\/code> field in the notification reflects the actual wallet used, not the generic <strong>alipay_plus<\/strong>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Webhook notification'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  \\\"live\\\": \\\"false\\\",\\n  \\\"notificationItems\\\": [\\n    {\\n      \\\"NotificationRequestItem\\\": {\\n      \\\"eventCode\\\": \\\"AUTHORISATION\\\",\\n      \\\"success\\\": \\\"true\\\",\\n      \\\"pspReference\\\": \\\"LXVKGQ9CWQ9FDR65\\\",\\n      \\\"merchantReference\\\": \\\"ORDER-12345\\\",\\n      \\\"merchantAccountCode\\\": \\\"YOUR_MERCHANT_ACCOUNT\\\",\\n      \\\"paymentMethod\\\": \\\"alipay_plus_alipay_cn\\\",\\n      \\\"amount\\\": {\\n          \\\"currency\\\": \\\"SGD\\\",\\n          \\\"value\\\": 1000\\n      },\\n      \\\"eventDate\\\": \\\"2026-06-09T10:23:41+00:00\\\",\\n      \\\"reason\\\": \\\"\\\",\\n      \\\"additionalData\\\": {\\n          \\\"paymentMethodVariant\\\": \\\"alipay_plus_alipay_cn\\\",\\n          \\\"authCode\\\": \\\"093512\\\",\\n          \\\"avsResult\\\": \\\"0 Unknown\\\"\\n        }\\n      }\\n   }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h3>The paymentMethod value for each wallet<\/h3>\n<p>Alipay+ is a super-app aggregator that supports multiple wallets.<\/p>\n<p>For that reason, the <code>paymentMethod<\/code> value in the notification (and in the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/details\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/details<\/a> response) is based on the shopper's wallet selection.<\/p>\n<table>\n<thead>\n<tr>\n<th>Wallet selected by shopper<\/th>\n<th>Market<\/th>\n<th><code>paymentMethod<\/code> value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Alipay<\/td>\n<td>China<\/td>\n<td><strong>alipay_plus_alipay_cn<\/strong><\/td>\n<\/tr>\n<tr>\n<td>AlipayHK<\/td>\n<td>Hong Kong<\/td>\n<td><strong>alipay_plus_alipay_hk<\/strong><\/td>\n<\/tr>\n<tr>\n<td>DANA<\/td>\n<td>Indonesia<\/td>\n<td><strong>alipay_plus_dana<\/strong><\/td>\n<\/tr>\n<tr>\n<td>GCash<\/td>\n<td>Philippines<\/td>\n<td><strong>alipay_plus_gcash<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Kakao Pay<\/td>\n<td>South Korea<\/td>\n<td><strong>alipay_plus_kakaopay<\/strong><\/td>\n<\/tr>\n<tr>\n<td>KPlus<\/td>\n<td>Thailand<\/td>\n<td><strong>alipay_plus_kplus<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Naver Pay<\/td>\n<td>South Korea<\/td>\n<td><strong>alipay_plus_naverpay<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Rabbit LINE Pay<\/td>\n<td>Thailand<\/td>\n<td><strong>alipay_plus_rabbitlinepay<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Touch 'n Go eWallet<\/td>\n<td>Malaysia<\/td>\n<td><strong>alipay_plus_touchngo<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Toss<\/td>\n<td>South Korea<\/td>\n<td><strong>alipay_plus_tosspay<\/strong><\/td>\n<\/tr>\n<tr>\n<td>TrueMoney<\/td>\n<td>Thailand<\/td>\n<td><strong>alipay_plus_truemoney<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Initial  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> requests always use <strong>alipay_plus<\/strong> (the generic type). The resolved wallet-specific type only appears in the notification and in the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/details\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/details<\/a> response, after the shopper completed authentication in their selected wallet app.<\/p>\n<h2>Key implementation notes<\/h2>\n<p>Make sure that your implementation adheres to the following:<\/p>\n<ul>\n<li>Initiate a payment with <strong>alipay_plus<\/strong>. Always send <code>paymentMethod.type<\/code>: <strong>alipay_plus<\/strong> in  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a>. Do not attempt to pre-select a specific wallet via the <code>paymentMethod.type<\/code> parameter.<\/li>\n<li>Monitor notifications by wallet type. Use <code>paymentMethod<\/code> in the webhook to identify revenue per wallet. This is useful for reporting and reconciliation.<\/li>\n<li>Alipay+ uses the redirect flow. Your frontend must call  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/details\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/details<\/a> and include the <code>redirectResult<\/code> after the shopper returns.<\/li>\n<li>Tokenization (<code>storePaymentMethod<\/code>: <strong>true<\/strong>) is not currently supported for Alipay+. Requests with this parameter set to <strong>true<\/strong> will fail validation.<\/li>\n<li>Always send <code>browserInfo<\/code> when <code>channel<\/code> is set to <strong>Web<\/strong>.<\/li>\n<\/ul>\n<h3>How to use channel and browserInfo<\/h3>\n<p>Adyen uses <code>channel<\/code> and <code>browserInfo.userAgent<\/code> to determine the shopper's platform context, which controls which wallet entry points are available during the redirect.<\/p>\n<p>The shopper contexts are:<\/p>\n<table>\n<thead>\n<tr>\n<th>Context<\/th>\n<th>Typical scenario<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Desktop browser<\/td>\n<td><code>channel<\/code>: <strong>Web<\/strong> with a desktop user agent<\/td>\n<\/tr>\n<tr>\n<td>Mobile browser<\/td>\n<td><code>channel<\/code>: <strong>Web<\/strong> with a mobile user agent<\/td>\n<\/tr>\n<tr>\n<td>In-app (webview)<\/td>\n<td><code>channel<\/code>: <strong>iOS<\/strong> or <code>channel<\/code>: <strong>Android<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Alipay+ uses the redirect flow. When <code>channel<\/code> is set to <strong>iOS<\/strong> or <strong>Android<\/strong>, Adyen redirects the shopper to a mobile-optimized hosted page that attempts to deep-link or auto-switch into the wallet app, if supported. There is no native SDK integration.<\/p>\n<p>If you send the incorrect channel value - for example, you send <strong>Web<\/strong> for an in-app webview - it can result in the shopper being offered an incompatible redirect experience.<\/p>\n<p>For <code>browserInfo<\/code>, use values collected from the shopper's browser at the time of checkout.<\/p>\n<p>For native iOS and Android apps:<\/p>\n<ul>\n<li><code>channel<\/code> - set to <strong>iOS<\/strong> or <strong>Android<\/strong>, not <strong>Web<\/strong><\/li>\n<li><code>browserInfo<\/code> - not required<\/li>\n<\/ul>\n<h2>Test and go live<\/h2>\n<p>There is no test environment for Alipay+.<\/p>\n<p>We recommend doing live penny tests:<\/p>\n<ol>\n<li>Get an Alipay+ wallet app, set  it up with a credit or debit card, and do live penny tests (payments for a minimal amount).<\/li>\n<li>View the details of your Alipay+ test payments in your <a href=\"https:\/\/ca-live.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">live Customer Area<\/a> &gt; <strong>Payments<\/strong> &gt; <strong>Payment list<\/strong>.\n<p><\/p><\/li>\n<\/ol>\n<p>Before you can accept live Alipay+ payments, you need to submit a request for Alipay in your <a href=\"https:\/\/ca-live.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">live Customer Area<\/a>.<\/p>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=API%20only\"\n                        target=\"_self\"\n                        >\n                    API-only integration guide\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/payment-methods\/alipay-plus\/api-only","articleFields":{"description":"Add Alipay+ to your API only integration.","never_cache_twig":true,"parameters":{"flow":"Advanced","integration_guide_url":"\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&integration=API%20only","payment_method":"Alipay+","payment_method_type":"alipay_plus","payment_method_type_capitalized":"Alipay_plus","tx_variant":"alipay_plus","tx_variant_capitalized":"Alipay_plus","country_codes":"<strong>AT<\/strong>, <strong>AU<\/strong>, <strong>BE<\/strong>, <strong>CA<\/strong>, <strong>CH<\/strong>, <strong>CN<\/strong>, <strong>CY<\/strong>, <strong>CZ<\/strong>, <strong>DE<\/strong>, <strong>DK<\/strong>, <strong>EE<\/strong>, <strong>ES<\/strong>, <strong>FI<\/strong>, <strong>FR<\/strong>, <strong>GB<\/strong>, <strong>GR<\/strong>, <strong>HK<\/strong>, <strong>HU<\/strong>, <strong>IE<\/strong>, <strong>IS<\/strong>, <strong>IT<\/strong>, <strong>JP<\/strong>, <strong>LI<\/strong>, <strong>LT<\/strong>, <strong>LU<\/strong>, <strong>LV<\/strong>, <strong>MT<\/strong>, <strong>MY<\/strong>, <strong>NL<\/strong>, <strong>NO<\/strong>, <strong>NZ<\/strong>, <strong>PL<\/strong>, <strong>PT<\/strong>, <strong>RO<\/strong>, <strong>SE<\/strong>, <strong>SG<\/strong>, <strong>SI<\/strong>, <strong>SK<\/strong>, <strong>US<\/strong>","currency_codes":"<strong>AED<\/strong>, <strong>AUD<\/strong>, <strong>CAD<\/strong>, <strong>CHF<\/strong>, <strong>CNY<\/strong>, <strong>CZK<\/strong>, <strong>DKK<\/strong>, <strong>EUR<\/strong>, <strong>GBP<\/strong>, <strong>HKD<\/strong>, <strong>JPY<\/strong>, <strong>MYR<\/strong>, <strong>NOK<\/strong>, <strong>NZD<\/strong>, <strong>SEK<\/strong>, <strong>SGD<\/strong>, <strong>USD<\/strong>","additional_api":"true","api_version":"none","action_type":"<strong>redirect<\/strong>","pm_directory":"alipay-plus","contact":"false"}},"algolia":{"url":"https:\/\/docs.adyen.com\/payment-methods\/alipay-plus\/api-only","title":"Alipay+ for API only","content":"You can add Alipay+ to your existing integration. The following instructions show only what you must add to your integration specifically for Alipay+.\nIf an instruction on this page corresponds with a step in the main integration guide, it includes a link to corresponding step of the main integration guide.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have an existing API-only integration.\n \n\n\nRedirect handling\nMake sure that your existing integration is set up to handle the redirect.   action.type: redirect.\n\n\n\nSetup steps\n Before you begin, add Alipay+ in your Customer Area. \n\n\n\nHow it works\n\nThe shopper selects Alipay+ as payment method.\nThe shopper then selects their preferred wallet that is included with Alipay+.\nThe shopper enters their details in the payment form that you build, if applicable.\nWhen you make the payment request, you include additional information about the items that the shopper intends to purchase, if applicable.\nYour existing integration setup will handle the redirect.\n\nBuild your payment form\nInclude Alipay+ in the list of available payment methods. You do not need to collect any additional information from the shopper in your payment form.\n\nYou can download the logo for Alipay+ to use in your form.\n\nGet Alipay+ as an available payment method\nWhen you make the  \/paymentMethods to get available payment methods, specify the following so that Alipay+ is included in the response.\n\n\n\nParameter\nValues\n\n\n\n\n countryCode\nAT, AU, BE, CA, CH, CN, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HK, HU, IE, IS, IT, JP, LI, LT, LU, LV, MT, MY, NL, NO, NZ, PL, PT, RO, SE, SG, SI, SK, US\n\n\n amount.currency\nAED, AUD, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, JPY, MYR, NOK, NZD, SEK, SGD, USD\n\n\n\n\n    \n\n\n    \n\nAdd additional parameters to your \/payments request\nWhen you make a payment, add the following additional parameters:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\n channel\n\nSet to the applicable channel: Web, iOS, or Android\n\n\n browserInfo\n\nInformation about the shopper's browser. Required when channel is Web.\n\n\n\n\n    \n\nThe response includes the action.type: redirect.\n\n    \n\nThe shopper is redirected to the checkout page of Alipay+ where they select their wallet (for example GCash, KakaoPay, TrueMoney, DANA, AlipayHK, or one of the other available wallets).\nHandle the redirect\nAfter the shopper authenticates in their wallet they are redirected back to returnUrl.\nAdyen collects the redirect result value from returnUrl, for example:\n\n    \n\nAdyen then sends the value of redirectResult in the  \/payments\/details request:\n\n    \n\n\npaymentData - contains the value from the original  \/payments response. (When using Drop-in or the sessions flow it is handled automatically.)\n\n\n    \n\nIt is important to note that the value for paymentMethod.type is now alipay_plus_gcash, which reflects the specific wallet the shopper used (in this example, GCash).\nThe original payment request used alipay_plus (the generic aggregator type). The resolved paymentMethod.type is only known after the shopper authenticates in their selected wallet app.\nWebhook notification\nAdyen sends an AUTHORISATION notification after the payment is processed. The paymentMethod field in the notification reflects the actual wallet used, not the generic alipay_plus.\n\n    \n\nThe paymentMethod value for each wallet\nAlipay+ is a super-app aggregator that supports multiple wallets.\nFor that reason, the paymentMethod value in the notification (and in the  \/payments\/details response) is based on the shopper's wallet selection.\n\n\n\nWallet selected by shopper\nMarket\npaymentMethod value\n\n\n\n\nAlipay\nChina\nalipay_plus_alipay_cn\n\n\nAlipayHK\nHong Kong\nalipay_plus_alipay_hk\n\n\nDANA\nIndonesia\nalipay_plus_dana\n\n\nGCash\nPhilippines\nalipay_plus_gcash\n\n\nKakao Pay\nSouth Korea\nalipay_plus_kakaopay\n\n\nKPlus\nThailand\nalipay_plus_kplus\n\n\nNaver Pay\nSouth Korea\nalipay_plus_naverpay\n\n\nRabbit LINE Pay\nThailand\nalipay_plus_rabbitlinepay\n\n\nTouch 'n Go eWallet\nMalaysia\nalipay_plus_touchngo\n\n\nToss\nSouth Korea\nalipay_plus_tosspay\n\n\nTrueMoney\nThailand\nalipay_plus_truemoney\n\n\n\nInitial  \/payments requests always use alipay_plus (the generic type). The resolved wallet-specific type only appears in the notification and in the  \/payments\/details response, after the shopper completed authentication in their selected wallet app.\nKey implementation notes\nMake sure that your implementation adheres to the following:\n\nInitiate a payment with alipay_plus. Always send paymentMethod.type: alipay_plus in  \/payments. Do not attempt to pre-select a specific wallet via the paymentMethod.type parameter.\nMonitor notifications by wallet type. Use paymentMethod in the webhook to identify revenue per wallet. This is useful for reporting and reconciliation.\nAlipay+ uses the redirect flow. Your frontend must call  \/payments\/details and include the redirectResult after the shopper returns.\nTokenization (storePaymentMethod: true) is not currently supported for Alipay+. Requests with this parameter set to true will fail validation.\nAlways send browserInfo when channel is set to Web.\n\nHow to use channel and browserInfo\nAdyen uses channel and browserInfo.userAgent to determine the shopper's platform context, which controls which wallet entry points are available during the redirect.\nThe shopper contexts are:\n\n\n\nContext\nTypical scenario\n\n\n\n\nDesktop browser\nchannel: Web with a desktop user agent\n\n\nMobile browser\nchannel: Web with a mobile user agent\n\n\nIn-app (webview)\nchannel: iOS or channel: Android\n\n\n\nAlipay+ uses the redirect flow. When channel is set to iOS or Android, Adyen redirects the shopper to a mobile-optimized hosted page that attempts to deep-link or auto-switch into the wallet app, if supported. There is no native SDK integration.\nIf you send the incorrect channel value - for example, you send Web for an in-app webview - it can result in the shopper being offered an incompatible redirect experience.\nFor browserInfo, use values collected from the shopper's browser at the time of checkout.\nFor native iOS and Android apps:\n\nchannel - set to iOS or Android, not Web\nbrowserInfo - not required\n\nTest and go live\nThere is no test environment for Alipay+.\nWe recommend doing live penny tests:\n\nGet an Alipay+ wallet app, set  it up with a credit or debit card, and do live penny tests (payments for a minimal amount).\nView the details of your Alipay+ test payments in your live Customer Area &gt; Payments &gt; Payment list.\n\n\nBefore you can accept live Alipay+ payments, you need to submit a request for Alipay in your live Customer Area.\nSee also\n\n\n                    API-only integration guide\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Payment methods","lvl2":"Alipay+","lvl3":"Alipay+ for API only"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/payment-methods","lvl2":"https:\/\/docs.adyen.com\/payment-methods\/alipay-plus","lvl3":"\/payment-methods\/alipay-plus\/api-only"},"levels":4,"category":"Payment method","category_color":"green","tags":["Alipay+"]},"articleFiles":{"payment-methods-request.js":"<p alt=\"\">payment-methods-request.js<\/p>","payment-methods-response.json":"<p alt=\"\">payment-methods-response.json<\/p>","payments-response.json":"<p alt=\"\">payments-response.json<\/p>"}}
