Heim  >  Fragen und Antworten  >  Hauptteil

Metadaten zu Stripe-Zahlungsabsichtsdaten

Ich versuche, Metadaten über eine Stripe-Checkout-Sitzung zu übergeben. Derzeit versuche ich, es über payment_intent_data.metadata zu übergeben, wie in der Stripe-Dokumentation vorgeschlagen, erhalte jedoch eine 500-Fehler-Ausnahme : „StripeExceptionInvalidRequestException“, Meldung : „Ungültiges Objekt“. Aber ich scheine die empfohlene Konfiguration in der Stripe-Dokumentation zu befolgen, also stecke ich fest.

StripeController.php

    public function handle_checkout(Request $request)
    {
        $stripe = new \Stripe\StripeClient(env("STRIPE_PRIVATE_KEY"));

        $req_content = json_decode($request->getContent(), true);

        $line_items = []; 

        $email = "";

        foreach($req_content as $key => $val) {
            $new_line_item = [
                'price_data' => [
                'currency' => 'usd',
                'product_data' => [
                    'name' => $val["product_item"]["name"],
                ],
                'unit_amount' => $val["product_item"]["price"] * 100,
                ],
                'quantity' => $val["cart_item"]["quantity"]
            ];
            
            $email = $val["user_email"];

            array_push($line_items, $new_line_item);
        }

        $checkout_session = $stripe->checkout->sessions->create([
            'shipping_address_collection' => ['allowed_countries' => ['US']],
            'payment_method_types' => ['card'],
            "customer_email" => $email,
            'line_items' => $line_items,
            'payment_intent_data' => [ 
                 ## Here, I am just putting "AAA" for testing
                'metadata' => "AAA"
            ],
            'mode' => 'payment',
            'success_url' => 'my success url ...',
            'cancel_url' => 'my cancel url...',
          ]);
     
        return $checkout_session->url; 
    }

Wenn ich nicht

hinzufüge
'payment_intent_data' => [ 
                 ## Here, I am just putting "AAA" for testing
                'metadata' => "AAA"
            ], 

Dann ist es das. Aber ich möchte die Metadaten durch den Checkout-Prozess weiterleiten und sie auf payment_intent.succeeded erhalten.

Ideen?

P粉928591383P粉928591383177 Tage vor293

Antworte allen(1)Ich werde antworten

  • P粉115840076

    P粉1158400762024-03-31 12:01:32

    'payment_intent_data' => [ 
                   'metadata' => [ 
                            "AAA" => "BBB"
                   ]
            ],

    Antwort
    0
  • StornierenAntwort