# Zahlungen für Kohlenstoffentfernung akzeptieren
Ermöglichen Sie Ihren Kundinnen und Kunden, CO₂-Entnahme zu erwerben, indem Sie die Climate API mit Ihrer Zahlungsintegration verwenden.
# QuickStart für Climate Orders
Ermöglichen Sie Ihren Kundinnen und Kunden, CO₂-Entnahme zu erwerben, indem Sie die [Climate Orders API](https://docs.stripe.com/api/climate/order.md) mit Ihrer Zahlungsintegration verwenden.
### Stripe Node-Bibliothek installieren
Installieren Sie das Paket und importieren Sie es in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine package.json-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### npm
Bibliothek installieren:
```bash
npm install --save stripe
```
#### GitHub
Oder laden Sie den Quellcode der Stripe-Node-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-node) herunter.
### Stripe-Ruby-Bibliothek installieren
Installieren Sie Stripe Ruby Gem und fordern Sie es in Ihrem Code an. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine Gemfile benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Terminal
Gem installieren:
```bash
gem install stripe
```
#### Bundler
Fügen Sie diese Zeile in Ihre Gemfile ein:
```bash
gem 'stripe'
```
#### GitHub
Oder laden Sie den Quellcode von Stripe Ruby Gem direkt von [GitHub](https://github.com/stripe/stripe-ruby) herunter.
### Stripe Java-Bibliothek installieren
Fügen Sie Ihrem Build die Abhängigkeit hinzu und importieren Sie die Bibliothek. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine pom.xml-Beispieldatei (für Maven) benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Maven
Fügen Sie folgende Abhängigkeit zu Ihrer POM-Datei hinzu und ersetzen Sie {VERSION} durch die Versionsnummer, die Sie verwenden möchten.
```bash
\ncom.stripe\nstripe-java\n{VERSION}\n
```
#### Gradle
Fügen Sie die Abhängigkeit zu Ihrer build.gradle-Datei hinzu und ersetzen Sie {VERSION} durch die Versionsnummer, die Sie verwenden möchten.
```bash
implementation "com.stripe:stripe-java:{VERSION}"
```
#### GitHub
Laden Sie die JAR-Datei direkt von [GitHub](https://github.com/stripe/stripe-java/releases/latest) herunter.
### Stripe-Python-Paket installieren
Installieren Sie das Stripe-Paket und importieren Sie es in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine requirements.txt-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### pip
Installieren Sie das Paket über pip:
```bash
pip3 install stripe
```
#### GitHub
Laden Sie den Quellcode der Stripe-Python-Bibliothek direkt [von GitHub](https://github.com/stripe/stripe-python) herunter.
### Stripe PHP-Bibliothek installieren
Installieren Sie die Bibliothek mit Composer und initialisieren Sie sie mit Ihrem geheimen API-Schlüssel. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine composer.csproj-Datei benötigen, laden Sie die Dateien über den Download-Link im Code-Editor herunter.
#### Composer
Bibliothek installieren:
```bash
composer require stripe/stripe-php
```
#### GitHub
Oder laden Sie den Quellcode der Stripe-PHP-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-php) herunter.
### Server einrichten
Fügen Sie Ihrem Build die Abhängigkeit hinzu und importieren Sie die Bibliothek. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine go.mod-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Go
Nutzen Sie für die Initialisierung Go-Module:
```bash
go get -u github.com/stripe/stripe-go/v85
```
#### GitHub
Oder laden Sie den Quellcode des Stripe-Go-Moduls direkt von [GitHub](https://github.com/stripe/stripe-go) herunter.
### Stripe.net-Bibliothek installieren
Installieren Sie das Paket mit .NET oder NuGet. Wenn Sie aber von Grund auf neu beginnen möchten, laden Sie die Dateien herunter, die eine konfigurierte .csproj-Datei enthalten.
#### dotnet
Bibliothek installieren:
```bash
dotnet add package Stripe.net
```
#### NuGet
Bibliothek installieren:
```bash
Install-Package Stripe.net
```
#### GitHub
Oder laden Sie den Quellcode der Stripe.net-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-dotnet) herunter.
### Stripe-Bibliotheken installieren
Installieren Sie die Pakete und importieren Sie sie in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine `package.json`-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
Bibliotheken installieren:
```bash
npm install --save stripe @stripe/stripe-js next
```
### Endpoint erstellen, um die Anfrage zu verarbeiten
Fügen Sie auf Ihrem Server einen Endpoint hinzu, der eine [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) erstellt. Die Checkout-Sitzung steuert, was Ihre Kundinnen und Kunden auf der Zahlungsseite sehen.
### Bestellwert berechnen
Verwenden Sie [Climate-Produkte](https://docs.stripe.com/api/climate/product.md), um den aktuellen Preis abzurufen und den Gesamtbetrag der Bestellung zu berechnen.
### Kund/innen erstellen
Suchen Sie in Ihrer Datenbank nach einem [Customer](https://docs.stripe.com/api/customers.md)-Objekt oder erstellen Sie einen neuen/eine neue `Customer`, um die Person, der Sie eine Rechnung ausstellen möchten, darzustellen.
### Leere Rechnung erstellen
Übergeben Sie die [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) in `metadata` und legen Sie das Attribut [collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) auf `send_invoice` fest. Damit Stripe eine Rechnung als überfällig kennzeichnet, müssen Sie den Parameter [days_until_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-days_until_due) hinzufügen. Wenn Sie eine Rechnung senden, sendet Stripe die Rechnung per E-Mail mit Zahlungsanweisungen an den Kunden/die Kundin. Weitere Optionen zur Rechnungsanpassung finden Sie unter [Rechnungen](https://docs.stripe.com/api/invoices.md).
### Rechnungsposten erstellen
Erstellen Sie einen Rechnungsposten, indem Sie `customer.id`, `invoice.id` sowie `amount_total` und `currency` der Bestellung übergeben.
### Rechnung senden
Senden Sie die Rechnung an die mit dem Kunden/der Kundin verknüpfte E-Mail-Adresse und leiten Sie sie zu einer Bestätigungsseite weiter.
Sobald Sie die Rechnung versenden, wird sie von Stripe finalisiert. In vielen Zuständigkeitsbereichen gelten finalisierte Rechnungen als rechtliches Dokument, sodass bestimmte Felder nicht geändert werden können. Wenn Sie Rechnungen versenden, die bereits bezahlt wurden, gibt es in der E-Mail keinen Hinweis auf die Zahlung.
Für jede finalisierte Rechnung können Sie entweder eine [PDF](https://docs.stripe.com/api/invoices/object.md#invoice_object-invoice_pdf) oder den [Link](https://docs.stripe.com/api/invoices/object.md#invoice_object-hosted_invoice_url) zur entsprechenden [gehosteten Rechnungsseite](https://docs.stripe.com/invoicing/hosted-invoice-page.md) herunterladen und senden.
### Checkout-Sitzung erstellen
Erstellen Sie eine `Checkout Session`, um Zahlungen von Ihren Kundinnen und Kunden einzuziehen.
### Checkout-Sitzung konfigurieren
Übergeben Sie die [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) in `metadata`. Weitere Anpassungsoptionen für die Checkout-Sitzung finden Sie unter [Checkout](https://docs.stripe.com/api/checkout/sessions.md).
### URLs für Bestätigung und Abbruch angeben
Geben Sie URLs für Bestätigungs- und Abbruchseiten an und stellen Sie sicher, dass diese öffentlich aufrufbar sind. Nur so kann Stripe Ihre Kundinnen und Kunden entsprechend weiterleiten. Für beide Seiten kann die gleiche URL verwendet werden.
### Weiterleiten zu Checkout
Leiten Sie nach dem Erstellen der Sitzung Ihre Kundinnen und Kunden an die URL für die Checkout-Seite weiter, die in der Antwort zurückgegeben wird.
### Aufstockung erstellen
Dadurch wird Ihre Bestellung über das mit Ihrem Konto verknüpfte Bankkonto finanziert, wobei [product.id](https://docs.stripe.com/api/climate/product/object.md#climate_product_object-id) in `metadata` übergeben wird. Stellen Sie sicher, dass Ihr Bankkonto Abbuchungen von Stripe zulässt und über das Guthaben für Ihre Bestellung verfügt.
### CO₂-Ausgleich-Bestellung erstellen
Eine [Climate Order](https://docs.stripe.com/api/climate/order.md) reserviert die CO-Entnahme und verfolgt sie bis zur Zustellung. Der Gesamtbetrag wird von Ihrem [Stripe-Guthaben](https://docs.stripe.com/api/balance.md) abgezogen.
> Verschieben Sie die Erstellung der Climate Order für den Produktionscode in einen Offline-Prozess und handhaben Sie doppelte Ereignisse. Weitere Informationen finden Sie unter [Best Practices für die Verwendung von Webhooks](https://docs.stripe.com/webhooks.md#best-practices).
### CO₂-Ausgleich-Bestellung erstellen
Wenn der/die Nutzer/in seine/ihre Rechnung bezahlt, erstellen Sie die [Climate Order](https://docs.stripe.com/api/climate/order.md). Der Gesamtbetrag wird von Ihrem [Stripe-Guthaben](https://docs.stripe.com/api/balance.md) abgezogen.
> Verschieben Sie die Erstellung der Climate Order für den Produktionscode in einen Offline-Prozess und handhaben Sie doppelte Ereignisse. Weitere Informationen finden Sie unter [Best Practices für die Verwendung von Webhooks](https://docs.stripe.com/webhooks.md#best-practices).
### CO₂-Ausgleich-Bestellung erstellen
Wenn der/die Nutzer/in seine/ihre Zahlung über Checkout abschließt, erstellen Sie die [Climate Order](https://docs.stripe.com/api/climate/order.md). Der Gesamtbetrag wird von Ihrem [Stripe Guthaben](https://docs.stripe.com/api/balance.md) abgezogen.
> Verschieben Sie die Erstellung der Climate Order für den Produktionscode in einen Offline-Prozess und handhaben Sie doppelte Ereignisse. Weitere Informationen finden Sie unter [Best Practices für die Verwendung von Webhooks](https://docs.stripe.com/webhooks.md#best-practices).
### CO₂-Ausgleich-Bestellung erstellen
Wenn die Aufstockung erfolgreich ist, erstellen Sie die [Climate Order](https://docs.stripe.com/api/climate/order.md). Der Gesamtbetrag wird von Ihrem [Stripe-Guthaben](https://docs.stripe.com/api/balance.md) abgezogen.
> Verschieben Sie die Erstellung der Climate Order für den Produktionscode in einen Offline-Prozess und handhaben Sie doppelte Ereignisse. Weitere Informationen finden Sie unter [Best Practices für die Verwendung von Webhooks](https://docs.stripe.com/webhooks.md#best-practices).
### Bestellvorschau hinzufügen
Fügen Sie eine Seite hinzu, um eine Vorschau der von Ihnen verkauften CO2-Entnahme zu erhalten, und erhalten Sie eine E-Mail von Ihrem Kunden/Ihrer Kundin. Zeigen Sie hier Ihre Marketing-Assets an und erläutern Sie das erwartete Lieferdatum und die geltenden Garantien für das Produkt.
### Bestellvorschau hinzufügen
Fügen Sie eine Seite hinzu, um eine Vorschau der von Ihnen angebotenen CO2-Entnahme anzuzeigen. Zeigen Sie hier Ihre Marketing-Assets an und erläutern Sie das erwartete Lieferdatum und die geltenden Garantien für das Produkt.
### Eine Bestellschaltfläche hinzufügen
Fügen Sie eine Schaltfläche hinzu, um eine Bestellung aufzugeben und die Rechnung zu senden.
### Eine Bestellschaltfläche hinzufügen
Fügen Sie eine Schaltfläche hinzu, um eine Bestellung aufzugeben. Wenn Ihre Kundinnen und Kunden darauf klicken, werden sie zu der von Stripe gehosteten Zahlungsseite weitergeleitet.
### Weiterleitung von Checkout einrichten
Zeigen Sie Ihren Kundinnen/Kunden eine Nachricht an, wenn sie auf Ihre Seite zurückgeleitet werden.
### Bestellseite hinzufügen
Erstellen Sie eine Seite in Ihrer Anwendung, um eine Bestellung aufzugeben.
### Asset Kit herunterladen
Verwenden Sie [das Asset Kit](https://stripe-images.s3.amazonaws.com/content-store/climate/APIAssetKit.zip), um Ihren Kundinnen/Kunden Produkte zur CO₂-Entnahme vorzustellen.
### Legen Sie Ihre Umgebungsvariablen fest
Fügen Sie Ihre veröffentlichbaren und geheimen Schlüssel einer `.env`-Datei hinzu. Next.js lädt sie automatisch als [Umgebungsvariablen](https://nextjs.org/docs/basic-features/environment-variables) in Ihre Anwendung. Fügen Sie auch einen geheimen Webhook-Schlüssel hinzu, den Sie im [Dashboard](https://dashboard.stripe.com/webhooks) oder mit der [Stripe-CLI](https://docs.stripe.com/stripe-cli.md) erstellen können.
### Anwendung ausführen
Starten Sie Ihre Anwendung mit `npm run dev` und gehen Sie zu .
### Jetzt testen
Klicken Sie auf **Bezahlen**, um zur Checkout-Seite weitergeleitet zu werden. Nutzen Sie die Testkarten, um eine Zahlung zu simulieren.
| Scenario | Card Number |
| ----------------------------------- | ---------------- |
| Payment succeeds | 4242424242424242 |
| Payment requires 3DS authentication | 4000002500003155 |
| Payment is declined | 4000000000009995 |
### Jetzt testen
Klicken Sie auf **Bestellung aufgeben**, um eine Testrechnung zu senden. Verwenden Sie eine dieser Testkarten, um das Bezahlen der Rechnung zu simulieren.
| Scenario | Card Number |
| ----------------------------------- | ---------------- |
| Payment succeeds | 4242424242424242 |
| Payment requires 3DS authentication | 4000002500003155 |
| Payment is declined | 4000000000009995 |
### CO₂-Ausgleich-Bestellung verifizieren
Die `Climate Order` kann im [Stripe-Dashboard](https://dashboard.stripe.com/climate/orders) angezeigt werden, um zu bestätigen, dass sie erfolgreich erstellt wurde.
// 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