Guides

PayPal Button

PayPal Button is a JavaScript library from Datatrans that facilitates the setup, rendering, and usage of PayPal buttons (PayPal, PayPal Pay Later). It acts as a wrapper of both the Datatrans PayPal integration and the PayPal JS SDK and implements all required operations for checkout with PayPal directly from the merchant checkout page.

Process overview

To start a transaction via our Payment Button Integration, you will need to initialize the Payment Button Javascript library and wait for your customer to hit the button provided by the library ¹. We will call your webhook once the transaction has been completed ² and inform your front end again once a transaction has been finalized ³.

PayPal Button integration

To get started, include our PayPal Button script on your web page.

<script src="https://pay.sandbox.datatrans.com/upp/payment/js/paypal-button-1.0.0.js" type="text/javascript"></script>

Next, you'll want to initialize the PayPal button. Within PayPalButton.init(), you define various options for script initialization, including the merchantId, the currency, the amount, the settlement option, the option to enable PayPal Pay Later, and whether you want to save a PayPal wallet as a token or not.

You also need to configure various button options, such as the layout, color, shape, and label of your PayPal button. The full list of the available button options is documented here. Make sure to change the refno to a unique value for each transaction.

PayPalButton.init({
  merchantId: '{merchantId}',
  currencyCode: 'CHF',
  amount: '100',
  autoSettle: false,
  createAlias: false,
  reqType: 'CAA'
});

const configuration = {
 paypaloptions: {
   button: {
    layout: 'vertical',
    color: 'blue',
    shape: 'rect',
    label: 'paypal'
   }
  }, 
  transaction: { 
   refno: {{reference}},
   authenticationOnly: false,
   returnAddress: true 
  }
}

Placing the PayPal Button

Handle the creation of the PayPal button by passing a HTML object and your previously defined configuration.

PayPalButton.on("init", function () {
  PayPalButton.create(document.getElementById('paypalbutton'), configuration)
});

Success

Listen for the authorization event of the PayPalButton.on() call.

PayPalButton.on("authorization", function (data) {
  // handle transaction result
});

Webhook

After processing any transaction via our PayPal Button integration, we will call your webhook with all relevant transaction information. You can define your webhook URL within your merchant configuration. Any server-to-server request to modify an existing transaction has to be made with our transactionId. Please refer to our page After The Payment for more information on actions you can make after a payment has been completed.

Within our Payment Button integration, your webhook will always be called asynchronously after completing a transaction. We only try to call your webhook once. If it fails, no additional calls will be performed.

Showcase & more

For a detailed sample, you can visit our PayPal Button showcase. All events and parameters are explained there in detail too.


