# Crie uma página de checkout hospedada pela Stripe # Página hospedada pela Stripe Explore um exemplo de código completo e funcional de uma integração com o [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) em que os clientes clicam em um botão no seu site e são redirecionados para uma página de pagamento hospedada pela Stripe. O exemplo inclui código do lado do cliente e do servidor, e a página de pagamento é pré-integrada. ### Instale a biblioteca Node da Stripe Instale o pacote e importe-o para seu código. Se estiver começando do zero e precisar de um arquivo package.json, baixe os arquivos do projeto pelo link de download no editor de código. #### npm Instale a biblioteca: ```bash npm install --save stripe ``` #### GitHub Ou baixe o código-fonte da biblioteca stripe-node diretamente [do GitHub](https://github.com/stripe/stripe-node). ### Instalar a biblioteca Ruby da Stripe Instale o gem do Ruby da Stripe e exija-o no seu código. Alternativamente, se estiver começando do zero e precisar de um Gemfile, baixe os arquivos do projeto usando o link de download no editor de código. #### Terminal Instale o gem: ```bash gem install stripe ``` #### Bundler Adicione esta linha ao seu Gemfile: ```bash gem 'stripe' ``` #### GitHub Ou baixe o código-fonte do gem stripe-ruby diretamente [do GitHub](https://github.com/stripe/stripe-ruby). ### Instalar a biblioteca Java da Stripe Adicione a dependência à compilação e importe a biblioteca. Se você estiver começando do zero e precisar de um modelo de arquivo pom.xml (para Maven), baixe os arquivos do projeto usando o link de download no editor de código. #### Maven Adicione a dependência a seguir ao POM e substitua {VERSION} pelo número de versão que você quer usar. ```bash \ncom.stripe\nstripe-java\n{VERSION}\n ``` #### Gradle Adicione a dependência ao arquivo build.gradle e substitua {VERSION} pelo número de versão que você quer usar. ```bash implementation "com.stripe:stripe-java:{VERSION}" ``` #### GitHub Baixe o JAR diretamente [do GitHub](https://github.com/stripe/stripe-java/releases/latest). ### Instalar o pacote Python da Stripe Instale o pacote da Stripe e importe-o no seu código. Se você estiver começando do zero e precisar de um arquivo requirements.txt, baixe os arquivos do projeto usando o link de download no editor de código. #### pip Instale o pacote usando pip: ```bash pip3 install stripe ``` #### GitHub Faça o download diretamente o código-fonte da biblioteca Stripe-Python [do GitHub](https://github.com/stripe/stripe-python). ### Instalar a biblioteca PHP da Stripe Instale a biblioteca com o composer e inicialize-a com sua chave de API secreta. Se você estiver começando do zero e precisar de um arquivo composer.json, baixe os arquivos usando o link de download no editor de código. #### Composer Instale a biblioteca: ```bash composer require stripe/stripe-php ``` #### GitHub Ou baixe o código-fonte da biblioteca stripe-php diretamente [do GitHub](https://github.com/stripe/stripe-php). ### Configurar o servidor Adicione a dependência à compilação e importe a biblioteca. Se você estiver começando do zero e precisar de um arquivo go.mod, baixe os arquivos do projeto usando o link de download no editor de código. #### Go Não se esqueça de inicializar com Go Modules: ```bash go get -u github.com/stripe/stripe-go/v85 ``` #### GitHub Ou baixe o código-fonte do módulo stripe-go diretamente [do GitHub](https://github.com/stripe/stripe-go). ### Instalar a biblioteca Stripe.net Instale o pacote como .NET ou NuGet. Se estiver começando do zero, você também pode baixar os arquivos com um .csproj configurado. #### dotnet Instale a biblioteca: ```bash dotnet add package Stripe.net ``` #### NuGet Instale a biblioteca: ```bash Install-Package Stripe.net ``` #### GitHub Ou baixe o código-fonte da biblioteca Stripe.net diretamente [do GitHub](https://github.com/stripe/stripe-dotnet). ### Instalar as bibliotecas da Stripe Instale os pacotes e importe-os para o código. Se estiver começando do zero e precisar de um arquivo `package.json`, baixe os arquivos do projeto pelo link de download no editor de código. Instale as bibliotecas: ```bash npm install --save stripe @stripe/stripe-js next ``` ### Criar uma sessão do Checkout Adicione um endpoint ao seu servidor para criar uma [sessão do Checkout](https://docs.stripe.com/api/checkout/sessions.md). Uma Sessão do Checkout controla o que seu cliente vê na página de pagamento, como itens de linha, valor, moeda e formas de pagamento aceitas. Por padrão, cartões e outras formas de pagamento comuns já são ativadas, e você pode habilitar ou desabilitar formas de pagamento no próprio [Stripe Dashboard](https://dashboard.stripe.com/settings/payment_methods). ### Criar uma sessão do Checkout Adicione um [Gerenciador de Rotas](https://nextjs.org/docs/app/building-your-application/routing/route-handlers) ao aplicativo para criar uma [Sessão do Checkout](https://docs.stripe.com/api/checkout/sessions.md). Uma Sessão do Checkout controla o que seu cliente vê na página de pagamento, como itens de linha, valor e moeda do pedido e formas de pagamento aceitas. Por padrão, ativamos para você cartões e outras formas de pagamento comuns. Você pode habilitar ou desabilitar formas de pagamento diretamente no [Stripe Dashboard](https://dashboard.stripe.com/settings/payment_methods). ### Definir um produto para venda Sempre mantenha informações sensíveis sobre seu estoque de produtos, como preço e disponibilidade, no seu servidor, para evitar manipulação do cliente no lado do cliente. Defina informações do produto ao criar a Checkout Session, usando [IDs de preço predefinidos](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#create-product-prices-upfront) ou, em tempo real com [price_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data). ### Escolha um modo Para gerenciar diferentes tipos de transações, ajuste o parâmetro `modo`. Para pagamento únicos, use `pagamento`. Para iniciar pagamentos recorrentes com [assinaturas](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted), alterne o `modo` para `assinatura`. Para [configurar pagamentos futuros](https://docs.stripe.com/payments/save-and-reuse.md?platform=web&ui=stripe-hosted), defina o `modo` para `configurar`. ### Fornecer URL de sucesso Defina um URL para a página de sucesso, lembrando que ele deve ser acessível publicamente para que a Stripe consiga redirecionar os clientes para essa página. ### Redirecionar para o Checkout Depois de criar a sessão, redirecione o cliente ao URL da página do Checkout retornado na resposta. ### Adicionar uma página de sucesso Crie uma página de sucesso para o URL informado em `success_url` da sessão do Checkout. Use essa página para exibir ao cliente mensagens de confirmação de pedido ou detalhes do pedido. A Stripe redireciona para essa página depois que o cliente finaliza o checkout. ### Adicionar uma página de prévia do pedido Por fim, adicione uma página para mostrar uma prévia do pedido do cliente e permita que o cliente revise ou modifique o pedido. Quando um cliente é enviado à página do Checkout, o pedido está na forma final e não pode mais ser modificado sem criar outra sessão do Checkout. ### Adicionar uma página de prévia do pedido Adicione uma página para mostrar uma prévia do pedido do cliente e permita que o cliente revise ou modifique o pedido. Quando um cliente é enviado à página do Checkout, o pedido está na forma final e não pode mais ser modificado sem criar outra sessão do Checkout. ### Adicionar um botão de checkout Adicione um botão à página de prévia do pedido. Quando o cliente clica nesse botão, é redirecionado à página de pagamento hospedada pela Stripe. ### Adicionar um botão de checkout Adicione um botão à página de prévia do pedido. Quando o cliente clica nesse botão, é redirecionado ao formulário de pagamento hospedado pela Stripe. ### Adicionar uma página de prévia do pedido Adicione um arquivo em `pages/` para criar uma página mostrando uma prévia do pedido do cliente e permita que o cliente revise ou modifique o pedido. Quando um cliente é enviado à página do Checkout, o pedido está na forma final e não pode mais ser modificado sem criar outra sessão do Checkout. ### Obter uma sessão do Checkout Adicione um botão à página de prévia do pedido. Quando o cliente clicar, faça uma solicitação ao Gerenciador de Rotas para redirecioná-lo a uma nova Sessão do Checkout. ### Gerenciar o redirecionamento recebido do Checkout Mostre uma mensagem ao cliente quando ele for redirecionado de volta à sua página. Aguarde a finalização do pagamento para executar o pedido (por exemplo, remessa dos itens ou envio de recibos por e-mail). Saiba mais sobre a [execução de pedidos com o Checkout](https://docs.stripe.com/checkout/fulfillment.md). ### Definir as variáveis de ambiente Adicione suas chaves publicáveis e secretas a um arquivo `.env`. O Next.js carrega-as automaticamente no aplicativo como [variáveis de ambiente](https://nextjs.org/docs/basic-features/environment-variables). Se quiser escutar webhooks, inclua também um segredo de webhook, que pode ser criado no [Dashboard](https://dashboard.stripe.com/webhooks) ou com o [Stripe CLI](https://docs.stripe.com/stripe-cli.md). ### Antes de executar o aplicativo Adicione `“proxy”: “”` ao arquivo `package.json` durante o desenvolvimento local. ### Executar o aplicativo Inicie seu servidor e vá para ### Executar o aplicativo Inicie seu servidor e vá para ### Executar o aplicativo Inicie seu aplicativo com `npm run dev` e vá para ### Experimente Clique no botão de checkout para ser redirecionado à página do Stripe Checkout. Use qualquer um destes cartões de teste para simular um pagamento. | Scenario | Card Number | | ----------------------------------- | ---------------- | | Payment succeeds | 4242424242424242 | | Payment requires 3DS authentication | 4000002500003155 | | Payment is declined | 4000000000009995 | ## Parabéns! Você tem uma integração básica do Checkout funcionando. Agora saiba como personalizar a aparência da sua página de checkout e automatizar o recolhimento de impostos. ### Personalizar a página de checkout Personalize a aparência da página do Checkout hospedada da seguinte forma: - Adicionar seu logotipo e tema de cores nas [configurações de marca](https://dashboard.stripe.com/settings/branding). - Usar a [API Checkout Sessions](https://docs.stripe.com/api/checkout/sessions/create.md) para ativar outros recursos, como coleta de endereços ou preenchimento prévio de dados do cliente. ### Preencher dados do cliente Use [customer_email](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_email) para inserir o e-mail do cliente no campo de e-mail. Você também pode enviar um ID de [Cliente](https://docs.stripe.com/api/customers.md) ao campo `customer` para preencher o campo com o e-mail armazenado em Customer. ### Escolher um botão Enviar Configure a cópia exibida no botão enviar do Checkout, configurando o [submit_type](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-submit_type). Há quatro tipos diferentes de envio. ### Coletar dados de cobrança e envio Use [billing_address_collection](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-billing_address_collection) e [shipping_address_collection](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-shipping_address_collection) para coletar o endereço do cliente. [shipping_address_collection](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-shipping_address_collection) exige uma lista de `allowed_countries`. O Checkout exibe a lista de países permitidos em um menu suspenso na página. ### Ver a prévia da página personalizada Clique no botão de checkout para ver um exemplo de página do Stripe Checkout com esses campos. Saiba mais sobre todas as possíveis [personalizações do Checkout](https://docs.stripe.com/payments/checkout/customization.md). ### Automatizar o recolhimento de impostos Calcule e recolha o valor correto de impostos sobre suas transações na Stripe. Saiba mais sobre o [Stripe Tax](https://docs.stripe.com/tax.md) e como [adicioná-lo ao Checkout](https://docs.stripe.com/tax/checkout.md). ### Configurar o Stripe Tax no Dashboard [Ative o Stripe Tax](https://dashboard.stripe.com/tax) para monitorar suas obrigações fiscais, recolher automaticamente os impostos e acessar os relatórios necessários para enviar declarações. ### Adicionar o parâmetro de imposto automático Defina o parâmetro `automatic_tax` como `enabled: true`. ### Clientes novos e recorrentes Por padrão, o Checkout só cria [Customers](https://docs.stripe.com/api/customers.md) quando um é necessário (por exemplo, para assinaturas). Caso contrário, o Checkout usa [clientes convidados](https://docs.stripe.com/payments/checkout/guest-customers.md) para agrupar pagamentos no Dashboard. Você também pode configurar o Checkout para sempre criar um cliente ou especificar um cliente recorrente. ### Sempre criar clientes Para criar clientes sempre que nenhum cliente for informado, defina [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) como `'always'`. ### Especificar clientes que retornam Para associar um Checkout Session a um cliente já existente, informe o [cliente](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer) ao criar a sessão. Se você modela clientes usando o Accounts v2, também pode passar um ID da conta no campo [customer_account](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_account) para preencher automaticamente o endereço de e-mail associado. Saiba mais sobre a [diferença entre usar Customers v1 e Accounts v2](https://docs.stripe.com/connect/use-accounts-as-customers.md). // This test secret API key is a placeholder. Don't include personal details in requests with this key. // To see your test secret API key embedded in code samples, sign in to your Stripe account. // You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. const stripe = require('stripe')('<>'); const session = await stripe.checkout.sessions.create({ customer_email: 'customer@example.com', submit_type: 'donate', billing_address_collection: 'auto', shipping_address_collection: { allowed_countries: ['US', 'CA'], }, line_items: [ { // Provide the exact Price ID (for example, price_1234) of the product you want to sell price: '{{PRICE_ID}}', quantity: 1, }, ], mode: {{CHECKOUT_MODE}}, success_url: `${YOUR_DOMAIN}/success.html`, success_url: `${YOUR_DOMAIN}?success=true`, automatic_tax: {enabled: true}, customer_creation: 'always', // Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session // customer: '{{CUSTOMER_ID}}' }); res.redirect(303, session.url); { "name": "stripe-sample", "version": "1.0.0", "description": "A sample Stripe implementation", "main": "server.js", "scripts": { "start": "node server.js" }, "author": "stripe-samples", "license": "ISC", "dependencies": { "express": "^4.17.1", "stripe": "^21.0.1" } } { "name": "stripe-sample", "version": "0.1.0", "dependencies": { "@stripe/react-stripe-js": "^3.7.0", "@stripe/stripe-js": "^7.3.0", "express": "^4.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "^3.4.0", "stripe": "21.0.1" }, "devDependencies": { "concurrently": "4.1.2" }, "homepage": "http://localhost:3000/checkout", "proxy": "http://localhost:4242", "scripts": { "start-client": "react-scripts start", "start-server": "node server.js", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "start": "concurrently \"yarn start-client\" \"yarn start-server\"" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } \# This test secret API key is a placeholder. Don't include personal details in requests with this key. # To see your test secret API key embedded in code samples, sign in to your Stripe account. # You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. client = Stripe::StripeClient.new('<>') session = client.v1.checkout.sessions.create({ customer_email: 'customer@example.com', submit_type: 'donate', billing_address_collection: 'required', shipping_address_collection: { allowed_countries: ['US', 'CA'], }, line_items: [{ \# Provide the exact Price ID (for example, price_1234) of the product you want to sell price: '{{PRICE_ID}}', quantity: 1, }], mode: {{CHECKOUT_MODE}}, success_url: YOUR_DOMAIN + '/success.html', success_url: YOUR_DOMAIN + '?success=true', automatic_tax: {enabled: true}, customer_creation: 'always', \# Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session # customer: '{{CUSTOMER_ID}}' }) redirect session.url, 303 import stripe \# This test secret API key is a placeholder. Don't include personal details in requests with this key. # To see your test secret API key embedded in code samples, sign in to your Stripe account. # You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. client = stripe.StripeClient('<>') checkout_session = client.v1.checkout.sessions.create(params={ 'customer_email': 'customer@example.com', 'submit_type': 'donate', 'billing_address_collection': 'auto', 'shipping_address_collection': { 'allowed_countries': ['US', 'CA'], }, 'line_items': [ { \# Provide the exact Price ID (for example, price_1234) of the product you want to sell 'price': '{{PRICE_ID}}', 'quantity': 1, }, ], 'mode': {{CHECKOUT_MODE}}, 'success_url': YOUR_DOMAIN + '/success.html', 'success_url': YOUR_DOMAIN + '?success=true', 'automatic_tax': {'enabled': True}, 'customer_creation': 'always', \# Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session # customer='{{CUSTOMER_ID}}' }) return redirect(checkout_session.url, code=303) certifi==2026.1.4 chardet==5.2.0 click==8.3.1 Flask==3.1.2 idna==3.11 itsdangerous==2.2.0 Jinja2==3.1.6 MarkupSafe==3.0.3 requests==2.32.5 stripe==15.0.0 toml==0.10.2 Werkzeug==3.1.5 $stripe = new \Stripe\StripeClient($stripeSecretKey); $checkout_session = $stripe->checkout->sessions->create([ 'customer_email' => 'customer@example.com', 'submit_type' => 'donate', 'billing_address_collection' => 'required', 'shipping_address_collection' => [ 'allowed_countries' => ['US', 'CA'], ], 'line_items' => [[ \# Provide the exact Price ID (for example, price_1234) of the product you want to sell 'price' => '{{PRICE_ID}}', 'quantity' => 1, ]], 'mode' => {{CHECKOUT_MODE}}, 'success_url' => $YOUR_DOMAIN . '/success.html', 'success_url' => $YOUR_DOMAIN . '?success=true', 'automatic_tax' => [ 'enabled' => true, ], 'customer_creation' => 'always', \# Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session # 'customer' => '{{CUSTOMER_ID}}' ]); header("HTTP/1.1 303 See Other"); header("Location: " . $checkout_session->url); $stripeSecretKey = '<>'; // This test secret API key is a placeholder. Don't include personal details in requests with this key. // To see your test secret API key embedded in code samples, sign in to your Stripe account. // You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. services.AddSingleton(new StripeClient("<>")); CustomerEmail = "customer@example.com", SubmitType = "donate", BillingAddressCollection = "auto", ShippingAddressCollection = new SessionShippingAddressCollectionOptions { AllowedCountries = new List { "US", "CA", }, }, LineItems = new List { new SessionLineItemOptions { // Provide the exact Price ID (for example, price_1234) of the product you want to sell Price = "{{PRICE_ID}}", Quantity = 1, }, }, Mode = {{CHECKOUT_MODE}}, SuccessUrl = domain + "/success.html", SuccessUrl = domain + "?success=true", AutomaticTax = new SessionAutomaticTaxOptions { Enabled = true }, CustomerCreation = "always", // Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session // Customer="cus_RnhPlBnbBbXapY", Session session = _client.V1.Checkout.Sessions.Create(options); Response.Headers.Add("Location", session.Url); return new StatusCodeResult(303); "github.com/stripe/stripe-go/v85" sc := stripe.NewClient("<>") params := &stripe.CheckoutSessionCreateParams{ CustomerEmail: stripe.String("customer@example.com"), SubmitType: stripe.String("donate"), BillingAddressCollection: stripe.String("auto"), ShippingAddressCollection: &stripe.CheckoutSessionCreateShippingAddressCollectionParams{ AllowedCountries: stripe.StringSlice([]string{ "US", "CA", }), }, LineItems: []*stripe.CheckoutSessionCreateLineItemParams{ &stripe.CheckoutSessionCreateLineItemParams{ // Provide the exact Price ID (for example, price_1234) of the product you want to sell Price: stripe.String("{{PRICE_ID}}"), Quantity: stripe.Int64(1), }, }, Mode: {{CHECKOUT_MODE}}, SuccessURL: stripe.String(domain + "/success.html"), SuccessURL: stripe.String(domain + "?success=true"), AutomaticTax: &stripe.CheckoutSessionCreateAutomaticTaxParams{Enabled: stripe.Bool(true)}, CustomerCreation: stripe.String(stripe.CheckoutSessionCustomerCreationAlways), // Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session // Customer: stripe.String("{{CUSTOMER_ID}}"), } s, err := sc.V1CheckoutSessions.Create(context.TODO(), params) if err != nil { log.Printf("sc.V1CheckoutSessions.Create: %v", err) } http.Redirect(w, r, s.URL, http.StatusSeeOther) require github.com/stripe/stripe-go/v85 v85.0.0 // This test secret API key is a placeholder. Don't include personal details in requests with this key. // To see your test secret API key embedded in code samples, sign in to your Stripe account. // You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. StripeClient client = new StripeClient("<>"); SessionCreateParams params = SessionCreateParams.builder() .setCustomerEmail("customer@example.com") .setSubmitType(SessionCreateParams.SubmitType.DONATE) .setBillingAddressCollection(SessionCreateParams.BillingAddressCollection.REQUIRED) .setShippingAddressCollection( SessionCreateParams.ShippingAddressCollection.builder() .addAllowedCountry(SessionCreateParams.ShippingAddressCollection.AllowedCountry.CA) .addAllowedCountry(SessionCreateParams.ShippingAddressCollection.AllowedCountry.US) .build()) .setMode({{CHECKOUT_MODE}}) .setSuccessUrl(YOUR_DOMAIN + "/success.html") .setSuccessUrl(YOUR_DOMAIN + "?success=true") .setAutomaticTax( SessionCreateParams.AutomaticTax.builder() .setEnabled(true) .build()) .setCustomerCreation(SessionCreateParams.CustomerCreation.ALWAYS) // Provide the Customer ID (for example, cus_1234) for an existing customer to associate it with this session // .setCustomer("{{CUSTOMER_ID}}") .addLineItem( SessionCreateParams.LineItem.builder() .setQuantity(1L) // Provide the exact Price ID (for example, price_1234) of the product you want to sell .setPrice("{{PRICE_ID}}") .build()) .build(); response.redirect(session.getUrl(), 303); return "";
The cover of Stubborn Attachments

