PonponPay
Anfänger10 Min. Lesezeit

Public Key Modus

Der Public Key Modus ist fuer Browser-Integrationen gedacht. Das Frontend tauscht eine public_key gegen ein kurzlebiges Session Token, erstellt damit Bestellungen und fragt Status ab, ohne eine API Key im Browser offenzulegen.

Integrationsablauf

  1. Erzeuge eine Public Key im Merchant Dashboard und aktiviere die Frontend-Integration.
  2. Konfiguriere die Domain-Whitelist.
  3. Der Browser ruft /api/v1/sdk/token mit der Public Key auf.
  4. Mit dem Session Token wird /api/v1/sdk/orders aufgerufen.
  5. Leite Nutzer zu payment_url weiter oder frage den Bestellstatus ab.

Der aktuelle Public Key Modus erfordert keine Parametersignatur im Frontend. Empfohlen ist das JavaScript SDK oder der manuelle Aufruf der Token- und Order-APIs unten.

Public Key erhalten

  1. Melde dich im PonponPay Merchant Dashboard an.
  2. Oeffne die Seite "Frontend Integration".
  3. Aktiviere die Frontend-Integration.
  4. Erzeuge und kopiere die Public Key im Format pub_xxx.

Domain-Whitelist

Public Keys koennen nur von freigegebenen Domains genutzt werden. Das Backend prueft Origin oder Referer.

  • Erlaube localhost nur in der Entwicklung.
  • Nutze in Produktion echte Domains.
  • Wildcard-Subdomains wie *.example.com werden unterstuetzt.

Wenn deine Seite in iframe, App WebView oder einer Zwischenseite laeuft, werden Origin-Header eventuell nicht stabil gesendet. Pruefe Origin und Referer vor dem Go-live.

Empfohlen: JavaScript SDK

npm install @ponponpay/sdk

Client initialisieren

import { PonponPayClient } from '@ponponpay/sdk/browser';

const client = new PonponPayClient({
  publicKey: 'pub_your_public_key',
  baseUrl: 'https://api.ponponpay.com'
});

Bestellung erstellen

const order = await client.createOrder({
  currency: 'USDT',
  network: 'tron',
  amount: 100,
  orderId: 'ORDER_123456',
  notifyUrl: 'https://your-site.com/webhook',
  redirectUrl: 'https://your-site.com/success'
});

window.location.href = order.paymentUrl;

Status abfragen

const status = await client.getOrderStatus(order.tradeId);
console.log(status.status);

Mehr SDK-Details findest du im JavaScript SDK Abschnitt oder im Repository README.

Manuelle API-Integration

1. Kurzlebiges Token abrufen

const tokenRes = await fetch('https://api.ponponpay.com/api/v1/sdk/token', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    public_key: 'pub_your_public_key',
    timestamp: Date.now()
  })
});

const tokenData = await tokenRes.json();
const token = tokenData.data.token;

2. Bestellung mit Token erstellen

const orderRes = await fetch('https://api.ponponpay.com/api/v1/sdk/orders', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${token}`
  },
  body: JSON.stringify({
    currency: 'USDT',
    network: 'tron',
    amount: 100,
    order_id: 'ORDER_123456',
    notify_url: 'https://your-site.com/webhook',
    redirect_url: 'https://your-site.com/success'
  })
});

const orderData = await orderRes.json();
window.location.href = orderData.data.payment_url;

3. Bestellstatus abfragen

const statusRes = await fetch(
  'https://api.ponponpay.com/api/v1/sdk/orders/T20240101120000123456/status',
  {
    headers: {
      Authorization: `Bearer ${token}`
    }
  }
);

const statusData = await statusRes.json();
console.log(statusData.data.status);

Funktionsgrenzen

FunktionUnterstuetztBeschreibung
Bestellung erstellenUnterstuetzt ueber SDK token order APIs.
Status abfragenNur fuer Bestellungen des mit der Public Key verbundenen Merchants.
Vollstaendige Admin APIsIm Public Key Modus nicht im Browser verfuegbar.
API Key im Browser offenlegenNiemals tun. Im Browser nur Public Key verwenden.

Sicherheit

  • Eine Public Key darf oeffentlich sein, funktioniert aber nur auf freigegebenen Domains.
  • Session Tokens sind kurzlebig und sollten vor Ablauf erneuert werden.
  • Das Backend prueft timestamp, Origin-Domain und Frontend-Limits des Merchants.
  • Nutze in Produktion immer HTTPS.

Wenn du serverseitige Management APIs brauchst, nutze den API Key Modus.