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é) : Idéal pour la plupart des intégrations. Créez une session sur votre serveur et redirigez les clients vers un paiement sécurisé, hébergé.
  • Paiement en superposition : Utilisez-le lorsque vous avez besoin d’une expérience en page qui ouvre le paiement comme une superposition modale sur votre site.
  • Paiement en ligne : Intégrez le paiement directement dans la mise en page de votre page pour des expériences de paiement entièrement intégrées et de marque.
  • Liens de paiement statiques : URL partageables instantanément sans code pour une collecte de paiement rapide.
  • 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. Paiement en ligne

Pour des expériences de paiement entièrement intégrées directement dans votre page, utilisez notre intégration Paiement en ligne. Cela vous permet de créer des résumés de commande personnalisés et d’avoir un contrôle total sur la mise en page du paiement pendant que Dodo Payments gère la collecte des paiements de manière sécurisée.

4. Liens de paiement statiques

Les liens de paiement statiques vous permettent d’accepter rapidement des paiements en partageant une simple URL. 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 de formulaire et ajouter des métadonnées personnalisées.
1

Construisez votre lien de paiement

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

Ajoutez des paramètres essentiels

Incluez les paramètres de requête essentiels :
  • quantity
    integer
    défaut:"1"
    Nombre d’articles à acheter.
  • redirect_url
    string
    requis
    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 de 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
Adresse lignedisableAddressLineaddressLine
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

Ajoutez 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
    défaut:"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

Partagez 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 simplifié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 qu’ils complètent 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 Standard Webhooks. Pour les définitions de types de webhook, consultez notre Guide des événements de webhook. Vous pouvez consulter 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.