Stubborn Attachments

$20.00

We appreciate your business! If you have any questions, please email orders@example.com.

Forgot to add something to your cart? Shop around then come back to pay!

{ "name": "stripe-sample", "version": "0.1.0", "dependencies": { "@stripe/react-stripe-js": "^3.7.0", "@stripe/stripe-js": "^7.3.0", "express": "^4.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "^5.0.1", "stripe": "^8.202.0" }, "devDependencies": { "concurrently": "4.1.2" }, "homepage": "http://localhost:3000/checkout", "proxy": "http://127.0.0.1:4242", "scripts": { "start-client": "react-scripts start", "start-server": "node server.js", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "start": "concurrently \"yarn start-client\" \"yarn start-server\"" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } { "name": "client", "version": "0.1.0", "private": true, "dependencies": { "@stripe/react-stripe-js": "^3.7.0", "@stripe/stripe-js": "^7.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "^5.0.1" }, "homepage": "http://localhost:3000/checkout", "proxy": "http://127.0.0.1:4242", "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }
The cover of Stubborn Attachments

Stubborn Attachments

$20.00
// Check to see if this is a redirect back from Checkout const query = new URLSearchParams(window.location.search); if (query.get("success")) { setMessage("Order placed! You will receive an email confirmation."); } if (query.get("canceled")) { setMessage( "Order canceled -- continue to shop around and checkout when you're ready." ); } { "name": "stripe-sample", "version": "0.1.0", "dependencies": { "@stripe/react-stripe-js": "^3.7.0", "@stripe/stripe-js": "^7.3.0", "express": "^4.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "^3.4.0", "stripe": "^8.202.0" }, "devDependencies": { "concurrently": "4.1.2" }, "homepage": "http://localhost:3000/checkout", "proxy": "http://localhost:4242", "scripts": { "start-client": "react-scripts start", "start-server": "node server.js", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "start": "concurrently \"yarn start-client\" \"yarn start-server\"" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } { "name": "client", "version": "0.1.0", "private": true, "dependencies": { "@stripe/react-stripe-js": "^3.7.0", "@stripe/stripe-js": "^7.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "^3.4.0" }, "homepage": "http://localhost:3000/checkout", "proxy": "http://localhost:4242", "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } // Create Checkout Sessions from body params. const session = await stripe.checkout.sessions.create({ customer_email: 'customer@example.com', submit_type: 'donate', billing_address_collection: 'auto', shipping_address_collection: { allowed_countries: ['US', 'CA'], }, line_items: [ { // Provide the exact Price ID (for example, price_1234) of the product you want to sell price: '{{PRICE_ID}}', quantity: 1, }, ], mode: {{CHECKOUT_MODE}}, success_url: `${origin}/success?session_id={CHECKOUT_SESSION_ID}`, automatic_tax: {enabled: true}, }); return NextResponse.redirect(session.url, 303) \# https://dashboard.stripe.com/apikeys NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=<> STRIPE_SECRET_KEY=<> \# Set this environment variable to support webhooks — https://stripe.com/docs/webhooks#verify-events # STRIPE_WEBHOOK_SECRET=whsec_12345 export default async function IndexPage({ searchParams }) {
import 'server-only' import Stripe from 'stripe' export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY) export default async function Success({ searchParams }) { const { session_id } = await searchParams if (!session_id) throw new Error('Please provide a valid session_id (`cs_test_...`)') const { status, customer_details: { email: customerEmail } } = await stripe.checkout.sessions.retrieve(session_id, { expand: ['line_items', 'payment_intent'] }) if (status === 'open') { return redirect('/') } if (status === 'complete') { return (

We appreciate your business! A confirmation email will be sent to{' '} {customerEmail}. If you have any questions, please email{' '} orders@example.com.

) } } 1. Build the server ~~~ pip3 install -r requirements.txt ~~~ 1. Build the server ~~~ bundle install ~~~ 1. Build the server ~~~ composer install ~~~ 1. Build the server ~~~ dotnet restore ~~~ 1. Build the server ~~~ mvn package ~~~ 2. Run the server ~~~ export FLASK_APP=server.py python3 -m flask run --port=4242 ~~~ 2. Run the server ~~~ ruby server.rb -o 0.0.0.0 ~~~ 2. Run the server ~~~ php -S 127.0.0.1:4242 --docroot=public ~~~ 2. Run the server ~~~ dotnet run ~~~ 2. Run the server ~~~ java -cp target/sample-jar-with-dependencies.jar com.stripe.sample.Server ~~~ 3. Build the client app ~~~ npm install ~~~ 4. Run the client app ~~~ npm start ~~~ If you run into an error, when running npm start, try running the following code and starting again: ~~~ export NODE_OPTIONS=--openssl-legacy-provider ~~~ 5. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 3. Build the client app ~~~ npm install ~~~ 4. Run the client app ~~~ npm start ~~~ 5. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 3. Build the client app ~~~ npm install ~~~ 4. Run the client app ~~~ npm start ~~~ 5. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 3. Build the client app ~~~ npm install ~~~ 4. Run the client app ~~~ npm start ~~~ 5. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 3. Build the client app ~~~ npm install ~~~ 4. Run the client app ~~~ npm start ~~~ 5. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 1. Run the server ~~~ go run server.go ~~~ 2. Build the client app ~~~ npm install ~~~ 3. Run the client app ~~~ npm start ~~~ 4. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 1. Run the server ~~~ go run server.go ~~~ 2. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) 1. Build the application ~~~ npm install ~~~ 2. Run the application ~~~ npm start ~~~ 3. Go to [http://localhost:3000/checkout](http://localhost:3000/checkout) 1. Build the server ~~~ npm install ~~~ 2. Run the server ~~~ npm start ~~~ 3. Go to [http://localhost:4242/checkout.html](http://localhost:4242/checkout.html) \### Development 1. Build the application ~~~shell $ npm install ~~~ 2. _Optional_: download and run the [Stripe CLI](https://stripe.com/docs/stripe-cli) ~~~shell $ stripe listen --forward-to localhost:3000/api/webhooks ~~~ 3. Run the application ~~~shell $ STRIPE_WEBHOOK_SECRET=$(stripe listen --print-secret) npm run dev ~~~ 4. Go to [localhost:3000](http://localhost:3000) ### Production 1. Build the application ~~~shell $ npm install $ npm build ~~~ 2. Run the application ~~~shell $ npm start ~~~ ## Próximas etapas #### [Executar pedidos](https://docs.stripe.com/checkout/fulfillment.md) Configure um destino de evento para executar pedidos após um pagamento e gerenciar outros eventos críticos. #### [Receber repasses](https://docs.stripe.com/payouts.md) Saiba como mover fundos da conta Stripe para sua conta bancária. #### [Reembolsar e cancelar pagamentos](https://docs.stripe.com/refunds.md) Gerencie solicitações de reembolso usando a API da Stripe ou o Dashboard. #### [Gerenciamento de clientes](https://docs.stripe.com/customer-management.md) Permita que os próprios clientes gerenciem dados de pagamento, faturas e assinaturas. #### [Adaptive Pricing](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md) Apresente automaticamente os preços na moeda local do cliente.