web-dev-qa-db-ja.com

カスタムデータをストライプチェックアウトに渡すことはできますか?

サーバー統合によるストライプチェックアウトのドキュメントをフォローしています: https://stripe.com/docs/payments/checkout/server

例のコードは問題なく機能しますが、購入が完了したときにユーザーまたは注文を追跡できないという問題があります。

支払いが完了すると、Stripeがpingを実行するwebhook設定があります。ただし、Stripeからの応答セッションには、注文された製品の名前、説明、および画像以外の情報は含まれていません。製品名を使用してデータベースにクエリを実行することもできますが、どちらかというとIDやスラッグを使用したいと思います。

$app->post("/stripe-pingback", function(Request $request, Response $response, array $args) {
    \Stripe\Stripe::setApiKey("xxxxx");

    // You can find your endpoint's secret in your webhook settings
    $endpoint_secret = 'xxxxx';

    $payload = $request->getBody();
    $sig_header = isset($_SERVER['HTTP_STRIPE_SIGNATURE']) ? $_SERVER['HTTP_STRIPE_SIGNATURE'] : null;
    $event = null;

    try {
        $event = \Stripe\Webhook::constructEvent($payload, $sig_header, $endpoint_secret);
    } catch(\UnexpectedValueException $e) {
        // Invalid payload
        http_response_code(400); // PHP 5.4 or greater
        exit();
    } catch(\Stripe\Error\SignatureVerification $e) {
        // Invalid signature
        http_response_code(400); // PHP 5.4 or greater
        exit();
    }

    // Handle the checkout.session.completed event
    if ($event->type == 'checkout.session.completed') {
        $session = $event->data->object;
        var_dump($session);

        // Possible to get custom data from session?
        $customer = $session->customer;
        $customerEmail = $session->customer_email;

        // Fulfill the purchase...
        $this->db->insertAudioPurchase();
    }

    http_response_code(200); // PHP 5.4 or greater
});

Stripeが注文を検索してダウンロードリンクを生成するためにpingを返すことができるチェックアウト要求と共にIDを渡すことは可能ですか?

11
BugHunterUK

キーmetadataを使用して配列を渡すことができます。 Stripeは、支払いが完了したときに送信したとおりにこのフィールドを返します。

この形式で渡すだけです。

"metadata": {}

ただし、ユーザーの作成とカードの保存に使用しました。ただし、チェックアウト時には使用していませんでしたが、すべてのAPIでこれをほとんど渡すことができるようです。

Stripe Doc から、

Account、Charge、Customer、PaymentIntent、Refund、Subscription、Transferなどの更新可能なStripeオブジェクトには、メタデータパラメーターがあります。このパラメーターを使用して、Key-ValueデータをこれらのStripeオブジェクトにアタッチできます。

メタデータは、オブジェクトに追加の構造化情報を格納するのに役立ちます。例として、システムのユーザーのフルネームと対応する一意の識別子をStripe Customerオブジェクト。 Stripeではメタデータは使用されません(たとえば、請求の承認または拒否には使用されません)。ユーザーに表示するように選択しない限り、ユーザーには表示されません。

0
A J 9