Skip to content

Use Tokenized Data ​

After successfully receiving the tokenized card data, you can use it to make payment transactions via the PayNetWorx Payment API.

Overview ​

The tokenized card data allows you to process payments without handling sensitive card information directly. The token can be used for various payment operations while maintaining PCI compliance.

Response Format ​

The tokenized data you received has the following structure:

ts
{
  payment_session: {
    /** Format: KSUID */
    payment_session_request_id: string
  }
  tokenized_card: {
    approved: boolean
    /** Present if approved = true */
    cvc_check?: string
    /** Present if approved = true */
    token?: {
      token_id: string
      token_name: string
    }
  }
}

Using the Token with Payment API ​

Once you have the token_id, you can use it to make payment requests to the PayNetWorx Payment API.

Example: Authorization Capture ​

js
async function processPayment(tokenData) {
  const tokenId = tokenData.token.token_id;

  const paymentRequest = {
    Amount: {
      Total: 100.0,
      Tax: 8.0,
      Currency: "USD",
    },
    PaymentMethod: {
      Card: {
        Token: {
          TokenID: tokenId,
        },
      },
    },
    TransactionType: "AUTHCAPTURE",
  };

  try {
    const response = await fetch("https://{{PNX_API_URL}}/v0/transaction/authcapture", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: "Basic " + btoa("{{YOUR_API_KEY}}:"),
      },
      body: JSON.stringify(paymentRequest),
    });

    const result = await response.json();

    if (result.Approved) {
      console.log("Payment approved:", result);
      showSuccessMessage("Payment successful!");
    } else {
      console.error("Payment declined:", result);
      showErrorMessage("Payment was declined. Please try another payment method.");
    }
  } catch (error) {
    console.error("Payment error:", error);
    showErrorMessage("An error occurred processing your payment.");
  }
}

Token Properties ​

  • token_id: The unique identifier for the tokenized card. Use this in Payment API requests.
  • token_name: A human-readable description of the card (e.g., "Visa ending in 1234"). Use this for display purposes.
  • cvc_check: Indicates whether the CVC check passed during tokenization.

Available Payment Operations ​

You can use the token with various Payment API operations:

  • AUTHCAPTURE - Authorization and capture in a single step
  • AUTH - Authorization only (capture later)
  • VERIFY - Verify card without charging

Token Lifecycle ​

Token Management

  • Reusable: Tokens can be used for multiple transactions
  • Storage: Store tokens securely in your database for recurring payments
  • Security: Never store actual card numbers - always use tokens
  • Expiration: Tokens remain valid until the associated card expires or is deleted

Best Practices ​

  1. Server-Side Processing: Always make payment requests from your server, never from client-side JavaScript
  2. Error Handling: Implement comprehensive error handling for declined transactions
  3. User Feedback: Provide clear feedback to users about payment status
  4. Logging: Log payment attempts and results for debugging and reconciliation
  5. PCI Compliance: Even with tokenization, follow PCI DSS requirements for your integration

Complete Flow Example ​

js
// Complete flow from tokenization to payment
window.addEventListener("message", async (event) => {
  // Validate origin - use appropriate URL for your environment
  const allowedOrigin = "https://{{PNX_HOSTED_FORM_URL}}"; // QA: hosted-payments-qa.paynetworx.cloud, Production: hosted-payments.paynetworx.cloud

  if (event.origin !== allowedOrigin) {
    return;
  }

  if (event.data?.type === "pnx-tokenized-payment-info") {
    const tokenizedData = event.data.payload;

    if (tokenizedData.tokenized_card.approved) {
      // Show loading state
      showLoadingIndicator();

      try {
        // Process payment with token
        await processPayment(tokenizedData.tokenized_card);

        // Show success
        showSuccessMessage("Payment completed successfully!");

        // Redirect or update UI
        window.location.href = "/order-confirmation";
      } catch (error) {
        // Handle error
        console.error("Payment failed:", error);
        showErrorMessage("Payment failed. Please try again.");
      } finally {
        hideLoadingIndicator();
      }
    } else {
      showErrorMessage("Card validation failed. Please check your information.");
    }
  }
});

For detailed information about Payment API operations, see:

Support ​

If you encounter issues or have questions about using tokenized data, please refer to: