{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/white-label/deep-link/customer-data/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#customer-data\" aria-label=\"customer data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"customer-data\"></div>Customer data</h1>\n<p>You can include customer info in a deep link to help pre-fill fields required at payment.</p>\n<p>When providing sensitive customer info, you must take steps to encrypt their data. Partners wishing to submit customer data through deep links will receive an <em>encryption key</em>.</p>\n<h2 style=\"position:relative;\"><a href=\"#parameters\" aria-label=\"parameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"parameters\"></div>Parameters</h2>\n<p>The following customer parameters are accepted:</p>\n<ul>\n<li>\n<code class=\"language-text\">customer_email</code>\n: The customer's email address.\n</li>\n<li>\n<code class=\"language-text\">customer_loyalty_number</code>\n: The customer's loyalty program number (if any) as an alphanumeric string.\n</li>\n<li>\n<code class=\"language-text\">customer_name</code>\n: The customer's first name.\n</li>\n<li>\n<code class=\"language-text\">customer_surname</code>\n: The customer's last name.\n</li>\n<li>\n<code class=\"language-text\">promo_code</code>\n: A code for discounts.\n</li>\n</ul>\n<h2 style=\"position:relative;\"><a href=\"#encryption-process\" aria-label=\"encryption process permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"encryption-process\"></div>Encryption process</h2>\n<p>To properly encrypt customer data, take the following steps:</p>\n<ol>\n<li>\nSerialize the object.\n</li>\n<li>\nEncrypt the serialized object using the \n<a href=\"https://csrc.nist.gov/publications/detail/sp/800-38a/final\">CTR-AES256 encryption algorithm</a>\n and provided encryption key.\n</li>\n<li>\nURL encode the encrypted result.\n</li>\n<li>\nAdd the result to the query using the \n<code class=\"language-text\">msmCrypt</code>\n parameter. We strongly recommend using this parameter with a \n<a href=\"/white-label/deep-link/destination/\">destination parameter</a>\n.\n</li>\n</ol>\n<p>When the user reaches the payment page on the white label platform, their information will already be filled in:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 535px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 71.05263157894737%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIDBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAe5edgH/xAAVEAEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAQABBQIK/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGRAAAgMBAAAAAAAAAAAAAAAAARAAETFh/9oACAEBAAE/IQa77Bi//9oADAMBAAIAAwAAABCjz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAQACAQUAAAAAAAAAAAAAAAEAERAxQVFxkf/aAAgBAQABPxC6gLF02ldxlhaflx3yx//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Example of completed customer info\"\n        title=\"Example of completed customer info\"\n        src=\"/static/015c87c9a02d9261522e94eac83bcad5/b542f/customer-data-checkout-form.jpg\"\n        srcset=\"/static/015c87c9a02d9261522e94eac83bcad5/74752/customer-data-checkout-form.jpg 228w,\n/static/015c87c9a02d9261522e94eac83bcad5/7cd9c/customer-data-checkout-form.jpg 455w,\n/static/015c87c9a02d9261522e94eac83bcad5/b542f/customer-data-checkout-form.jpg 535w\"\n        sizes=\"(max-width: 535px) 100vw, 535px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 style=\"position:relative;\"><a href=\"#javascript-libraries\" aria-label=\"javascript libraries permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"javascript-libraries\"></div>JavaScript libraries</h2>\n<p>We have developed a <a href=\"https://github.com/musement/msm-crypto/\">universal library</a> for our partners which can be used with NodeJS or a basic JavaScript client.</p>\n<p>We have also set up a <a href=\"https://codesandbox.io/s/j14x4y2qmy\">full example</a> which uses our library and builds a valid URL.</p>\n<h2 style=\"position:relative;\"><a href=\"#php-class\" aria-label=\"php class permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"php-class\"></div>PHP class</h2>\n<p>We provide a PHP class for our partners which can be used to encrypt customer data:</p>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"13232525093113502000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`class GoTuiDeepLinkDataEncrypter\n{\n\tconst AES_KEY = 'LI2wmCDSR-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';\n\n\t/**\n\t* TUI DX Data Sharing Specification 26.3.2022\n\t* 1. Serialize the object\n\t* 2. Encrypt the result using the AES-CTR 256 encrypt algorithm\n\t*\n\t* @param JsonSerializable redocly_dollar_signdeeplinkData\n\t*\n\t*/\n\n\tpublic function encrypt(JsonSerializable redocly_dollar_signdeeplinkData): string\n\t{\n\t\tredocly_dollar_signplainText = json_encode(redocly_dollar_signdeeplinkData->jsonSerialize());\n\n\t\tredocly_dollar_signkey = redocly_dollar_signthis->base64url_decode(self::AES_KEY);\n\n\t\tredocly_dollar_signiv = str_repeat(&quot;\\\\0&quot;, 16);\n\n\t\tredocly_dollar_signencrypted = openssl_encrypt(redocly_dollar_signplainText, 'aes-256-ctr', redocly_dollar_signkey, OPENSSL_RAW_DATA, redocly_dollar_signiv);\n\n\t\tredocly_dollar_signencrypted = utf8_encode(redocly_dollar_signencrypted);\n\n\t\treturn redocly_dollar_signthis->encodeUriComponent(redocly_dollar_signencrypted);\n\t}\n\n\tprivate function base64url_decode(string redocly_dollar_signdata): string\n\t{\n\t\treturn base64_decode(str_pad(strtr(redocly_dollar_signdata, '-_', '+/'), strlen(redocly_dollar_signdata) % 4, '=', STR_PAD_RIGHT));\n\t}\n\n\t/**\n\t* see http://www.rither.de/a/informatik/php-beispiele/strings/urls-encodieren-und-decodieren/\n\t*\n\t* @param string redocly_dollar_signstr\n\t*\n\t* @return string\n\t*/\n\tprivate function encodeUriComponent(string redocly_dollar_signstr): string\n\t{\n\t\tredocly_dollar_signsearch = ['%21', '%2A', '%28', '%29', '%27', '%7E', '%uFFFD'];\n\n\t\tredocly_dollar_signreplace = ['!', '*', '(', ')', '\\\\'', '~', '%EF%BF%BD'];\n\n\t\tredocly_dollar_signsubject = rawurlencode(redocly_dollar_signstr);\n\n\t\treturn str_replace(redocly_dollar_signsearch, redocly_dollar_signreplace, redocly_dollar_signsubject);\n\t}\n}`, `13232525093113502000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-13232525093113502000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token keyword\">class</span> <span class=\"token class-name-definition class-name\">GoTuiDeepLinkDataEncrypter</span>\n<span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">const</span> <span class=\"token constant\">AES_KEY</span> <span class=\"token operator\">=</span> <span class=\"token string single-quoted-string\">'LI2wmCDSR-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'</span><span class=\"token punctuation\">;</span>\n\n\t<span class=\"token comment\">/**\n\t* TUI DX Data Sharing Specification 26.3.2022\n\t* 1. Serialize the object\n\t* 2. Encrypt the result using the AES-CTR 256 encrypt algorithm\n\t*\n\t* @param JsonSerializable $deeplinkData\n\t*\n\t*/</span>\n\n\t<span class=\"token keyword\">public</span> <span class=\"token keyword\">function</span> <span class=\"token function-definition function\">encrypt</span><span class=\"token punctuation\">(</span><span class=\"token class-name type-declaration\">JsonSerializable</span> <span class=\"token variable\">$deeplinkData</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword return-type\">string</span>\n\t<span class=\"token punctuation\">{</span>\n\t\t<span class=\"token variable\">$plainText</span> <span class=\"token operator\">=</span> <span class=\"token function\">json_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$deeplinkData</span><span class=\"token operator\">-></span><span class=\"token function\">jsonSerialize</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$key</span> <span class=\"token operator\">=</span> <span class=\"token variable\">$this</span><span class=\"token operator\">-></span><span class=\"token function\">base64url_decode</span><span class=\"token punctuation\">(</span><span class=\"token keyword static-context\">self</span><span class=\"token operator\">::</span><span class=\"token constant\">AES_KEY</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$iv</span> <span class=\"token operator\">=</span> <span class=\"token function\">str_repeat</span><span class=\"token punctuation\">(</span><span class=\"token string double-quoted-string\">\"\\0\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$encrypted</span> <span class=\"token operator\">=</span> <span class=\"token function\">openssl_encrypt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$plainText</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'aes-256-ctr'</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$key</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">OPENSSL_RAW_DATA</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$iv</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$encrypted</span> <span class=\"token operator\">=</span> <span class=\"token function\">utf8_encode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$encrypted</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token keyword\">return</span> <span class=\"token variable\">$this</span><span class=\"token operator\">-></span><span class=\"token function\">encodeUriComponent</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$encrypted</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">private</span> <span class=\"token keyword\">function</span> <span class=\"token function-definition function\">base64url_decode</span><span class=\"token punctuation\">(</span><span class=\"token keyword type-hint\">string</span> <span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword return-type\">string</span>\n\t<span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token function\">base64_decode</span><span class=\"token punctuation\">(</span><span class=\"token function\">str_pad</span><span class=\"token punctuation\">(</span><span class=\"token function\">strtr</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'-_'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'+/'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">strlen</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$data</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'='</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">STR_PAD_RIGHT</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token comment\">/**\n\t* see http://www.rither.de/a/informatik/php-beispiele/strings/urls-encodieren-und-decodieren/\n\t*\n\t* @param string $str\n\t*\n\t* @return string\n\t*/</span>\n\t<span class=\"token keyword\">private</span> <span class=\"token keyword\">function</span> <span class=\"token function-definition function\">encodeUriComponent</span><span class=\"token punctuation\">(</span><span class=\"token keyword type-hint\">string</span> <span class=\"token variable\">$str</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword return-type\">string</span>\n\t<span class=\"token punctuation\">{</span>\n\t\t<span class=\"token variable\">$search</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'%21'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%2A'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%28'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%29'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%27'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%7E'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%uFFFD'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$replace</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string single-quoted-string\">'!'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'*'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'('</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">')'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'\\''</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'~'</span><span class=\"token punctuation\">,</span> <span class=\"token string single-quoted-string\">'%EF%BF%BD'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token variable\">$subject</span> <span class=\"token operator\">=</span> <span class=\"token function\">rawurlencode</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$str</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t\t<span class=\"token keyword\">return</span> <span class=\"token function\">str_replace</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$search</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$replace</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$subject</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div>","headings":[{"value":"Customer data","depth":1},{"value":"Parameters","depth":2},{"value":"Encryption process","depth":2},{"value":"JavaScript libraries","depth":2},{"value":"PHP class","depth":2}]},"contentItem":{"data":{"lastModified":"2025-12-18T16:31:42.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":false,"disableLastModified":false,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"6756c1ee-aa8e-55cd-87e0-b5fdc887e4e8__redocly content/white-label/deep-link/customer-data/","seo":{"title":"Customer data","description":"Learn how to securely send sensitive customer data for Musement's white label solution.","image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"white-label/deep-link/customer-data.md","pageBaseUrl":"/white-label/deep-link/customer-data","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Customer data","id":"customer-data"},{"depth":2,"value":"Parameters","id":"parameters"},{"depth":2,"value":"Encryption process","id":"encryption-process"},{"depth":2,"value":"JavaScript libraries","id":"javascript-libraries"},{"depth":2,"value":"PHP class","id":"php-class"}]},"data":{"title":"","seo":{"description":"Learn how to securely send sensitive customer data for Musement's white label solution."}},"catalogInfo":null,"link":"/white-label/deep-link/customer-data/","sidebarName":"__alternative-sidebar__-data-24763-white-label-sidebars.yaml","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}