Passer au contenu principal

Prérequis

Pour intégrer l’API Dodo Payments, vous aurez besoin de :
  • Un compte marchand Dodo Payments
  • Identifiants API (clé API et clé secrète de webhook) depuis le tableau de bord

Configuration du tableau de bord

  1. Accédez au Tableau de bord Dodo Payments
  2. Créez un produit (paiement unique ou abonnement)
  3. Générez votre clé API :
    • Allez dans Développeur > API
    • Guide détaillé
    • Copiez la clé API dans l’environnement nommé DODO_PAYMENTS_API_KEY
  4. Configurez les webhooks :
    • Allez dans Développeur > Webhooks
    • Créez une URL de webhook pour les notifications de paiement
    • Copiez la clé secrète de webhook dans l’environnement

Intégration

Liens de paiement

Choisissez le chemin d’intégration qui correspond à votre cas d’utilisation :
  • Sessions de paiement (recommandé) : Meilleur pour la plupart des intégrations. Créez une session sur votre serveur et redirigez les clients vers un paiement sécurisé hébergé.
  • Overlay Checkout (intégré) : Utilisez-le lorsque vous avez besoin d’une expérience en page qui intègre le paiement hébergé sur votre site.
  • Liens de paiement statiques : URL partageables instantanément sans code pour une collecte rapide des paiements.
  • Liens de paiement dynamiques : Liens créés par programmation. Cependant, les sessions de paiement sont recommandées et offrent plus de flexibilité.

1. Sessions de paiement

Utilisez les sessions de paiement pour créer une expérience de paiement sécurisée et hébergée pour les paiements uniques ou les abonnements. Vous créez une session sur votre serveur, puis redirigez le client vers le checkout_url retourné.
Les sessions de paiement sont valides pendant 24 heures par défaut. Si vous passez confirm=true, les sessions sont valides pendant 15 minutes et tous les champs requis doivent être fournis.
1

Créer une session de paiement

Choisissez votre SDK préféré ou appelez l’API REST.
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode', // defaults to 'live_mode'
});

const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  customer: { email: '[email protected]', name: 'John Doe' },
  return_url: 'https://yourapp.com/checkout/success',
});
2

Rediriger le client vers le paiement

Après la création de la session, redirigez vers le checkout_url pour commencer le flux hébergé.
// Example in a browser context
window.location.href = session.checkout_url;
Préférez les sessions de paiement pour la manière la plus rapide et la plus fiable de commencer à accepter des paiements. Pour une personnalisation avancée, consultez le guide complet des sessions de paiement et la référence API.

2. Overlay Checkout

Pour une expérience de paiement intégrée sans couture, explorez notre intégration Overlay Checkout qui permet aux clients de finaliser leurs paiements sans quitter votre site web.

3. Liens de paiement statiques

Les liens de paiement statiques vous permettent d’accepter rapidement des paiements en partageant une URL simple. Vous pouvez personnaliser l’expérience de paiement en passant des paramètres de requête pour pré-remplir les détails du client, contrôler les champs du formulaire et ajouter des métadonnées personnalisées.
1

Construire votre lien de paiement

Commencez par l’URL de base et ajoutez votre ID de produit :
https://checkout.dodopayments.com/buy/{productid}
2

Ajouter des paramètres essentiels

Incluez les paramètres de requête essentiels :
  • quantity
    integer
    default:"1"
    Nombre d’articles à acheter.
  • redirect_url
    string
    required
    URL vers laquelle rediriger après la finalisation du paiement.
L’URL de redirection inclura les détails du paiement en tant que paramètres de requête, par exemple :
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded
3

Pré-remplir les informations du client (optionnel)

Ajoutez des champs client ou de facturation en tant que paramètres de requête pour simplifier le paiement.
  • fullName
    string
    Nom complet du client (ignoré si firstName ou lastName est fourni).
  • firstName
    string
    Prénom du client.
  • lastName
    string
    Nom de famille du client.
  • email
    string
    Adresse e-mail du client.
  • country
    string
    Pays du client.
  • addressLine
    string
    Adresse de rue.
  • city
    string
    Ville.
  • state
    string
    État ou province.
  • zipCode
    string
    Code postal.
  • showDiscounts
    boolean
    true ou false
4

Contrôler les champs du formulaire (optionnel)