\n```\n\nNext, you'll want to initialize the PayPal button. Within `PayPalButton.init()`, you define various options for script initialization, including the merchantId, the currency, the amount, the settlement option, the option to enable PayPal Pay Later, and whether you want to save a PayPal wallet as a token or not. \n\nYou also need to configure various button options, such as the layout, color, shape, and label of your PayPal button. The full list of the available button options is documented [here](https://developer.paypal.com/sdk/js/reference/#buttons). Make sure to change the refno to a unique value for each transaction.\n\n```javascript PayPalButton init\nPayPalButton.init({\n merchantId: '{merchantId}',\n currencyCode: 'CHF',\n amount: '100',\n autoSettle: false,\n createAlias: false,\n reqType: 'CAA'\n});\n\nconst configuration = {\n paypaloptions: {\n button: {\n layout: 'vertical',\n color: 'blue',\n shape: 'rect',\n label: 'paypal'\n }\n }, \n transaction: { \n refno: {{reference}},\n authenticationOnly: false,\n returnAddress: true \n }\n}\n```\n\n# Placing the PayPal Button\n\nHandle the creation of the PayPal button by passing a HTML object and your previously defined configuration.\n\n```javascript PayPalButton on\nPayPalButton.on(\"init\", function () {\n PayPalButton.create(document.getElementById('paypalbutton'), configuration)\n});\n```\n\n# Success\n\nListen for the `authorization` event of the `PayPalButton.on()` call.\n\n```javascript\nPayPalButton.on(\"authorization\", function (data) {\n // handle transaction result\n});\n```\n\n# Webhook\n\nAfter processing any transaction via our PayPal Button integration, we will call your webhook with all relevant transaction information. You can define your webhook URL within your merchant configuration. Any server-to-server request to modify an existing transaction has to be made with our `transactionId`. Please refer to our page [After The Payment](doc:after-the-payment) for more information on actions you can make after a payment has been completed. \n\nWithin our Payment Button integration, your webhook will always be called asynchronously after completing a transaction. We only try to call your webhook once. If it fails, no additional calls will be performed.\n\n# Showcase & more\n\nFor a detailed sample, you can visit our [PayPal Button showcase](https://datatrans.github.io/datatrans-paypal-button). All events and parameters are explained there in detail too.","dehydrated":{"toc":"","body":"

PayPal Button is a JavaScript library from Datatrans that facilitates the setup, rendering, and usage of PayPal buttons (PayPal, PayPal Pay Later). It acts as a wrapper of both the Datatrans PayPal integration and the PayPal JS SDK and implements all required operations for checkout with PayPal directly from the merchant checkout page.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\"\"
\"\"
\"\"
\"\"
\"\"
\"\"
\"\"
\"\"
\n

Process overview

\n

To start a transaction via our Payment Button Integration, you will need to initialize the Payment Button Javascript library and wait for your customer to hit the button provided by the library ¹. We will call your webhook once the transaction has been completed ² and inform your front end again once a transaction has been finalized ³.

\n
\n

PayPal Button integration

\n

To get started, include our PayPal Button script on your web page.

\n
<script src="https://pay.sandbox.datatrans.com/upp/payment/js/paypal-button-1.0.0.js" type="text/javascript"></script>\n
\n

Next, you'll want to initialize the PayPal button. Within PayPalButton.init(), you define various options for script initialization, including the merchantId, the currency, the amount, the settlement option, the option to enable PayPal Pay Later, and whether you want to save a PayPal wallet as a token or not.

\n

You also need to configure various button options, such as the layout, color, shape, and label of your PayPal button. The full list of the available button options is documented here. Make sure to change the refno to a unique value for each transaction.

\n
PayPalButton.init({\n  merchantId: '{merchantId}',\n  currencyCode: 'CHF',\n  amount: '100',\n  autoSettle: false,\n  createAlias: false,\n  reqType: 'CAA'\n});\n\nconst configuration = {\n paypaloptions: {\n   button: {\n    layout: 'vertical',\n    color: 'blue',\n    shape: 'rect',\n    label: 'paypal'\n   }\n  }, \n  transaction: { \n   refno: {{reference}},\n   authenticationOnly: false,\n   returnAddress: true \n  }\n}\n
\n

Placing the PayPal Button

\n

Handle the creation of the PayPal button by passing a HTML object and your previously defined configuration.

\n
PayPalButton.on("init", function () {\n  PayPalButton.create(document.getElementById('paypalbutton'), configuration)\n});\n
\n

Success

\n

Listen for the authorization event of the PayPalButton.on() call.

\n
PayPalButton.on("authorization", function (data) {\n  // handle transaction result\n});\n
\n

Webhook

\n

After processing any transaction via our PayPal Button integration, we will call your webhook with all relevant transaction information. You can define your webhook URL within your merchant configuration. Any server-to-server request to modify an existing transaction has to be made with our transactionId. Please refer to our page After The Payment for more information on actions you can make after a payment has been completed.

\n

Within our Payment Button integration, your webhook will always be called asynchronously after completing a transaction. We only try to call your webhook once. If it fails, no additional calls will be performed.

\n

Showcase & more

\n

For a detailed sample, you can visit our PayPal Button showcase. All events and parameters are explained there in detail too.

"},"mdx":false,"opts":{"alwaysThrow":false,"compatibilityMode":false,"copyButtons":true,"correctnewlines":false,"markdownOptions":{"fences":true,"commonmark":true,"gfm":true,"ruleSpaces":false,"listItemIndent":"1","spacedTable":true,"paddedTable":true},"normalize":true,"lazyImages":true,"reusableContent":{"tags":{}},"safeMode":false,"settings":{"position":true},"theme":"light","customBlocks":{},"resourceID":"6380d7490916b5083219663d","resourceType":"page","baseUrl":"/","terms":[{"_id":"5af0288f47537800035e5851","term":"uppTransactionId","definition":"The transactionId parameter returned after a payment/registration."},{"_id":"5af029abdf4a8800031c71e8","term":"aliasCC","definition":"An alias of a payment method."},{"_id":"5c6d11162f76cb00139600df","term":"CIT","definition":"Cardholder initiated transaction"},{"_id":"5c6d112fa96ba90033cb426b","term":"MIT","definition":"Merchant initiated transaction"}],"variables":{"user":{},"defaults":[{"_id":"5bbf565ceb416300039a2529","name":"apiReferenceUrl","default":"https://admin.sandbox.datatrans.com/d3574c10-d317-4f6b-82f5-ebc7c2d685af/api-reference/","source":"","type":""},{"_id":"5bbf565ceb416300039a2528","name":"","default":"","source":"","type":""}]}},"terms":[{"_id":"5af0288f47537800035e5851","term":"uppTransactionId","definition":"The transactionId parameter returned after a payment/registration."},{"_id":"5af029abdf4a8800031c71e8","term":"aliasCC","definition":"An alias of a payment method."},{"_id":"5c6d11162f76cb00139600df","term":"CIT","definition":"Cardholder initiated transaction"},{"_id":"5c6d112fa96ba90033cb426b","term":"MIT","definition":"Merchant initiated transaction"}],"variables":{"user":{},"defaults":[{"_id":"5bbf565ceb416300039a2529","name":"apiReferenceUrl","default":"https://admin.sandbox.datatrans.com/d3574c10-d317-4f6b-82f5-ebc7c2d685af/api-reference/","source":"","type":""},{"_id":"5bbf565ceb416300039a2528","name":"","default":"","source":"","type":""}]}},"doc":{"metadata":{"image":[],"title":"","description":"","keywords":"","robots":"index"},"mdx":{"altBody":"","status":"rdmd"},"api":{"method":"get","url":"","auth":"required","results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"params":[],"examples":{"codes":[]}},"next":{"description":"","pages":[]},"algolia":{"publishPending":false,"recordCount":7,"updatedAt":"2024-05-08T12:45:32.526Z","translationFailure":false},"_id":"6380d7490916b5083219663d","title":"PayPal Button","icon":"","updates":[],"type":"basic","slug":"paypal-button","excerpt":"","body":"PayPal Button is a JavaScript library from Datatrans that facilitates the setup, rendering, and usage of PayPal buttons (PayPal, PayPal Pay Later). It acts as a wrapper of both the Datatrans PayPal integration and the [PayPal JS SDK](https://developer.paypal.com/sdk/js/) and implements all required operations for checkout with PayPal directly from the merchant checkout page.\n\n| | | | |\n| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|
|
|
|
|\n\n# Process overview\n\nTo start a transaction via our Payment Button Integration, you will need to _initialize the Payment Button Javascript library_ and wait for your customer to hit the button provided by the library ¹. We will _call your webhook_ once the transaction has been completed ² and _inform your front end_ again once a transaction has been finalized ³.\n\n[block:html]\n{\n \"html\": \"\"\n}\n[/block]\n\n\n# PayPal Button integration\n\nTo get started, include our PayPal Button script on your web page.\n\n```javascript Link our script\n\n```\n\nNext, you'll want to initialize the PayPal button. Within `PayPalButton.init()`, you define various options for script initialization, including the merchantId, the currency, the amount, the settlement option, the option to enable PayPal Pay Later, and whether you want to save a PayPal wallet as a token or not. \n\nYou also need to configure various button options, such as the layout, color, shape, and label of your PayPal button. The full list of the available button options is documented [here](https://developer.paypal.com/sdk/js/reference/#buttons). Make sure to change the refno to a unique value for each transaction.\n\n```javascript PayPalButton init\nPayPalButton.init({\n merchantId: '{merchantId}',\n currencyCode: 'CHF',\n amount: '100',\n autoSettle: false,\n createAlias: false,\n reqType: 'CAA'\n});\n\nconst configuration = {\n paypaloptions: {\n button: {\n layout: 'vertical',\n color: 'blue',\n shape: 'rect',\n label: 'paypal'\n }\n }, \n transaction: { \n refno: {{reference}},\n authenticationOnly: false,\n returnAddress: true \n }\n}\n```\n\n# Placing the PayPal Button\n\nHandle the creation of the PayPal button by passing a HTML object and your previously defined configuration.\n\n```javascript PayPalButton on\nPayPalButton.on(\"init\", function () {\n PayPalButton.create(document.getElementById('paypalbutton'), configuration)\n});\n```\n\n# Success\n\nListen for the `authorization` event of the `PayPalButton.on()` call.\n\n```javascript\nPayPalButton.on(\"authorization\", function (data) {\n // handle transaction result\n});\n```\n\n# Webhook\n\nAfter processing any transaction via our PayPal Button integration, we will call your webhook with all relevant transaction information. You can define your webhook URL within your merchant configuration. Any server-to-server request to modify an existing transaction has to be made with our `transactionId`. Please refer to our page [After The Payment](doc:after-the-payment) for more information on actions you can make after a payment has been completed. \n\nWithin our Payment Button integration, your webhook will always be called asynchronously after completing a transaction. We only try to call your webhook once. If it fails, no additional calls will be performed.\n\n# Showcase & more\n\nFor a detailed sample, you can visit our [PayPal Button showcase](https://datatrans.github.io/datatrans-paypal-button). All events and parameters are explained there in detail too.","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"pendingAlgoliaPublish":false,"previousSlug":"","slugUpdatedAt":"2022-11-25T10:34:27.027Z","revision":27,"createdAt":"2022-11-25T14:55:05.981Z","updatedAt":"2024-05-08T12:45:32.534Z","user":"5c2f4a200a4b2c0063a07426","category":{"_id":"62c8500880e0a700815c320f","project":"5a1288ecf49d120012dff9be","version":"62c8500880e0a700815c323c","isAPI":false,"reference":false,"createdAt":"2017-11-20T09:40:08.499Z","from_sync":false,"order":2,"slug":"integrations","title":"Integrations","__v":0,"type":"guide","id":"62c8500880e0a700815c320f"},"project":"5a1288ecf49d120012dff9be","version":{"pdfStatus":"","source":"readme","_id":"62c8500880e0a700815c323c","version":"2.1.0","version_clean":"2.1.0","codename":"New Design","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62c8500880e0a700815c320d","62c8500880e0a700815c320e","62c8500880e0a700815c320f","5a12a302b57953001cecd09a","62c8500880e0a700815c3210","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","62c8500880e0a700815c3211","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","62c8500880e0a700815c3212","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","62c8500880e0a700815c3213","6376b41d081e400003bac19e"],"project":"5a1288ecf49d120012dff9be","__v":0,"forked_from":"5ec3d8681838e90012269216","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z","apiRegistries":[]},"__v":1,"parentDoc":null,"lastUpdatedHash":"a56a6aeed1da33b2e5cef237b16dafa875197b69","reusableContent":[],"isApi":false,"tutorials":[],"id":"6380d7490916b5083219663d"},"hideTOC":true,"meta":{"_id":"6380d7490916b5083219663d","description":"PayPal Button is a JavaScript library from Datatrans that facilitates the setup, rendering, and usage of PayPal buttons (PayPal, PayPal Pay Later). It acts as a wrapper of both the Datatrans PayPal integration and the PayPal JS SDK and implements all required operations for checkout with PayPal dire...","hidden":false,"image":[],"keywords":"","metaTitle":"PayPal Button","parent":null,"robots":"index","slug":"paypal-button","title":"PayPal Button","type":"docs"},"slugUrl":"/docs/paypal-button","config":{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"dc8065a65ef83d6ad23e37aaf014fc84","enabled":true},"asset_url":"https://cdn.readme.io","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2025-03-27","fullstory":{"enabled":true,"orgId":"FSV9A"},"liveblocks":{"copilotId":"co_11Q0l0JJlkcBhhAYUFh8s"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.421.0","sentry":{"dsn":"https://3bbe57a973254129bcb93e47dc0cc46f@o343074.ingest.sentry.io/2052166","enabled":true},"shMigration":{"promoVideo":"","forceWaitlist":false,"migrationPreview":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","stripePk":"pk_live_5103PML2qXbDukVh7GDAkQoR4NSuLqy8idd5xtdm9407XdPR6o3bo663C1ruEGhXJjpnb2YCpj8EU1UvQYanuCjtr00t1DRCf2a","superHub":{"newProjectsEnabled":true},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}},"context":{"labs":{},"user":{},"terms":[{"_id":"5af0288f47537800035e5851","term":"uppTransactionId","definition":"The transactionId parameter returned after a payment/registration."},{"_id":"5af029abdf4a8800031c71e8","term":"aliasCC","definition":"An alias of a payment method."},{"_id":"5c6d11162f76cb00139600df","term":"CIT","definition":"Cardholder initiated transaction"},{"_id":"5c6d112fa96ba90033cb426b","term":"MIT","definition":"Merchant initiated transaction"}],"variables":{"user":{},"defaults":[{"_id":"5bbf565ceb416300039a2529","name":"apiReferenceUrl","default":"https://admin.sandbox.datatrans.com/d3574c10-d317-4f6b-82f5-ebc7c2d685af/api-reference/","source":"","type":""},{"_id":"5bbf565ceb416300039a2528","name":"","default":"","source":"","type":""}]},"project":{"_id":"5a1288ecf49d120012dff9be","appearance":{"nextStepsLabel":"","hideTableOfContents":true,"showVersion":false,"html_hidelinks":false,"html_footer_meta":"","html_head":"","html_footer":"","html_body":"","html_promo":"","javascript_hub2":"var paramsBlackList = [\"$formController\",\"version\",\"uppWebResponseMethod\", \"uppMsgType\", \"uppReturnTarget\", \"uppWebResponseMethod\", \"returnCustomerCountry\",\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"merchantId\",\"authorizationCode\", \"responseCode\",\"expy\",\"acqAuthorizationCode\",\"reqtype\",\"expm\",\"pmethod\",\"theme\",\"testOnly\"];\nfunction getQueryParameters(str) {\n \tif(document.location.search == \"\"){\n return (document.location.href).substring(document.location.href.indexOf(\"?\"),document.location.href.length)\n .replace(/(^\\?)/,'')\n .split(\"&\")\n .reduce(function(p,n) {\n return n = n.split(\"=\"), p[n[0]] = n[1], p;\n }, {} );\n }else{\n return (document.location.search)\n .replace(/(^\\?)/,'') \n .split(\"&\")\n .reduce(function(p,n) {\n return n = n.split(\"=\"), p[n[0]] = n[1], p;\n }, {} );\n }\n \n}\n \nfunction hasReturnParams(){\n\tif(window.location.toString().indexOf(\"?\") > 0){\n if(!window.location.toString().includes(\"utm_source\")|| !window.location.toString().includes(\"utm_campaign\") || !window.location.toString().includes(\"utm_content\") || !window.location.toString().includes(\"utm_term\")){\n \treturn true;\n }\n \n }\n \n return false;\n}\n\nfunction escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n }\n\nfunction addParamsToForm(params, formId){\n $.each( params, function( key, value ) {\n $('').attr({\n type: 'hidden',\n name: key,\n value: value\n \t}).appendTo(\"#\"+formId);\n\t});\n \n $.each($(\"#paymentForm\").data(),function(key,value){\n $('').attr({\n type: 'hidden',\n name: key,\n value: value\n \t}).appendTo(\"#\"+formId);\n });\n}\nif (window.location.href.indexOf(\"docs/redirect-lightbox\") > -1) { \n $(window).on('pageLoad',function(){\n \t\tif(hasReturnParams()){\n var successParams = \"\";\n var params = getQueryParameters();\n var typeClass = \"type-danger\"\n var message = \" Your transaction failed.\"\n var titleIcon = \"Danger\";\n var iconClass = \"fa-exclamation-triangle\"\n for (var key in params) {\n if(key == \"status\"){\n \tif(params[key] == \"success\"){\n \ttypeClass =\"type-success\";\n titleIcon =\"Success\"\n iconClass =\"fa-check-square\"\n \t\t\tmessage = \" Your transaction was successful.\"\n }\n }\n if(key == \"status\"){\n \tif(params[key] == \"cancel\"){\n \t\t\tmessage = \" Your transaction was canceled.\"\n }\n }\n if(paramsBlackList.indexOf(key) < 0){\n \t\t\t\t \tsuccessParams += key +\"=\"+ escapeHtml(decodeURIComponent(params[key])) + \"
\";\n\t\t\t\t }\n }\n if(successParams.length > 1){\n $(\"

\"+message+\"

\").prependTo(\"#content-container .content-body\")\n window.history.replaceState(null, null, window.location.pathname);\n }\n }\n });\n}\n\n// Redirect Function\nfunction redirect() {\n initializeTransaction('https://api.sandbox.datatrans.com/v1/transactions', getPayload())\n .then(data => { \n window.location.href = \"https://pay.sandbox.datatrans.com/v1/start/\" + data.transactionId;\n });\n}\n\n// Lightbox Function\nfunction startPayment() {\n initializeTransaction('https://api.sandbox.datatrans.com/v1/transactions', getPayload())\n .then(data => { \n Datatrans.startPayment({\n transactionId: data.transactionId\n });\n });\n}\nfunction lightbox() {\n const scriptSource = 'https://pay.sandbox.datatrans.com/upp/payment/js/datatrans-2.0.0.min.js';\n\n if (document.querySelector('script[src=\"' + scriptSource + '\"]')) {\n startPayment();\n return;\n }\n\n const script = document.createElement('script');\n script.src = scriptSource;\n script.onload = () => {\n startPayment();\n }\n\n document.body.appendChild(script);\n}\n\n// Get Payload Function\nfunction getPayload() { \t\n var url = window.location.href.split('?')[0];\n var successUrl = url + '?status=success';\n var cancelUrl = url + '?status=cancel';\n var errorUrl = url + '?status=error';\n var refno = new Date().getTime();\n\n var payload = {\n redirect: {\n successUrl: successUrl,\n errorUrl: errorUrl,\n cancelUrl: cancelUrl\n }, \n refno: refno,\n amount: 2000,\n currency: \"CHF\"\n }\n \n return payload;\n}\n\n// Initialize Transaction via CORS - You have to do this part on your server. Don't call our init endpoint from the client side. It won't work (CORS). It only works from the browser for this demo.\nasync function initializeTransaction(url = '', data = {}) {\n const response = await fetch(url, {\n method: 'POST', \n headers: { \n \"Content-Type\": 'application/json;charset=utf-8',\n \"Authorization\": 'Basic MTEwMDAyNTgzNTozY29mTjNNeFhhQkg3VWw4'\n },\n body: JSON.stringify(data)\n });\n return await response.json(); \n}\n\n// Deprecated Docs\nfunction openNewDocs() {\n var docs = \"https://docs.datatrans.ch/docs\"\n window.location.href = docs;\n};\nfunction openOldApiRef() {\n var apiref = \"https://api-reference.datatrans.ch/xml\"\n window.location.href = apiref;\n};\n\n// Unwrap away from an element\nfunction unwrap(el) {\n if (el && el.parentNode) {\n // move all children out of the element\n while (el.firstChild) {\n el.parentNode.insertBefore(el.firstChild, el);\n }\n // remove the empty element\n el.remove();\n }\n}\n\n// Remove gallery on images\nvar imageContainer1, imageContainer2, imageContainerLength;\n\nasync function removeLightbox() {\n imageContainer1 = document.getElementsByClassName(\"lightbox-inner\");\n imageContainer2 = document.getElementsByClassName(\"img lightbox closed\");\n imageContainerLength = imageContainer1.length;\n \n for (i = 0; i < imageContainerLength; i++) {\n unwrap(imageContainer1[0]);\n unwrap(imageContainer2[0]);\n };\n}\n\nwindow.addEventListener('DOMContentLoaded', (event) => {\n setTimeout(() => {\n\t\tremoveLightbox();\n }, \"500\")\n});\n\nvar oldLocation = location.href;\nsetInterval(function() {\n if(location.href != oldLocation) {\n removeLightbox();\n oldLocation = location.href\n }\n}, 500); // check every second","javascript":"","stylesheet_hub2":":root {\n --DTBlack: #000000;\n --DTBlackRgb: 0, 0, 0;\n --DTWhite: #FFFFFF;\n --DTWhiteRgb: 255, 255, 255;\n --DTSecondary: #ff0096;\n --DTSecondaryRgb: 255, 0, 150;\n --DTMain: #000000;\n --DTMainRgb: 33, 61, 98;\n --DTLightGrey: #F2F4F7;\n --DTLightGreyRgb: 242, 244, 247;\n --DTCodeGrey: #EAEAEA;\n --DTCodeGreyRgb: 234, 234, 234;\n --DTSecondaryLight: #ffa8db;\n --DTSecondaryLightRgb: 255, 168, 219;\n --DTGrey: #747474;\n --DTGreyRgb: 116, 116, 116;\n --DTError: #E6777E;\n --DTErrorRgb: 230, 119, 126;\n}\n\n.rm-Guides #content-head {\n border-bottom: none;\n padding-bottom: 15px;\n}\n\n.rm-Header-search {\n\tmargin-top: -24px;\n}\n\n.rm-Markdown {\n\tmargin-bottom: 30px;\n}\n@media (min-width: 769px) {\n div[class*=\"Header-bottom\"] {\n margin-top: -40px;\n margin-left: -50px;\n overflow: visible;\n }\n .rm-Header-top {\n \tz-index: 0;\n }\n}\n@media (max-width: 768px) {\n\tdiv[class*=\"Header-left_mobile\"] {\n \tdisplay: none;\n }\n .rm-Header-top {\n \tdisplay: none;\n }\n}\n\ndiv[class*=\"SearchTabs\"], nav[class*=\"Header-left\"], .UpdatedAt, .PageThumbs {\n display: none;\n}\n\n.App .rm-Container_flex {\n\tjustify-content: flex-end;\n}\n\n.rm-Guides #content-head h1 {\n\tfont-size: 2.7em;\n}\n\n.heading.heading-2 {\n\tmargin-top: 40px;\n}\n\n.heading-text {\n font-size: 1.2em;\n}\n\n.rm-Guides .rm-Article {\n\tpadding-top: 50px !important;\n}\n\n.useReactApp .rm-Logo-img {\n \t\twidth: auto !important;\n}\n\n/* Custom DT Table */\n.dt-table-cell-header {\n padding: 8px 4px;\n font-size: 18px;\n font-weight: 500;\n \tmin-height: 70px;\n}\n\n.dt-table-cell-body {\n padding: 5px 0 10px 5px;\n}\n\n.dt-table-cell-icon {\n height: 30px;\n width: auto;\n padding-right: 5px;\n}\n\n.dt-center {\n text-align: center;\n vertical-align: middle;\n}\n\n.dt-spacer {\n width: 100%;\n height: 10px;\n}\n\n\n/* DT Icons */\n.dt-payment-method-logo {\n max-height: 80px !important;\n max-width: 120px !important;\n}\n\n.dt-mobile-sdk-os-icon {\n max-height: 120px !important;\n max-width: 120px !important;\n}\n\n.dt-threed-version-icon {\n height: 20px;\n width: auto;\n padding: 0 5px 0 0;\n}\n\n.dt-status-wrapper {\n margin-top: -30px;\n}\n\n.dt-status-icon {\n height: 30px;\n width: auto;\n}\n\n@media only screen and (min-width: 850px) {\n .dt-status-wrapper {\n margin-top: -40px;\n }\n\n .dt-status-icon {\n margin: -75px 0 0 0;\n }\n\n .dt-status-icon.dt-status-icon-beta.marketplace {\n padding: 0 0 0 450px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.split-authorizations {\n padding: 0 0 0 390px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.sign {\n padding: 0 0 0 100px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.xml-response-codes {\n padding: 0 0 0 410px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.payment-link {\n padding: 0 0 0 270px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.mobile-sdk-old {\n padding: 0 0 0 230px;\n }\n\n .dt-status-icon.dt-status-icon-new.mobile-sdk {\n padding: 0 0 0 230px;\n }\n}\n\n.dt-docs-image {\n max-width: 95% !important;\n}\n\n/* Datatrans Buttons */\n.double-button {\n transition: box-shadow 0.4s ease;\n display: inline-flex;\n height: 50px;\n width: 300px;\n background: rgba(var(--DTSecondaryRgb), 1) none repeat scroll 0% 0% / auto padding-box border-box;\n border-radius: 4px;\n overflow: hidden;\n box-shadow: none;\n}\n\n.double-button a {\n\ttext-decoration: none !important;\n}\n\n.double-button:hover {\n box-shadow: 0 8px 16px 0 rgba(var(--DTBlackRgb), .16), 0 2px 6px 0 rgba(var(--DTBlack), .08);\n transition: box-shadow 0.4s ease;\n}\n\n#left-div,\n#right-div {\n height: 50px;\n width: 150px;\n position: relative;\n}\n\n#right-div:before {\n content: '';\n height: 50px;\n width: 188.703px;\n position: absolute;\n transform: matrix(1, 0, -0.176327, 1, 0, 0);\n transform-origin: 94.3516px 25px;\n background: rgba(var(--DTMain), 1) none repeat scroll 0% 0% / auto padding-box border-box;\n}\n\n.button-link {\n display: block;\n position: relative;\n padding: 17px 24px 16px;\n font: normal normal 600 normal 17px / 17px \"TT Commons Medium\", \"Helvetica Neue\", Helvetica, Arial;\n text-decoration: none;\n color: var(--DTWhite);\n text-align: center;\n}\n\n.button-link:hover {\n text-decoration: none;\n color: var(--DTWhite);\n}\n\n.single-button {\n transition: box-shadow 0.4s ease;\n display: inline-flex;\n height: 50px;\n width: 150px;\n background: rgb(var(--DTSecondaryRgb)) none repeat scroll 0% 0% / auto padding-box border-box;\n border-radius: 4px;\n overflow: hidden;\n box-shadow: none;\n}\n\n.single-button:not(:disabled):active {\n background-color: var(--DTSecondaryLight);\n}\n\n.single-button:hover {\n box-shadow: 0 8px 16px 0 rgba(var(--DTBlackRgb), .16), 0 2px 6px 0 rgba(var(--DTBlack), .08);\n transition: box-shadow 0.4s ease;\n}\n\n#single-div {\n height: 50px;\n width: 150px;\n position: relative;\n}\n\n#right-div:before,\n#left-div:before {\n left: 0px;\n transition: left 0.3s ease;\n}\n\n#right-div:hover:before {\n left: -4px;\n}\n\n#left-div:hover:before {\n left: 4px;\n}\n\n#right-div:hover:before {\n left: -4px;\n transition: left 0.3s ease;\n}\n\n#left-div:hover+#right-div:before {\n left: 4px;\n transition: left 0.3s ease;\n}\n\ndiv#right-div {\n background-color: black;\n}","stylesheet":"","favicon":["https://files.readme.io/eec1cd3638e97d5839e8734bf1b2571ed6d2f421296ab66918c8b014329f4965-planet_square_r_black.svg","eec1cd3638e97d5839e8734bf1b2571ed6d2f421296ab66918c8b014329f4965-planet_square_r_black.svg",150,150,"#000000","67bc7c2fd668920036d57631"],"logo_white_use":false,"logo_white":["https://files.readme.io/a1484fd-datatrans-p-white.svg","a1484fd-datatrans-p-white.svg",447,142,"#000000",null,"6481c848280d7115ca27add0"],"logo":["https://files.readme.io/ac52ec007555c057031f27aaffeecd3de07261783c613b899d2b3b83586f29c9-planet_datatrans.svg","ac52ec007555c057031f27aaffeecd3de07261783c613b899d2b3b83586f29c9-planet_datatrans.svg",327,39,"#000000","67bc7bdda3464a38e85306f9"],"promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"The developer.datatrans.com Developer Hub","text":"Welcome to the developer.datatrans.com developer hub. You'll find comprehensive guides and documentation to help you start working with developer.datatrans.com as quickly as possible, as well as support if you get stuck. Let's jump right in!","_id":"5a1288ecf49d120012dff9bf"}],"body":{"style":"none"},"header":{"img_pos":"tl","img_size":"auto","img":[],"style":"solid","linkStyle":"buttons"},"typography":{"tk_body":"","tk_headline":"","tk_key":"","typekit":false,"body":"Open+Sans:400:sans-serif","headline":"Open+Sans:400:sans-serif"},"colors":{"body_highlight":"#000000","header_text":"","main_alt":"","main":"#000000","highlight":"","custom_login_link_color":""},"main_body":{"type":"links"},"categoriesAsDropdown":false,"hide_logo":true,"sticky":false,"landing":true,"overlay":"triangles","notheme":false,"theme":"solid","link_logo_to_url":false,"referenceLayout":"column","childrenAsPills":false,"global_landing_page":{"html":"","redirect":""},"splitReferenceDocs":false,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"subheaderStyle":"links","showMetricsInReference":true,"referenceSimpleMode":true,"stylesheet_hub3":"/* Redesign Updates 4/5/2022 (ERDMAN) */\n .useReactApp .rm-Logo-img {\n width: 124px;\n height: 40px;\n}\n .useReactApp a[href=\"https://testaccount.datatrans.com/testaccounts\"] {\n background-color: #0ecc77;\n border-radius: 3px;\n margin-left: 10px!important;\n box-shadow: 0 -2px 0 0 #0ecc77;\n}\n @media only screen and (max-width: 769px) {\n .rm-Guides #content-head h1 {\n margin-bottom: 0;\n margin-top: 20px !important;\n }\n}","loginLogo":[],"logo_large":true,"colorScheme":"system","changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"allowApiExplorerJsonEditor":false,"ai_dropdown":"disabled","ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","view_as_markdown":"enabled","copilot":"enabled"},"showPageIcons":true,"layout":{"full_width":false,"style":"classic"}},"custom_domain":"docs.datatrans.ch","childrenProjects":[],"derivedPlan":"business","description":"Explore our documentation to find helpful resources and examples to integrate Datatrans. Add Datatrans to your web or mobile application and start accepting online payments. Link our Payment API to offer customer-initiated payments, merchant-initiated payments, and after the payment actions.","isExternalSnippetActive":false,"error404":"404","experiments":[],"first_page":"docs","flags":{"allowImport":false,"stripe":false,"hideGoogleAnalytics":false,"jwt":false,"cookieAuthentication":false,"allowXFrame":false,"speedyRender":false,"correctnewlines":false,"swagger":false,"oauth":false,"migrationSwaggerRun":false,"migrationRun":false,"hub2":true,"enterprise":false,"allow_hub2":false,"disableAnonForum":false,"newApiExplorer":true,"directGoogleToStableVersion":false,"translation":false,"alwaysShowDocPublishStatus":false,"newEditor":true,"newMarkdownBetaProgram":true,"oldMarkdown":false,"newSearch":true,"rdmdCompatibilityMode":false,"staging":false,"tutorials":true,"allowApiExplorerJsonEditor":false,"useReactApp":true,"newHeader":false,"referenceRedesign":false,"auth0Oauth":false,"graphql":false,"singleProjectEnterprise":false,"dashReact":false,"allowReferenceUpgrade":true,"metricsV2":true,"newEditorDash":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":false,"allowDarkMode":false,"forceDarkMode":false,"useReactGLP":false,"disablePasswordlessLogin":false,"personalizedDocs":false,"myDevelopers":false,"superHub":false,"developerDashboard":false,"allowReusableOTPs":false,"dashHomeRefresh":false,"owlbotAi":false,"apiV2":false,"git":{"read":false,"write":false},"superHubBeta":false,"dashQuickstart":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"superHubBranches":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"fullBaseUrl":"https://docs.datatrans.ch/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"glossaryTerms":[{"_id":"5af0288f47537800035e5851","term":"uppTransactionId","definition":"The transactionId parameter returned after a payment/registration."},{"_id":"5af029abdf4a8800031c71e8","term":"aliasCC","definition":"An alias of a payment method."},{"_id":"5c6d11162f76cb00139600df","term":"CIT","definition":"Cardholder initiated transaction"},{"_id":"5c6d112fa96ba90033cb426b","term":"MIT","definition":"Merchant initiated transaction"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"links"}],"mdxMigrationStatus":"rdmd","metrics":{"enabled":false,"thumbsEnabled":false,"monthlyLimit":0,"planLimit":5000000,"realtime":{"dashEnabled":false,"hubEnabled":false},"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"suggested_edits":false,"discuss":false,"reference":false,"examples":true,"docs":true,"landing":false,"logs":false,"changelog":false,"custompages":false,"tutorials":false,"graphql":false},"name":"Datatrans Documentation","nav_names":{"discuss":"","reference":"","docs":"","changelog":"","tutorials":"","recipes":""},"oauth_url":"","onboardingCompleted":{"documentation":true,"appearance":true,"jwt":true,"api":false,"logs":false,"domain":true,"metricsSDK":false},"owlbot":{"enabled":false,"isPaying":false,"customization":{"answerLength":"long","customTone":"","defaultAnswer":"","forbiddenWords":"","tone":"neutral"},"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"business","planOverride":"","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"active","planTrial":"business","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":false,"points":50},"tryItNow":{"enabled":false,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":false,"points":1},"suggestedEdits":{"enabled":false,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":false,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"percentScore":0,"totalScore":39},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"62c8500880e0a700815c323c","version":"2.1.0","version_clean":"2.1.0","codename":"New Design","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62c8500880e0a700815c320d","62c8500880e0a700815c320e","62c8500880e0a700815c320f","5a12a302b57953001cecd09a","62c8500880e0a700815c3210","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","62c8500880e0a700815c3211","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","62c8500880e0a700815c3212","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","62c8500880e0a700815c3213","6376b41d081e400003bac19e"],"project":"5a1288ecf49d120012dff9be","__v":0,"forked_from":"5ec3d8681838e90012269216","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z"},"subdomain":"developerdatatranscom","subpath":"","superHubWaitlist":false,"topnav":{"edited":true,"right":[],"left":[],"bottom":[]},"trial":{"trialEndsAt":"2017-12-04T07:49:00.998Z","trialDeadlineEnabled":true},"translate":{"languages":[],"provider":"transifex","key_public":"","org_name":"","project_name":"","show_widget":false},"url":"","versions":[{"_id":"5a1288edf49d120012dff9c1","project":"5a1288ecf49d120012dff9be","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z","categories":["5a1288edf49d120012dff9c2","5a12a2efca61dc001ea88fc6","5a12a2f8162e54001cb1dcb4","5a12a302b57953001cecd09a","5a12a30eb57953001cecd09b","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","5a12a333162e54001cb1dcc0","5a12a33ab57953001cecd09f","5a12a33dca61dc001ea88fca","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5a5c5b3f0208750012cac713","5a5c5bed3a73620012de1656","5c656239240d850013d9dc14","6376b41d081e400003bac190"],"is_deprecated":false,"is_hidden":true,"is_beta":false,"is_stable":false,"codename":"","version_clean":"1.0.0","version":"1.0.0","__v":20},{"_id":"5ae1da614ee4da0003c98b94","project":"5a1288ecf49d120012dff9be","__v":16,"forked_from":"5a1288edf49d120012dff9c1","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z","categories":["5ae1da614ee4da0003c98b33","5ae1da614ee4da0003c98b34","5ae1da614ee4da0003c98b35","5a12a302b57953001cecd09a","5ae1da614ee4da0003c98b36","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","5ae1da614ee4da0003c98b37","5ae1da614ee4da0003c98b38","5ae1da614ee4da0003c98b39","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ae1da614ee4da0003c98b3a","5ae1da614ee4da0003c98b3b","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5b44ce39b76f3d0003a8e912","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","5cc2e316e0ebd00027fff87b","6376b41d081e400003bac18f"],"is_deprecated":true,"is_hidden":false,"is_beta":false,"is_stable":false,"codename":"","version_clean":"1.0.1","version":"1.0.1"},{"_id":"5ec3d8681838e90012269216","version":"2.0.0","version_clean":"2.0.0","codename":"JSON","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["5ec3d8681838e900122691a8","5ec3d8681838e900122691a9","5ec3d8681838e900122691aa","5a12a302b57953001cecd09a","5ec3d8681838e900122691ab","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","5ec3d8681838e900122691ac","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","5ec3d8681838e900122691af","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","5ec3d8681838e900122691b1","6376b41d081e400003bac19d"],"project":"5a1288ecf49d120012dff9be","__v":1,"forked_from":"5ae1da614ee4da0003c98b94","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z"},{"_id":"62c8500880e0a700815c323c","version":"2.1.0","version_clean":"2.1.0","codename":"New Design","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62c8500880e0a700815c320d","62c8500880e0a700815c320e","62c8500880e0a700815c320f","5a12a302b57953001cecd09a","62c8500880e0a700815c3210","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","62c8500880e0a700815c3211","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","62c8500880e0a700815c3212","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","62c8500880e0a700815c3213","6376b41d081e400003bac19e"],"project":"5a1288ecf49d120012dff9be","__v":0,"forked_from":"5ec3d8681838e90012269216","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z"}],"variableDefaults":[{"_id":"5bbf565ceb416300039a2529","name":"apiReferenceUrl","default":"https://admin.sandbox.datatrans.com/d3574c10-d317-4f6b-82f5-ebc7c2d685af/api-reference/","source":"","type":""},{"_id":"5bbf565ceb416300039a2528","name":"","default":"","source":"","type":""}],"webhookEnabled":false,"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","canonical_url":null,"default_version":{"name":"2.1.0"},"description":"Explore our documentation to find helpful resources and examples to integrate Datatrans. Add Datatrans to your web or mobile application and start accepting online payments. Link our Payment API to offer customer-initiated payments, merchant-initiated payments, and after the payment actions.","glossary":[{"_id":"5af0288f47537800035e5851","term":"uppTransactionId","definition":"The transactionId parameter returned after a payment/registration."},{"_id":"5af029abdf4a8800031c71e8","term":"aliasCC","definition":"An alias of a payment method."},{"_id":"5c6d11162f76cb00139600df","term":"CIT","definition":"Cardholder initiated transaction"},{"_id":"5c6d112fa96ba90033cb426b","term":"MIT","definition":"Merchant initiated transaction"}],"homepage_url":null,"id":"5a1288ecf49d120012dff9be","name":"Datatrans Documentation","parent":null,"redirects":[],"sitemap":"disabled","llms_txt":"disabled","subdomain":"developerdatatranscom","suggested_edits":"disabled","uri":"/projects/me","variable_defaults":[{"name":"apiReferenceUrl","default":"https://admin.sandbox.datatrans.com/d3574c10-d317-4f6b-82f5-ebc7c2d685af/api-reference/","source":"","type":"","id":"5bbf565ceb416300039a2529"},{"name":"","default":"","source":"","type":"","id":"5bbf565ceb416300039a2528"}],"webhooks":[],"api_designer":{"allow_editing":"enabled"},"custom_login":{"login_url":null,"logout_url":null},"features":{"mdx":"disabled"},"mcp":{},"onboarding_completed":{"api":false,"appearance":true,"documentation":true,"domain":true,"jwt":true,"logs":false,"metricsSDK":false},"pages":{"not_found":"/branches/stable/custom_pages/404"},"privacy":{"openapi":"admin","password":null,"view":"public"},"refactored":{"status":"disabled","migrated":"unknown"},"seo":{"overwrite_title_tag":"disabled"},"plan":{"type":"business","grace_period":{"enabled":false,"end_date":null},"trial":{"expired":false,"end_date":"2017-12-04T07:49:00.998Z"}},"reference":{"api_sdk_snippets":"enabled","defaults":"always_use","json_editor":"disabled","oauth_flows":"disabled","request_history":"enabled","response_examples":"collapsed","response_schemas":"collapsed","sdk_snippets":{"external":"disabled"}},"health_check":{"provider":"none","settings":{"manual":{"status":"down","url":null},"statuspage":{"id":null}}},"integrations":{"aws":{"readme_webhook_login":{"region":null,"external_id":null,"role_arn":null,"usage_plan_id":null}},"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"postman":{"key":null,"client_id":null,"client_secret":null},"recaptcha":{"site_key":null,"secret_key":null},"segment":{"key":null,"domain":null},"speakeasy":{"key":null,"spec_url":null},"stainless":{"key":null,"name":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":null,"secure_mode":{"key":null,"email_only":false}}},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"enabled"}},"branches":{"merge":{"admin":true}}},"appearance":{"brand":{"primary_color":"#000000","link_color":"#000000","theme":"system"},"changelog":{"layout":"collapsed","show_author":true,"show_exact_date":false},"layout":{"full_width":"disabled","style":"classic"},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"disabled","whats_next_label":null,"footer":{"readme_logo":"hide"},"logo":{"size":"large","dark_mode":{"uri":"/images/6481c848280d7115ca27add0","url":"https://files.readme.io/a1484fd-datatrans-p-white.svg","name":"a1484fd-datatrans-p-white.svg","width":447,"height":142,"color":"#000000","links":{"original_url":null}},"main":{"uri":null,"url":"https://files.readme.io/ac52ec007555c057031f27aaffeecd3de07261783c613b899d2b3b83586f29c9-planet_datatrans.svg","name":"ac52ec007555c057031f27aaffeecd3de07261783c613b899d2b3b83586f29c9-planet_datatrans.svg","width":327,"height":39,"color":"#000000","links":{"original_url":null}},"favicon":{"uri":null,"url":"https://files.readme.io/eec1cd3638e97d5839e8734bf1b2571ed6d2f421296ab66918c8b014329f4965-planet_square_r_black.svg","name":"eec1cd3638e97d5839e8734bf1b2571ed6d2f421296ab66918c8b014329f4965-planet_square_r_black.svg","width":150,"height":150,"color":"#000000","links":{"original_url":null}}},"custom_code":{"css":":root {\n --DTBlack: #000000;\n --DTBlackRgb: 0, 0, 0;\n --DTWhite: #FFFFFF;\n --DTWhiteRgb: 255, 255, 255;\n --DTSecondary: #ff0096;\n --DTSecondaryRgb: 255, 0, 150;\n --DTMain: #000000;\n --DTMainRgb: 33, 61, 98;\n --DTLightGrey: #F2F4F7;\n --DTLightGreyRgb: 242, 244, 247;\n --DTCodeGrey: #EAEAEA;\n --DTCodeGreyRgb: 234, 234, 234;\n --DTSecondaryLight: #ffa8db;\n --DTSecondaryLightRgb: 255, 168, 219;\n --DTGrey: #747474;\n --DTGreyRgb: 116, 116, 116;\n --DTError: #E6777E;\n --DTErrorRgb: 230, 119, 126;\n}\n\n.rm-Guides #content-head {\n border-bottom: none;\n padding-bottom: 15px;\n}\n\n.rm-Header-search {\n\tmargin-top: -24px;\n}\n\n.rm-Markdown {\n\tmargin-bottom: 30px;\n}\n@media (min-width: 769px) {\n div[class*=\"Header-bottom\"] {\n margin-top: -40px;\n margin-left: -50px;\n overflow: visible;\n }\n .rm-Header-top {\n \tz-index: 0;\n }\n}\n@media (max-width: 768px) {\n\tdiv[class*=\"Header-left_mobile\"] {\n \tdisplay: none;\n }\n .rm-Header-top {\n \tdisplay: none;\n }\n}\n\ndiv[class*=\"SearchTabs\"], nav[class*=\"Header-left\"], .UpdatedAt, .PageThumbs {\n display: none;\n}\n\n.App .rm-Container_flex {\n\tjustify-content: flex-end;\n}\n\n.rm-Guides #content-head h1 {\n\tfont-size: 2.7em;\n}\n\n.heading.heading-2 {\n\tmargin-top: 40px;\n}\n\n.heading-text {\n font-size: 1.2em;\n}\n\n.rm-Guides .rm-Article {\n\tpadding-top: 50px !important;\n}\n\n.useReactApp .rm-Logo-img {\n \t\twidth: auto !important;\n}\n\n/* Custom DT Table */\n.dt-table-cell-header {\n padding: 8px 4px;\n font-size: 18px;\n font-weight: 500;\n \tmin-height: 70px;\n}\n\n.dt-table-cell-body {\n padding: 5px 0 10px 5px;\n}\n\n.dt-table-cell-icon {\n height: 30px;\n width: auto;\n padding-right: 5px;\n}\n\n.dt-center {\n text-align: center;\n vertical-align: middle;\n}\n\n.dt-spacer {\n width: 100%;\n height: 10px;\n}\n\n\n/* DT Icons */\n.dt-payment-method-logo {\n max-height: 80px !important;\n max-width: 120px !important;\n}\n\n.dt-mobile-sdk-os-icon {\n max-height: 120px !important;\n max-width: 120px !important;\n}\n\n.dt-threed-version-icon {\n height: 20px;\n width: auto;\n padding: 0 5px 0 0;\n}\n\n.dt-status-wrapper {\n margin-top: -30px;\n}\n\n.dt-status-icon {\n height: 30px;\n width: auto;\n}\n\n@media only screen and (min-width: 850px) {\n .dt-status-wrapper {\n margin-top: -40px;\n }\n\n .dt-status-icon {\n margin: -75px 0 0 0;\n }\n\n .dt-status-icon.dt-status-icon-beta.marketplace {\n padding: 0 0 0 450px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.split-authorizations {\n padding: 0 0 0 390px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.sign {\n padding: 0 0 0 100px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.xml-response-codes {\n padding: 0 0 0 410px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.payment-link {\n padding: 0 0 0 270px;\n }\n\n .dt-status-icon.dt-status-icon-deprecated.mobile-sdk-old {\n padding: 0 0 0 230px;\n }\n\n .dt-status-icon.dt-status-icon-new.mobile-sdk {\n padding: 0 0 0 230px;\n }\n}\n\n.dt-docs-image {\n max-width: 95% !important;\n}\n\n/* Datatrans Buttons */\n.double-button {\n transition: box-shadow 0.4s ease;\n display: inline-flex;\n height: 50px;\n width: 300px;\n background: rgba(var(--DTSecondaryRgb), 1) none repeat scroll 0% 0% / auto padding-box border-box;\n border-radius: 4px;\n overflow: hidden;\n box-shadow: none;\n}\n\n.double-button a {\n\ttext-decoration: none !important;\n}\n\n.double-button:hover {\n box-shadow: 0 8px 16px 0 rgba(var(--DTBlackRgb), .16), 0 2px 6px 0 rgba(var(--DTBlack), .08);\n transition: box-shadow 0.4s ease;\n}\n\n#left-div,\n#right-div {\n height: 50px;\n width: 150px;\n position: relative;\n}\n\n#right-div:before {\n content: '';\n height: 50px;\n width: 188.703px;\n position: absolute;\n transform: matrix(1, 0, -0.176327, 1, 0, 0);\n transform-origin: 94.3516px 25px;\n background: rgba(var(--DTMain), 1) none repeat scroll 0% 0% / auto padding-box border-box;\n}\n\n.button-link {\n display: block;\n position: relative;\n padding: 17px 24px 16px;\n font: normal normal 600 normal 17px / 17px \"TT Commons Medium\", \"Helvetica Neue\", Helvetica, Arial;\n text-decoration: none;\n color: var(--DTWhite);\n text-align: center;\n}\n\n.button-link:hover {\n text-decoration: none;\n color: var(--DTWhite);\n}\n\n.single-button {\n transition: box-shadow 0.4s ease;\n display: inline-flex;\n height: 50px;\n width: 150px;\n background: rgb(var(--DTSecondaryRgb)) none repeat scroll 0% 0% / auto padding-box border-box;\n border-radius: 4px;\n overflow: hidden;\n box-shadow: none;\n}\n\n.single-button:not(:disabled):active {\n background-color: var(--DTSecondaryLight);\n}\n\n.single-button:hover {\n box-shadow: 0 8px 16px 0 rgba(var(--DTBlackRgb), .16), 0 2px 6px 0 rgba(var(--DTBlack), .08);\n transition: box-shadow 0.4s ease;\n}\n\n#single-div {\n height: 50px;\n width: 150px;\n position: relative;\n}\n\n#right-div:before,\n#left-div:before {\n left: 0px;\n transition: left 0.3s ease;\n}\n\n#right-div:hover:before {\n left: -4px;\n}\n\n#left-div:hover:before {\n left: 4px;\n}\n\n#right-div:hover:before {\n left: -4px;\n transition: left 0.3s ease;\n}\n\n#left-div:hover+#right-div:before {\n left: 4px;\n transition: left 0.3s ease;\n}\n\ndiv#right-div {\n background-color: black;\n}","js":"var paramsBlackList = [\"$formController\",\"version\",\"uppWebResponseMethod\", \"uppMsgType\", \"uppReturnTarget\", \"uppWebResponseMethod\", \"returnCustomerCountry\",\"utm_source\",\"utm_medium\",\"utm_campaign\",\"utm_content\",\"utm_term\",\"merchantId\",\"authorizationCode\", \"responseCode\",\"expy\",\"acqAuthorizationCode\",\"reqtype\",\"expm\",\"pmethod\",\"theme\",\"testOnly\"];\nfunction getQueryParameters(str) {\n \tif(document.location.search == \"\"){\n return (document.location.href).substring(document.location.href.indexOf(\"?\"),document.location.href.length)\n .replace(/(^\\?)/,'')\n .split(\"&\")\n .reduce(function(p,n) {\n return n = n.split(\"=\"), p[n[0]] = n[1], p;\n }, {} );\n }else{\n return (document.location.search)\n .replace(/(^\\?)/,'') \n .split(\"&\")\n .reduce(function(p,n) {\n return n = n.split(\"=\"), p[n[0]] = n[1], p;\n }, {} );\n }\n \n}\n \nfunction hasReturnParams(){\n\tif(window.location.toString().indexOf(\"?\") > 0){\n if(!window.location.toString().includes(\"utm_source\")|| !window.location.toString().includes(\"utm_campaign\") || !window.location.toString().includes(\"utm_content\") || !window.location.toString().includes(\"utm_term\")){\n \treturn true;\n }\n \n }\n \n return false;\n}\n\nfunction escapeHtml(unsafe) {\n return unsafe\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n }\n\nfunction addParamsToForm(params, formId){\n $.each( params, function( key, value ) {\n $('').attr({\n type: 'hidden',\n name: key,\n value: value\n \t}).appendTo(\"#\"+formId);\n\t});\n \n $.each($(\"#paymentForm\").data(),function(key,value){\n $('').attr({\n type: 'hidden',\n name: key,\n value: value\n \t}).appendTo(\"#\"+formId);\n });\n}\nif (window.location.href.indexOf(\"docs/redirect-lightbox\") > -1) { \n $(window).on('pageLoad',function(){\n \t\tif(hasReturnParams()){\n var successParams = \"\";\n var params = getQueryParameters();\n var typeClass = \"type-danger\"\n var message = \" Your transaction failed.\"\n var titleIcon = \"Danger\";\n var iconClass = \"fa-exclamation-triangle\"\n for (var key in params) {\n if(key == \"status\"){\n \tif(params[key] == \"success\"){\n \ttypeClass =\"type-success\";\n titleIcon =\"Success\"\n iconClass =\"fa-check-square\"\n \t\t\tmessage = \" Your transaction was successful.\"\n }\n }\n if(key == \"status\"){\n \tif(params[key] == \"cancel\"){\n \t\t\tmessage = \" Your transaction was canceled.\"\n }\n }\n if(paramsBlackList.indexOf(key) < 0){\n \t\t\t\t \tsuccessParams += key +\"=\"+ escapeHtml(decodeURIComponent(params[key])) + \"
\";\n\t\t\t\t }\n }\n if(successParams.length > 1){\n $(\"

\"+message+\"

\").prependTo(\"#content-container .content-body\")\n window.history.replaceState(null, null, window.location.pathname);\n }\n }\n });\n}\n\n// Redirect Function\nfunction redirect() {\n initializeTransaction('https://api.sandbox.datatrans.com/v1/transactions', getPayload())\n .then(data => { \n window.location.href = \"https://pay.sandbox.datatrans.com/v1/start/\" + data.transactionId;\n });\n}\n\n// Lightbox Function\nfunction startPayment() {\n initializeTransaction('https://api.sandbox.datatrans.com/v1/transactions', getPayload())\n .then(data => { \n Datatrans.startPayment({\n transactionId: data.transactionId\n });\n });\n}\nfunction lightbox() {\n const scriptSource = 'https://pay.sandbox.datatrans.com/upp/payment/js/datatrans-2.0.0.min.js';\n\n if (document.querySelector('script[src=\"' + scriptSource + '\"]')) {\n startPayment();\n return;\n }\n\n const script = document.createElement('script');\n script.src = scriptSource;\n script.onload = () => {\n startPayment();\n }\n\n document.body.appendChild(script);\n}\n\n// Get Payload Function\nfunction getPayload() { \t\n var url = window.location.href.split('?')[0];\n var successUrl = url + '?status=success';\n var cancelUrl = url + '?status=cancel';\n var errorUrl = url + '?status=error';\n var refno = new Date().getTime();\n\n var payload = {\n redirect: {\n successUrl: successUrl,\n errorUrl: errorUrl,\n cancelUrl: cancelUrl\n }, \n refno: refno,\n amount: 2000,\n currency: \"CHF\"\n }\n \n return payload;\n}\n\n// Initialize Transaction via CORS - You have to do this part on your server. Don't call our init endpoint from the client side. It won't work (CORS). It only works from the browser for this demo.\nasync function initializeTransaction(url = '', data = {}) {\n const response = await fetch(url, {\n method: 'POST', \n headers: { \n \"Content-Type\": 'application/json;charset=utf-8',\n \"Authorization\": 'Basic MTEwMDAyNTgzNTozY29mTjNNeFhhQkg3VWw4'\n },\n body: JSON.stringify(data)\n });\n return await response.json(); \n}\n\n// Deprecated Docs\nfunction openNewDocs() {\n var docs = \"https://docs.datatrans.ch/docs\"\n window.location.href = docs;\n};\nfunction openOldApiRef() {\n var apiref = \"https://api-reference.datatrans.ch/xml\"\n window.location.href = apiref;\n};\n\n// Unwrap away from an element\nfunction unwrap(el) {\n if (el && el.parentNode) {\n // move all children out of the element\n while (el.firstChild) {\n el.parentNode.insertBefore(el.firstChild, el);\n }\n // remove the empty element\n el.remove();\n }\n}\n\n// Remove gallery on images\nvar imageContainer1, imageContainer2, imageContainerLength;\n\nasync function removeLightbox() {\n imageContainer1 = document.getElementsByClassName(\"lightbox-inner\");\n imageContainer2 = document.getElementsByClassName(\"img lightbox closed\");\n imageContainerLength = imageContainer1.length;\n \n for (i = 0; i < imageContainerLength; i++) {\n unwrap(imageContainer1[0]);\n unwrap(imageContainer2[0]);\n };\n}\n\nwindow.addEventListener('DOMContentLoaded', (event) => {\n setTimeout(() => {\n\t\tremoveLightbox();\n }, \"500\")\n});\n\nvar oldLocation = location.href;\nsetInterval(function() {\n if(location.href != oldLocation) {\n removeLightbox();\n oldLocation = location.href\n }\n}, 500); // check every second","html":{"header":"","home_footer":null,"page_footer":null}},"header":{"type":"solid","gradient_color":null,"link_style":"buttons","overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}},"ai":{"dropdown":"disabled","options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","view_as_markdown":"enabled"}},"navigation":{"first_page":"documentation","left":[],"logo_link":"landing_page","page_icons":"enabled","right":[],"sub_nav":[],"subheader_layout":"links","version":"disabled","links":{"home":{"label":"Home","visibility":"disabled"},"graphql":{"label":"GraphQL","visibility":"disabled"},"guides":{"label":"Guides","alias":null,"visibility":"enabled"},"reference":{"label":"API Reference","alias":null,"visibility":"disabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"disabled"},"changelog":{"label":"Changelog","alias":null,"visibility":"disabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"disabled"}}}},"git":{"connection":{"repository":{},"organization":null,"status":"inactive"}}}},"version":{"_id":"62c8500880e0a700815c323c","version":"2.1.0","version_clean":"2.1.0","codename":"New Design","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62c8500880e0a700815c320d","62c8500880e0a700815c320e","62c8500880e0a700815c320f","5a12a302b57953001cecd09a","62c8500880e0a700815c3210","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","62c8500880e0a700815c3211","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","62c8500880e0a700815c3212","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","62c8500880e0a700815c3213","6376b41d081e400003bac19e"],"project":"5a1288ecf49d120012dff9be","__v":0,"forked_from":"5ec3d8681838e90012269216","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z"}},"is404":false,"isDetachedProductionSite":false,"lang":"en","langFull":"Default","reqUrl":"/docs/paypal-button","version":{"_id":"62c8500880e0a700815c323c","version":"2.1.0","version_clean":"2.1.0","codename":"New Design","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62c8500880e0a700815c320d","62c8500880e0a700815c320e","62c8500880e0a700815c320f","5a12a302b57953001cecd09a","62c8500880e0a700815c3210","5a12a319b57953001cecd09d","5a12a31eb57953001cecd09e","62c8500880e0a700815c3211","5ae1da614ee4da0003c98b38","5ec3d8681838e900122691ad","5a12e180ca61dc001ea89591","5a12e1f6ca61dc001ea89592","5a1355fc22131e001204ac39","5a13562945769d002674f9d0","5a1358c522131e001204acc2","5a1358d54e5aed0012b4423d","5a1358e64e5aed0012b4423e","5ec3d8681838e900122691ae","62c8500880e0a700815c3212","5af01dc4df4a8800031c70ff","5b17991b53b0b90003f68b40","5ec3d8681838e900122691b0","5b6d81e0ebb22e0003051748","5b6d886f9218840003992b2b","5c0147688ab18f026df6a28f","5c66b3e4a06714004b3a25d7","5c66b4c2382d410124b9586f","5c6d48085cec4d0019246dd4","5c8a41989bf60e00147b4ac3","5c8f93cba67e3a00fe4c6eeb","5c8fa03a2b8eef00458a6e89","5c98d9f3c17f390167bd4d50","5c993fc486b321000e2c87c3","5c99404714c076002e0bda16","62c8500880e0a700815c3213","6376b41d081e400003bac19e"],"project":"5a1288ecf49d120012dff9be","__v":0,"forked_from":"5ec3d8681838e90012269216","createdAt":"2017-11-20T07:49:01.029Z","releaseDate":"2017-11-20T07:49:01.029Z"}}">