Skip to main content
Here are complete, working examples of both SDK and API integration methods.

Option 1: SDK Integration (JavaScript)

Full HTML page with SDK integration:
<!DOCTYPE html>
<html>
<head>
  <title>Payviox Payment</title>
</head>
<body>
  <h1>Complete your purchase</h1>
  <p>Total: $10.00</p>
  <button onclick="initiatePayment()">Pay Now</button>

  <script src="https://cdn.payviox.com/sdk/payviox.js"></script>
  <script>
    const payviox = new Payviox('your_api_token');

    async function initiatePayment() {
      try {
        await payviox.createSession({
          amount: 1000,
          currency: 'USD',
          customer: 'customer_123',
          description: 'Premium Subscription',
          paymentMethodId: 'pm_card',
          order_id: 'order_' + Date.now(),
          items: [{
            name: 'Premium Subscription',
            quantity: 1,
            price: 1000
          }]
        }, {
          redirect: true // Automatically redirect
        });
      } catch (error) {
        alert('Payment failed: ' + error.message);
      }
    }
  </script>
</body>
</html>
When you click “Pay Now”, the SDK automatically creates a session and redirects to the secure payment page.

Option 2: API Integration (cURL)

Create a payment session using the REST API:
curl -X POST https://api.payviox.com/session \
  -H "Authorization: Bearer your_api_token" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 1000,
    "currency": "USD",
    "customer": "customer_123",
    "description": "Premium Subscription",
    "paymentMethodId": "pm_card",
    "order_id": "order_12345",
    "items": [{
      "name": "Premium Subscription",
      "quantity": 1,
      "price": 1000
    }]
  }'
Then redirect the customer to the returned session URL.

Webhook Handler Examples

Both integration methods require a webhook handler on your server.
<?php
// Receive webhook notification
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_SIGNATURE'];

// Verify signature
$computed = hash_hmac('sha256', $payload, 'your_webhook_token');
if (!hash_equals($computed, $signature)) {
    http_response_code(401);
    exit('Invalid signature');
}

// Parse webhook data
$data = json_decode($payload, true);

// Handle successful payment
if ($data['type'] === 'succeeded') {
    // Fulfill the order
    fulfillOrder($data['order_id']);
    
    // Send confirmation email
    sendConfirmationEmail($data);
}

// Return 200 OK
http_response_code(200);
echo json_encode(['status' => 'success']);

Testing Your Integration

1

Use test credentials

Use your test API token to avoid real charges:
const payviox = new Payviox('pk_test_xxxxxxxxxxxxx');
2

Test card numbers

Use these test card numbers in the payment form:
  • 4242 4242 4242 4242 - Successful payment
  • 4000 0000 0000 0002 - Card declined
  • 4000 0000 0000 0341 - Insufficient funds
3

Test webhooks locally

Use ngrok to expose your local server:
ngrok http 3000
Then configure the ngrok URL as your webhook URL.
4

Monitor in dashboard

View all test transactions in your dashboard.

Next Steps