This guide provides information on using Shopify test certificates to test a credit card payments apps extension. > Note: > You should only use this test certificate for non-production credit card payments apps extensions. ## Requirements - You've [created a credit card payments app extension](/docs/apps/build/payments/credit-card/use-the-cli). - You're a [Partner organization owner](https://help.shopify.com/partners/dashboard/account-access). ## Using the test certificate To use Shopify's test certificate, set the value of the `encryption_certificate_fingerprint` field to `Test Certificate` in your [credit card payment extension](/docs/apps/build/payments/credit-card/use-the-cli?framework=remix#create-a-payments-extension) then, [deploy and release the extension](/docs/apps/build/payments/credit-card/use-the-cli?framework=remix#deploy-and-release-your-extension). ``` encryption_certificate_fingerprint = "Test Certificate" ``` With the test certificate configured, Shopify will always send the same static [test payload data](/docs/apps/build/payments/credit-card/test-certificate#test-payload) in the `payment_method` hash for every payment session request. ## Test private key The private key which is used to decrypt the encrypted payload. ``` -----BEGIN EC PRIVATE KEY----- MHcCAQEEIPdk1Yrjq9UNZBPRFfY2/JFiNXVWbKNwkhqADTm46XUyoAoGCCqGSM49 AwEHoUQDQgAEPwwyTcNvVwInu9COj3WZooI+Aj1/KRolD6u7XmjpuBXlHq2nopJh qkKwdrnUzWjkiJuY1qrUucT2mH+VkUGBSA== -----END EC PRIVATE KEY----- ``` ## Test certificate The test certificate which is used to encrypt the test payload. ``` -----BEGIN CERTIFICATE----- MIIBvTCCAWMCCQCvVT/6sodnSjAJBgcqhkjOPQQBMGcxCzAJBgNVBAYTAkNBMQsw CQYDVQQIDAJPTjEPMA0GA1UEBwwGT3R0YXdhMRAwDgYDVQQKDAdTaG9waWZ5MSgw JgYDVQQDDB9TaG9waWZ5UGF5bWVudHNQYXJ0bmVyc1BsYXRmb3JtMB4XDTIzMDYw OTE1NTgxM1oXDTI0MDYwODE1NTgxM1owZzELMAkGA1UEBhMCQ0ExCzAJBgNVBAgM Ak9OMQ8wDQYDVQQHDAZPdHRhd2ExEDAOBgNVBAoMB1Nob3BpZnkxKDAmBgNVBAMM H1Nob3BpZnlQYXltZW50c1BhcnRuZXJzUGxhdGZvcm0wWTATBgcqhkjOPQIBBggq hkjOPQMBBwNCAAQ/DDJNw29XAie70I6PdZmigj4CPX8pGiUPq7teaOm4FeUeraei kmGqQrB2udTNaOSIm5jWqtS5xPaYf5WRQYFIMAkGByqGSM49BAEDSQAwRgIhAPIA kL2hr+QMnhvKSFJjsQPyUj8FEogfjBECPjlXbAtoAiEA9D6Ub/wCCfsbjcz89k4W Xill1yq6fp9cHlnIpGQfVpw= -----END CERTIFICATE----- ``` ## Test payload This section details the payloads you'll receive, which depends on the API version of your payments app extension. <p> <div class="react-stacked-code-block ThemeMode-dim" data-preset="stacked"> <script data-option="title" data-value="Encrypted message contents"></script> <p> <div class="react-code-block" data-preset="basic"> <div class="react-code-block-preload ThemeMode-dim"> <div class="react-code-block-preload-bar basic-codeblock"></div> <div class="react-code-block-preload-placeholder-container"> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> </div> </div> <script type="text/plain" data-language="json" data-title="API version 2023-07 and later"> RAW_MD_CONTENTbEc3qjbeQ47YKi/LAtD3IewDANTZq/NVDgb+cSNgLyvDxF6SWdflnTJeGB+c6GXX9Vck/eZGcK6LQtJUYcWqzoxgfaS5BFbA5e56MS0X16ltQbD17Zj0toJBND7AqFDkHP6aCrNoUAuaHCg7vyER/19YMAtoc17Ab25LbGVJ4iusiabw358N98Yu END_RAW_MD_CONTENT</script> <script type="text/plain" data-language="json" data-title="API version 2023-04 and earlier"> RAW_MD_CONTENT0t8KAyNP88tKt8VeRYuDAcNB+qNSeSrsOAZQT6rKW4Lezv23sJMIp2fLK48ZBKesrcxjVsZzWVv3ZjTIUqjU9tvvoeh/eYsCGQb56ZyagbvPY92TZKUaBz6KLkMbGL/qvkfMaFY5zJg7WRs1+SAZvcAS/9WWzgzt7d0FaR5lRXE= END_RAW_MD_CONTENT</script> </div> </p> </div> </p> <p> <div class="react-stacked-code-block ThemeMode-dim" data-preset="stacked"> <script data-option="title" data-value="Decrypted message contents"></script> <p> <div class="react-code-block" data-preset="basic"> <div class="react-code-block-preload ThemeMode-dim"> <div class="react-code-block-preload-bar basic-codeblock"></div> <div class="react-code-block-preload-placeholder-container"> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> <div class="react-code-block-preload-code-container"> <div class="react-code-block-preload-codeline-number"></div> <div class="react-code-block-preload-codeline"></div> </div> </div> </div> <script type="text/plain" data-language="json" data-title="API version 2023-07 and later"> RAW_MD_CONTENT{ "type": "card", "data": { "full_name": "Percy Parker", "pan": "4242424242424242", "month": 12, "year": 2050, "verification_value": "123" } } END_RAW_MD_CONTENT</script> <script type="text/plain" data-language="json" data-title="API version 2023-04 and earlier"> RAW_MD_CONTENT{ "type": "card", "full_name": "Percy Parker", "pan": "0123456789012345", "month": 12, "year": 2050, "verification_value": "123" } END_RAW_MD_CONTENT</script> </div> </p> </div> </p>