{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["sub-heading"]},"type":"markdown"},"seo":{"title":"Testing","description":"Transform your commerce with PXP's unified platform—seamless payments, real-time insights, and global growth in one powerful integration.","lang":"en-UK","siteUrl":"https://developer.pxp.io","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"testing","__idx":0},"children":["Testing"]},{"$$mdtype":"Tag","name":"SubHeading","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test your Drop-in integration in sandbox before going live."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test your Drop-in integration in the sandbox environment before accepting real payments. The sandbox environment allows you to test all payment methods without processing actual transactions."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"use-the-test-environment","__idx":2},"children":["Use the test environment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the environment to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["test"]}," when initialising Drop-in:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"CheckoutDropIn.initialize({\n  environment: 'test',  // Use sandbox\n  // ... rest of config\n});\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key points about sandbox testing:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No real money is charged."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use test card numbers and sandbox accounts."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["All payment methods work the same as production."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Backend verification still required using test API credentials."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-card-payments","__idx":3},"children":["Test card payments"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-card-numbers","__idx":4},"children":["Test card numbers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these test cards in sandbox to simulate different scenarios:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"successful-payments","__idx":5},"children":["Successful payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following test cards represent successful payment scenarios:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Card number"},"children":["Card number"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Network"},"children":["Network"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"3DS behaviour"},"children":["3DS behaviour"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4111 1111 1111 1111"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No challenge"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["5555 5555 5555 4444"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mastercard"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No challenge"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["3782 822463 10005"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["American Express"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No challenge"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0002"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Challenge required"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For all test cards:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Expiry date:"]}," Any future date (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12/25"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["CVV:"]}," Any 3 digits (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["123"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cardholder name:"]}," Any name."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"failed-payments","__idx":6},"children":["Failed payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following test cards simulate payment failures:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Card number"},"children":["Card number"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Network"},"children":["Network"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0077"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Insufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0051"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card declined"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0069"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Expired card"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0101"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Visa"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CVV failure"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"testing-3ds-authentication","__idx":7},"children":["Testing 3DS authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using the challenge test card (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0002"]},"), a 3D Secure authentication modal appears:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To pass:"]}," Enter any code (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1234"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To fail:"]}," Leave empty or enter wrong code multiple times."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To timeout:"]}," Wait for modal to timeout."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSuccess"]}," callback fires after successful authentication, and that your backend receives the transaction details."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-paypal","__idx":8},"children":["Test PayPal"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"paypal-sandbox-accounts","__idx":9},"children":["PayPal sandbox accounts"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You need a PayPal sandbox account for testing. Create one in the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://developer.paypal.com/dashboard/","target":"_blank"},"children":["PayPal Developer Dashboard"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a personal (buyer) account for testing customer payments."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-paypal-payments","__idx":10},"children":["Test PayPal payments"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click the PayPal button in the drop-in."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log in with your PayPal sandbox account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Approve the payment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSuccess"]}," fires with transaction details."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify your backend receives the payment notification."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test both transaction intents:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purchase intent:"]}," Funds captured immediately."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authorisation intent:"]}," Funds authorised but not captured (capture later via backend API)."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-google-pay","__idx":11},"children":["Test Google Pay"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"requirements","__idx":12},"children":["Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Chrome, Edge, or Opera browser"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Google Account signed in"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test card added to Google Pay wallet"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-google-pay-payments","__idx":13},"children":["Test Google Pay payments"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open your checkout page in a supported browser."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sign in to your Google Account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add a test card to Google Pay (use test card numbers from above)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click the Google Pay button in Drop-in."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select your test card in the payment sheet."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pay"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSuccess"]}," fires with transaction details."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Google Pay button only appears on supported browsers when the user has cards in their Google Pay wallet."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-apple-pay","__idx":14},"children":["Test Apple Pay"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"requirements-1","__idx":15},"children":["Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apple device (iPhone, iPad, or Mac with Touch ID/Face ID)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Safari browser"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test card added to Apple Wallet"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-apple-pay-payments","__idx":16},"children":["Test Apple Pay payments"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open your checkout page in Safari on an Apple device."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add a test card to Apple Wallet (use test card numbers from above)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click the Apple Pay button in Drop-in."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authenticate with Face ID, Touch ID, or passcode."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Approve the payment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSuccess"]}," fires with transaction details."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Apple Pay button only appears on supported Apple devices with cards in Apple Wallet."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-error-handling","__idx":17},"children":["Test error handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test that your error handling works correctly by simulating failures:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"card-errors","__idx":18},"children":["Card errors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the failed payment test cards to trigger different error types:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Insufficient funds: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0077"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Card declined: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0051"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Expired card: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0069"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CVV failure: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4000 0000 0000 0101"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]}," callback receives the error and displays an appropriate message to the customer."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"network-errors","__idx":19},"children":["Network errors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test offline behaviour:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open browser DevTools and go to the Network tab."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set network to \"Offline\"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Try to submit a payment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that your error handling shows a network error message."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"user-cancellation","__idx":20},"children":["User cancellation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test cancellation handling:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PayPal:"]}," Close the PayPal window without completing payment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Google Pay:"]}," Click outside the payment sheet or press Escape."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Apple Pay:"]}," Cancel the payment sheet."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCancel"]}," callback fires (if configured in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["methodConfig.global"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-backend-verification","__idx":21},"children":["Test backend verification"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always verify payments on your backend before fulfilling orders. The frontend callbacks can be manipulated by users."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"essential-backend-tests","__idx":22},"children":["Essential backend tests"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test these critical security checks:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction exists:"]}," Query the PXP API with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["systemTransactionId"]}," to verify the transaction exists."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Amount matches:"]}," Verify the transaction amount matches your expected amount."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction succeeded:"]}," Check that the transaction state is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorised"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Captured"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Prevent replay attacks:"]}," Ensure the same transaction can't be processed twice."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example verification:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"// Backend verification endpoint\napp.post('/api/verify-payment', async (req, res) => {\n  const { systemTransactionId, merchantTransactionId } = req.body;\n  \n  // Get expected amount from your database\n  const order = await db.orders.findOne({ merchantTransactionId });\n  const expectedAmount = order.amount;\n  \n  // Query PXP API to verify transaction\n  const transaction = await unityApi.getTransaction(systemTransactionId);\n  \n  // Verify transaction is successful\n  if (transaction.state !== 'Authorised' && transaction.state !== 'Captured') {\n    return res.json({ success: false, error: 'Transaction not authorised' });\n  }\n  \n  // Verify amount matches\n  const txnAmount = transaction.amounts?.transactionValue || transaction.amount;\n  if (Math.abs(txnAmount - expectedAmount) > 0.01) {\n    return res.json({ success: false, error: 'Amount mismatch' });\n  }\n  \n  // Check for duplicate processing\n  const alreadyProcessed = await db.transactions.findOne({ systemTransactionId });\n  if (alreadyProcessed) {\n    return res.json({ success: true, orderId: alreadyProcessed.orderId });\n  }\n  \n  // Process order\n  const orderId = await fulfillOrder(order);\n  await db.transactions.create({ systemTransactionId, orderId });\n  \n  res.json({ success: true, orderId });\n});\n","lang":"javascript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pre-production-checklist","__idx":23},"children":["Pre-production checklist"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before going live, verify the following:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"configuration","__idx":24},"children":["Configuration"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Change environment to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["production"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use production API credentials"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify correct ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ownerId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ownerType"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm currency and amount formatting"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"testing-1","__idx":25},"children":["Testing"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test all enabled payment methods"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test successful payments"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test failed payments and error handling"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test user cancellation scenarios"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify backend verification works correctly"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"security","__idx":26},"children":["Security"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Backend verification implemented"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replay attack prevention in place"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HTTPS enabled on all pages"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["No sensitive data logged"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"user-experience","__idx":27},"children":["User experience"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Mobile responsive design tested"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Loading states display correctly"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Success page implemented"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Error messages are user-friendly"]}]}]},"headings":[{"value":"Testing","id":"testing","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Use the test environment","id":"use-the-test-environment","depth":2},{"value":"Test card payments","id":"test-card-payments","depth":2},{"value":"Test card numbers","id":"test-card-numbers","depth":3},{"value":"Successful payments","id":"successful-payments","depth":4},{"value":"Failed payments","id":"failed-payments","depth":4},{"value":"Testing 3DS authentication","id":"testing-3ds-authentication","depth":3},{"value":"Test PayPal","id":"test-paypal","depth":2},{"value":"PayPal sandbox accounts","id":"paypal-sandbox-accounts","depth":3},{"value":"Test PayPal payments","id":"test-paypal-payments","depth":3},{"value":"Test Google Pay","id":"test-google-pay","depth":2},{"value":"Requirements","id":"requirements","depth":3},{"value":"Test Google Pay payments","id":"test-google-pay-payments","depth":3},{"value":"Test Apple Pay","id":"test-apple-pay","depth":2},{"value":"Requirements","id":"requirements-1","depth":3},{"value":"Test Apple Pay payments","id":"test-apple-pay-payments","depth":3},{"value":"Test error handling","id":"test-error-handling","depth":2},{"value":"Card errors","id":"card-errors","depth":3},{"value":"Network errors","id":"network-errors","depth":3},{"value":"User cancellation","id":"user-cancellation","depth":3},{"value":"Test backend verification","id":"test-backend-verification","depth":2},{"value":"Essential backend tests","id":"essential-backend-tests","depth":3},{"value":"Pre-production checklist","id":"pre-production-checklist","depth":2},{"value":"Configuration","id":"configuration","depth":3},{"value":"Testing","id":"testing-1","depth":3},{"value":"Security","id":"security","depth":3},{"value":"User experience","id":"user-experience","depth":3}],"frontmatter":{"seo":{"title":"Testing"}},"lastModified":"2026-05-06T10:44:47.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/checkout/drop-in/web/testing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}