Vous pouvez désactiver des champs spécifiques pour les rendre en lecture seule pour le client. Cela est utile lorsque vous avez déjà les détails du client (par exemple, les utilisateurs connectés).
Pour désactiver un champ, fournissez sa valeur et définissez le drapeau disable… correspondant sur true :
&[email protected]&disableEmail=true
ChampDrapeau de désactivationParamètre requis
Nom completdisableFullNamefullName
PrénomdisableFirstNamefirstName
Nom de familledisableLastNamelastName
E-maildisableEmailemail
PaysdisableCountrycountry
Ligne d’adressedisableAddressLineaddressLine
VilledisableCitycity
ÉtatdisableStatestate
Code postaldisableZipCodezipCode
Désactiver des champs aide à prévenir les modifications accidentelles et garantit la cohérence des données.
Définir showDiscounts=false désactivera et masquera la section des réductions dans le formulaire de paiement. Utilisez cela si vous souhaitez empêcher les clients d’entrer des codes de coupon ou de promotion lors du paiement.
5

Ajouter des contrôles avancés (optionnel)

  • paymentCurrency
    string
    Spécifie la devise de paiement. Par défaut, c’est la devise du pays de facturation.
  • showCurrencySelector
    boolean
    default:"true"
    Afficher ou masquer le sélecteur de devise.
  • paymentAmount
    integer
    Montant en cents (pour le prix Pay What You Want uniquement).
  • metadata_*
    string
    Champs de métadonnées personnalisées (par exemple, metadata_orderId=123).
6

Partager le lien

Envoyez le lien de paiement complété à votre client. Lorsqu’il le visite, tous les paramètres de requête sont collectés et stockés avec un ID de session. L’URL est ensuite simplifiée pour inclure uniquement le paramètre de session (par exemple, ?session=sess_1a2b3c4d). Les informations stockées persistent à travers les actualisations de page et sont accessibles tout au long du processus de paiement.
L’expérience de paiement du client est maintenant rationalisée et personnalisée en fonction de vos paramètres.

4. Liens de paiement dynamiques

Préférez les sessions de paiement pour la plupart des cas d’utilisation, elles offrent plus de flexibilité et de contrôle.
Créé via un appel API ou notre SDK avec les détails du client. Voici un exemple : Il existe deux API pour créer des liens de paiement dynamiques : Le guide ci-dessous concerne la création de liens de paiement uniques. Pour des instructions détaillées sur l’intégration des abonnements, consultez ce Guide d’intégration des abonnements.
Assurez-vous de passer payment_link = true pour obtenir le lien de paiement
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
environment: 'test_mode', // defaults to 'live_mode'
});

async function main() {
const payment = await client.payments.create({
payment_link: true,
billing: { city: 'city', country: 'AF', state: 'state', street: 'street', zipcode: 0 },
customer: { email: '[email protected]', name: 'name' },
product_cart: [{ product_id: 'product_id', quantity: 0 }],
});

console.log(payment.payment_id);
}

main();
Après avoir créé le lien de paiement, redirigez vos clients pour finaliser leur paiement.

Mise en œuvre des webhooks

Configurez un point de terminaison API pour recevoir des notifications de paiement. Voici un exemple utilisant Next.js :
import { Webhook } from "standardwebhooks";
import { headers } from "next/headers";
import { WebhookPayload } from "@/types/api-types";

const webhook = new Webhook(process.env.DODO_WEBHOOK_KEY!); // Replace with your secret key generated from the Dodo Payments Dashboard

export async function POST(request: Request) {
  const headersList = headers();
  const rawBody = await request.text();

  const webhookHeaders = {
    "webhook-id": headersList.get("webhook-id") || "",
    "webhook-signature": headersList.get("webhook-signature") || "",
    "webhook-timestamp": headersList.get("webhook-timestamp") || "",
  };

  await webhook.verify(rawBody, webhookHeaders);
  const payload = JSON.parse(rawBody) as WebhookPayload;
  
  // Process the payload according to your business logic
}
Notre mise en œuvre des webhooks suit la spécification des Webhooks Standards. Pour les définitions de types de webhook, consultez notre Guide des événements de webhook. Vous pouvez vous référer à ce projet avec une mise en œuvre de démonstration sur GitHub utilisant Next.js et TypeScript. Vous pouvez consulter la mise en œuvre en direct ici.