# Anpassbare Mengen bei Einzelposten Ermöglichen Sie Ihren Kundinnen und Kunden, die Menge der Artikel während des Bezahlvorgangs anzupassen. # Vollständige gehostete Seite > This is a Vollständige gehostete Seite for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/adjustable-quantity?payment-ui=stripe-hosted. In den Posten für jede [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) wird nachverfolgt, was Ihre Kundschaft kauft. Sie können die Checkout-Sitzung so konfigurieren, dass Kundinnen/Kunden während des Bezahlvorgangs die Menge ihrer Einzelposten anpassen können. ## Checkout-Sitzung mit anpassbarer Menge erstellen Stellen Sie beim Erstellen einer Checkout-Sitzung `adjustable_quantity` für Ihre `line_items` ein, damit Ihre Kundinnen/Kunden während des Bezahlvorgangs die Menge eines Artikels ändern können. Sie können die Standardeinstellungen für die zulässigen Mindest- und Höchstmengen anpassen, indem Sie `adjustable_quantity.minimum` und `adjustable_quantity.maximum` einstellen. Standardmäßig ist die Mindestmenge eines Artikels `0` und die Höchstmenge `99`. Für `adjustable_quantity.maximum` können Sie einen Wert von bis zu `999999` angeben. Wenn Sie anpassbare Mengen mit einem Wert für `line_items[].quantity` von mehr als `99` (dem anpassbaren Standardhöchstwert) verwenden, stellen Sie `adjustable_quantity.maximum` so ein, dass es größer oder gleich der Menge dieses Postens ist. Wenn Sie anpassbare Mengen verwenden, ändern Sie Ihre Konfiguration so, dass sie beim Erstellen der Checkout-Sitzung `adjustable_quantity.maximum` verwendet, um die Menge des Bestands statt der Menge der `line_items` zurückzustellen. Wenn nur noch ein Artikel vorhanden ist, verhindert Checkout, dass der/die Kund/in einen Posten entfernen kann. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][price_data][tax_behavior]=exclusive" \ -d "line_items[0][adjustable_quantity][enabled]=true" \ -d "line_items[0][adjustable_quantity][minimum]=1" \ -d "line_items[0][adjustable_quantity][maximum]=10" \ -d "line_items[0][quantity]=1" \ -d "automatic_tax[enabled]=true" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success" ``` ## Abgeschlossene Transaktionen verarbeiten Nach Abschluss der Zahlung können Sie eine Anfrage für die endgültigen [Posten](https://docs.stripe.com/api/checkout/sessions/line_items.md) und deren Mengen stellen. Wenn Ihre Kundin oder Ihr Kunde eine Position entfernt, wird diese auch aus der Antwort zu den Positionen entfernt. Im [Ausführungs-Leitfaden](https://docs.stripe.com/checkout/fulfillment.md) erfahren Sie, wie Sie einen Ereignis-Handler erstellen, um abgeschlossenen Bezahlvorgang zu verarbeiten. > Um Ihren Ereignis-Handler zu testen, [installieren Sie die Stripe-CLI](https://docs.stripe.com/stripe-cli.md) und verwenden Sie `stripe listen --forward-to localhost:4242/webhook`, um [Ereignisse an Ihren lokalen Server weiterzuleiten](https://docs.stripe.com/webhooks.md#test-webhook). #### Ruby ```ruby # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/apikeys require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. client = Stripe::StripeClient.new('<>') require 'sinatra' # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' checkout_session = event['data']['object'] line_items = client.v1.checkout.sessions.line_items.list(checkout_session['id'], {limit: 100}) # Fulfill the purchase... begin fulfill_order(checkout_session, line_items) rescue NotImplementedError => e return status 400 end end status 200 end def fulfill_order(checkout_session, line_items) # TODO: Remove error and implement... raise NotImplementedError.new(<<~MSG) Given the Checkout Session "#{checkout_session.id}" load your internal order from the database here. Then you can reconcile your order's quantities with the final line item quantity purchased. You can use `checkout_session.metadata` and `price.metadata` to store and later reference your internal order and item ids. MSG end ``` # Vollständig eingebettete Seite > This is a Vollständig eingebettete Seite for when payment-ui is embedded-page. View the full page at https://docs.stripe.com/payments/checkout/adjustable-quantity?payment-ui=embedded-page. In den Posten für jede [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) wird nachverfolgt, was Ihre Kundschaft kauft. Sie können die Checkout-Sitzung so konfigurieren, dass Kundinnen/Kunden während des Bezahlvorgangs die Menge ihrer Einzelposten anpassen können. ## Checkout-Sitzung mit anpassbarer Menge erstellen Stellen Sie beim Erstellen einer Checkout-Sitzung `adjustable_quantity` für Ihre `line_items` ein, damit Ihre Kundinnen/Kunden während des Bezahlvorgangs die Menge eines Artikels ändern können. Sie können die Standardeinstellungen für die zulässigen Mindest- und Höchstmengen anpassen, indem Sie `adjustable_quantity.minimum` und `adjustable_quantity.maximum` einstellen. Standardmäßig ist die Mindestmenge eines Artikels `0` und die Höchstmenge `99`. Für `adjustable_quantity.maximum` können Sie einen Wert von bis zu `999999` angeben. Wenn Sie anpassbare Mengen mit einem Wert für `line_items[].quantity` von mehr als `99` (dem anpassbaren Standardhöchstwert) verwenden, stellen Sie `adjustable_quantity.maximum` so ein, dass es größer oder gleich der Menge dieses Postens ist. Wenn Sie anpassbare Mengen verwenden, ändern Sie Ihre Konfiguration so, dass sie beim Erstellen der Checkout-Sitzung `adjustable_quantity.maximum` verwendet, um die Menge des Bestands statt der Menge der `line_items` zurückzustellen. Wenn nur noch ein Artikel vorhanden ist, verhindert Checkout, dass der/die Kund/in einen Posten entfernen kann. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][price_data][tax_behavior]=exclusive" \ -d "line_items[0][adjustable_quantity][enabled]=true" \ -d "line_items[0][adjustable_quantity][minimum]=1" \ -d "line_items[0][adjustable_quantity][maximum]=10" \ -d "line_items[0][quantity]=1" \ -d "automatic_tax[enabled]=true" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" ``` ## Abgeschlossene Transaktionen verarbeiten Nach Abschluss der Zahlung können Sie eine Anfrage für die endgültigen [Posten](https://docs.stripe.com/api/checkout/sessions/line_items.md) und deren Mengen stellen. Wenn Ihre Kundin oder Ihr Kunde eine Position entfernt, wird diese auch aus der Antwort zu den Positionen entfernt. Im [Ausführungs-Leitfaden](https://docs.stripe.com/checkout/fulfillment.md) erfahren Sie, wie Sie einen Ereignis-Handler erstellen, um abgeschlossenen Bezahlvorgang zu verarbeiten. > Um Ihren Ereignis-Handler zu testen, [installieren Sie die Stripe-CLI](https://docs.stripe.com/stripe-cli.md) und verwenden Sie `stripe listen --forward-to localhost:4242/webhook`, um [Ereignisse an Ihren lokalen Server weiterzuleiten](https://docs.stripe.com/webhooks.md#test-webhook). #### Ruby ```ruby # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/apikeys require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. client = Stripe::StripeClient.new('<>') require 'sinatra' # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' checkout_session = event['data']['object'] line_items = client.v1.checkout.sessions.line_items.list(checkout_session['id'], {limit: 100}) # Fulfill the purchase... begin fulfill_order(checkout_session, line_items) rescue NotImplementedError => e return status 400 end end status 200 end def fulfill_order(checkout_session, line_items) # TODO: Remove error and implement... raise NotImplementedError.new(<<~MSG) Given the Checkout Session "#{checkout_session.id}" load your internal order from the database here. Then you can reconcile your order's quantities with the final line item quantity purchased. You can use `checkout_session.metadata` and `price.metadata` to store and later reference your internal order and item ids. MSG end ```