# Accepter des paiements pour l'élimination du carbone
Offrez à votre clientèle la possibilité d'acheter des solutions d'élimination du carbone en utilisant l'API Climate dans votre intégration de paiement.
# Guide de démarrage de Climate Orders
Offrez à votre clientèle la possibilité d’acheter des solutions d’élimination du carbone à l’aide de l’[API Climate Orders](https://docs.stripe.com/api/climate/order.md) dans votre intégration de paiement.
### Installer la bibliothèque Node de Stripe
Installez le package et importez-le dans votre code. Si vous partez de zéro et qu’il vous faut un fichier package.json, vous pouvez également télécharger les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code.
#### npm
Installez la bibliothèque :
```bash
npm install --save stripe
```
#### GitHub
Vous pouvez sinon télécharger le code source de la bibliothèque Node de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-node).
### Installer la bibliothèque Ruby de Stripe
Installez le gem Ruby de Stripe et exigez-le dans votre code. Si vous partez de zéro et avez besoin d’un Gemfile, téléchargez les fichiers du projet à l’aide du lien dans l’éditeur de code.
#### Terminal
Installez le gem :
```bash
gem install stripe
```
#### Bundler
Ajoutez cette ligne à votre Gemfile :
```bash
gem 'stripe'
```
#### GitHub
Vous pouvez sinon télécharger le code source du gem Ruby de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-ruby).
### Installer la bibliothèque Java
Ajoutez la dépendance à votre build et importez la bibliothèque. Ou bien, si vous partez de zéro et avez besoin d’un exemple de fichier pom.xml (pour Maven), téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code.
#### Maven
Ajoutez la dépendance suivante à votre POM et remplacez {VERSION} par le numéro de version que vous souhaitez utiliser.
```bash
\ncom.stripe\nstripe-java\n{VERSION}\n
```
#### Gradle
Ajoutez la dépendance à votre fichier build.gradle et remplacez {VERSION} par le numéro de version que vous souhaitez utiliser.
```bash
implementation "com.stripe:stripe-java:{VERSION}"
```
#### GitHub
Téléchargez le fichier JAR directement [depuis GitHub](https://github.com/stripe/stripe-java/releases/latest).
### Installer le package Python de Stripe
Installez le package Stripe et importez-le dans votre code. Si vous partez de zéro et qu’il vous faut un fichier requirements.txt, téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code.
#### pip
Installez le package via pip :
```bash
pip3 install stripe
```
#### GitHub
Téléchargez le code source de la bibliothèque stripe-python directement [depuis GitHub](https://github.com/stripe/stripe-python).
### Installer la bibliothèque PHP
Installez la bibliothèque avec composer et initialisez-la avec votre clé API secrète. Si vous partez de zéro et que vous avez besoin d’un fichier composer.json, vous pouvez également télécharger les fichiers à l’aide du lien de téléchargement dans l’éditeur de code.
#### Composer
Installez la bibliothèque :
```bash
composer require stripe/stripe-php
```
#### GitHub
Vous pouvez sinon télécharger le code source de la bibliothèque php de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-php).
### Configurer votre serveur
Ajoutez la dépendance à votre build et importez la bibliothèque. Si vous partez de zéro et avez besoin d’un fichier go.mod, téléchargez les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code.
#### Go
Veillez à initialiser avec des modules Go :
```bash
go get -u github.com/stripe/stripe-go/v85
```
#### GitHub
Vous pouvez sinon télécharger le code source de la bibliothèque Go de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-go).
### Installer la bibliothèque Stripe.net
Installez le package avec .NET ou NuGet. Si vous partez de zéro, vous pouvez également télécharger les fichiers qui contiennent un fichier .csproj configuré.
#### .NET
Installez la bibliothèque :
```bash
dotnet add package Stripe.net
```
#### NuGet
Installez la bibliothèque :
```bash
Install-Package Stripe.net
```
#### GitHub
Vous pouvez sinon télécharger le code source de la bibliothèque .NET de Stripe directement [depuis GitHub](https://github.com/stripe/stripe-dotnet).
### Installer les bibliothèques Stripe
Installez les packages et importez-les dans votre code. Si vous partez de zéro et qu’il vous faut un fichier `package.json`, vous pouvez également télécharger les fichiers du projet à l’aide du lien de téléchargement dans l’éditeur de code.
Installez les bibliothèques :
```bash
npm install --save stripe @stripe/stripe-js next
```
### Créer un endpoint pour gérer la requête
Ajoutez un endpoint sur votre serveur créant une [session Checkout](https://docs.stripe.com/api/checkout/sessions.md). La session Checkout contrôle ce que votre client voit sur la page de paiement.
### Calculer le montant de la commande
Utilisez [Climate Products](https://docs.stripe.com/api/climate/product.md) pour récupérer le dernier tarif et calculer le montant total de la commande.
### Créer un client
Recherchez un [client](https://docs.stripe.com/api/customers.md) dans votre base de données ou créez un nouveau `Customer` pour représenter la personne que vous facturez.
### Créer une facture vide
Veillez à transmettre le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata` et définissez l’attribut [collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) sur `send_invoice`. Pour que Stripe soit en mesure de marquer une facture comme étant en retard, renseignez le paramètre [days_until_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-days_until_due). Stripe envoie au client la facture et des instructions de paiement par e-mail. Pour obtenir davantage d’options de personnalisation des factures, consultez la page relative aux [factures](https://docs.stripe.com/api/invoices.md).
### Créer un poste de facture
Créez un poste de facture en transmettant les paramètres `customer.id` et `invoice.id` ainsi que les paramètres `amount_total` et `currency` de la commande.
### Envoyer la facture
Envoyez la facture à l’adresse e-mail associée au client et redirigez vers une page de confirmation de paiement.
Dès que vous envoyez une facture, Stripe la finalise. De nombreuses juridictions considèrent les factures finalisées comme un document juridique, ce qui rend certains champs non modifiables. Si vous envoyez des factures déjà payées, aucune référence au paiement n’est fournie dans l’e-mail.
Pour toute facture finalisée, vous pouvez soit télécharger et envoyer un [PDF](https://docs.stripe.com/api/invoices/object.md#invoice_object-invoice_pdf), soit [créer un lien](https://docs.stripe.com/api/invoices/object.md#invoice_object-hosted_invoice_url) vers la [page de la facture hébergée](https://docs.stripe.com/invoicing/hosted-invoice-page.md) correspondante.
### Créer une session Checkout
Créez une `Checkout Session` pour encaisser le paiement de vos clients.
### Configurer la session Checkout
Veillez à transmettre le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata`. Pour plus d’options de personnalisation de la session Checkout, consultez [Checkout](https://docs.stripe.com/api/checkout/sessions.md).
### Fournir les URL de confirmation et d’annulation
Indiquez les URL des pages de confirmation ou d’annulation de paiement. Assurez-vous qu’elles sont publiquement accessibles afin que Stripe puisse y rediriger les clients. Vous pouvez également gérer les états de confirmation et d’annulation avec la même URL.
### Rediriger vers Checkout
Après avoir créé la session, redirigez votre client vers l’URL de la page Checkout renvoyée dans la réponse.
### Créer une recharge
Votre commande est financée à l’aide du compte bancaire associé à votre compte, en transmettant le [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) dans `metadata`. Assurez-vous que votre compte bancaire autorise les prélèvements de Stripe et qu’il dispose d’un solde suffisant pour couvrir votre commande.
### Créer une commande de solution d’élimination du carbone
Une [commande Climate](https://docs.stripe.com/api/climate/order.md) réserve la solution d’élimination du carbone et en assure le suivi jusqu’à livraison. Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md).
> Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus.
### Créer une commande de solution d’élimination du carbone
Lorsque l’utilisateur règle sa facture, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md).
> Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus.
### Créer une commande de solution d’élimination du carbone
Lorsque l’utilisateur finalise son paiement à l’aide de Checkout, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md).
> Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus.
### Créer une commande de solution d’élimination du carbone
Une fois la recharge effectuée, créez la [commande Climate](https://docs.stripe.com/api/climate/order.md). Le montant total est déduit de votre [solde Stripe](https://docs.stripe.com/api/balance.md).
> Pour le code de production, déplacez la création de la commande Climate vers un processus hors ligne et gérez les événements en double. Consultez les [meilleures pratiques pour l’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) pour en savoir plus.
### Ajouter une page d’aperçu de commande
Ajoutez une page permettant de prévisualiser les solutions d’élimination du carbone que vous proposez à la vente et de collecter un e-mail auprès de votre client. Affichez ici vos ressources marketing et indiquez clairement la date de livraison prévue et les garanties applicables à votre produit.
### Ajouter une page d’aperçu de commande
Ajoutez une page permettant de prévisualiser les solutions d’élimination du carbone que vous proposez à la vente. Affichez ici vos ressources marketing et indiquez clairement la date de livraison prévue et les garanties applicables à votre produit.
### Ajouter un bouton de commande
Ajoutez un bouton pour passer une commande et envoyer la facture.
### Ajouter un bouton de commande
Ajoutez un bouton pour passer une commande. Lorsque votre client clique sur ce bouton, il est redirigé vers le formulaire de paiement hébergé par Stripe.
### Gérer la redirection au retour de Checkout
Affichez un message destiné au client lorsqu’il est redirigé vers votre page.
### Ajouter une page de commande
Dans votre application, créez une page pour passer une commande.
### Télécharger le kit de ressources
Utilisez [le kit de ressources](https://stripe-images.s3.amazonaws.com/content-store/climate/APIAssetKit.zip) pour présenter à vos clients les produits d’élimination du carbone.
### Définir vos variables d’environnement
Ajoutez vos clés publiables et vos clés secrètes à un fichier `.env`. Next.js les charge automatiquement dans votre application en tant que [variables d’environnement](https://nextjs.org/docs/basic-features/environment-variables). Ajoutez également une clé secrète de webhook que vous pouvez créer dans le [Dashboard](https://dashboard.stripe.com/webhooks) ou à l’aide de la [CLI Stripe](https://docs.stripe.com/stripe-cli.md).
### Exécuter l’application
Démarrez votre application avec `npm run dev` et accédez à .
### Faire un essai
Cliquez sur **Checkout** pour être redirigé vers la page Checkout. Utilisez l’une de ces cartes de test pour simuler un paiement.
| Scenario | Card Number |
| ----------------------------------- | ---------------- |
| Payment succeeds | 4242424242424242 |
| Payment requires 3DS authentication | 4000002500003155 |
| Payment is declined | 4000000000009995 |
### Faire un essai
Cliquez sur **Passer commande** pour envoyer une facture test. Utilisez l’une de ces cartes de test pour simuler le paiement de la facture.
| Scenario | Card Number |
| ----------------------------------- | ---------------- |
| Payment succeeds | 4242424242424242 |
| Payment requires 3DS authentication | 4000002500003155 |
| Payment is declined | 4000000000009995 |
### Créer votre commande de solution d’élimination du carbone
Affichez la `Climate Order` dans le [Dashboard Stripe](https://dashboard.stripe.com/climate/orders) pour confirmer que la création de la commande Climate a bien abouti.
// Check to see if this is a redirect back from the server
const query = new URLSearchParams(window.location.search);
if (query.get("success")) {
setMessage("Order placed!");
}
if (query.get("canceled")) {
setMessage("Order canceled.");
}
Frontier's 2027 offtake portfolio
$550.00/ton
Frontier's 2027 offtake portfolio
$550.00/ton
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
const currency = 'usd';
const {data: products} = await stripe.climate.products.list();
// Select which carbon removal product you want to order
const climateProduct = products.find((p) => p.id === 'climsku_frontier_offtake_portfolio_2027');
// Calculate the total amount based on the number of tons
const unit_amount = 1.0 * climateProduct.current_prices_per_metric_ton[currency].amount_total;
// Look up a product in your database or create a new one
const product = await stripe.products.create({
name: climateProduct.name,
});
// Create Checkout Sessions from body params.
const session = await stripe.checkout.sessions.create({
line_items: [
{
price_data: {
unit_amount,
currency,
product: product.id,
},
quantity: 1,
},
],
mode: 'payment',
metadata: {
climate_product: climateProduct.id
},
success_url: `${req.headers.origin}?success=true`,
});
res.redirect(303, session.url);
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
const currency = 'usd';
const {data: products} = await stripe.climate.products.list();
// Select which carbon removal product you want to order
const climateProduct = products.find((p) => p.id === 'climsku_frontier_offtake_portfolio_2027');
// Calculate the total amount based on the number of tons
const unit_amount = 1.0 * climateProduct.current_prices_per_metric_ton[currency].amount_total;
// Look up a customer in your database or create a new one
const customer = await stripe.customers.create({email: 'TODO@example.com'});
// Create an Invoice
const invoice = await stripe.invoices.create({
customer: customer.id,
collection_method: 'send_invoice',
days_until_due: 1,
metadata: {
climate_product: climateProduct.id
},
});
// Look up a product in your database or create a new one
const product = await stripe.products.create({
name: climateProduct.name,
});
// Create an Invoice Item with the Price, and Customer you want to charge
await stripe.invoiceItems.create({
customer: customer.id,
invoice: invoice.id,
price_data: {
unit_amount,
currency,
product: product.id,
},
});
// Send the Invoice
await stripe.invoices.sendInvoice(invoice.id);
res.redirect(303, req.headers.origin + '?success=true');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
const currency = 'usd';
const {data: products} = await stripe.climate.products.list();
// Select which product you want to order
const product = products.find((product) => product.id === 'climsku_frontier_offtake_portfolio_2027');
// Calculate the total amount based on the number of tons
const amount = 1.0 * product.current_prices_per_metric_ton[currency].amount_total;
// Create a top-up
await stripe.topups.create({
amount,
currency,
metadata: {
climate_product: product.id
},
});
res.redirect(303, req.headers.origin + '?success=true');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
const order = await stripe.climate.orders.create({
metric_tons: '1.0',
product: 'climsku_frontier_offtake_portfolio_2027',
});
res.redirect(303, req.headers.origin + '?success=true');
case 'invoice.paid': {
const invoice = event.data.object;
if (invoice.metadata.climate_product) {
await stripe.climate.orders.create({
amount: invoice.total,
currency: invoice.currency,
product: invoice.metadata.climate_product,
});
}
break;
}
case 'checkout.session.completed': {
const session = event.data.object;
if (session.metadata.climate_product) {
await stripe.climate.orders.create({
amount: session.amount_total,
currency: session.currency,
product: session.metadata.climate_product,
});
}
break;
}
case 'topup.succeeded': {
const topup = event.data.object;
if (topup.metadata.climate_product) {
await stripe.climate.orders.create({
amount: topup.amount,
currency: topup.currency,
product: topup.metadata.climate_product,
});
}
break;
}
\# https://dashboard.stripe.com/apikeys
STRIPE_SECRET_KEY=<>
\# Set this environment variable to support webhooks — https://stripe.com/docs/webhooks#verify-events
STRIPE_WEBHOOK_SECRET=whsec_12345