是否可以将自定义数据传递到条纹签出?

Bug*_*rUK 8 php stripe-payments

我正在关注带有服务器集成的Stripe Checkout的文档:https : //stripe.com/docs/payments/checkout/server

示例中的代码工作正常,但是购买完成后,我遇到的问题是无法跟踪用户或其订单。

我有一个webhook设置,可以在付款完成后自动条带ping。但是,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
});
Run Code Online (Sandbox Code Playgroud)

是否可以将ID和Stripe可以回退的结帐请求一起传递,以允许我查找订单并生成下载链接?

Pau*_*jes 8

metadata 在Session对象上尚不存在,因此您不能使用它。

您可以使用该client_reference_id字段在会话中存储一些自定义数据。请注意,内容必须唯一。在这里看看。


小智 6

我不知道你是否找到了解决方案,但这就是我的。我已经使用了支付意图数据并将其插入到此元数据中,这是我在 stackoverflow 上的第一个帮助。我正在寻找两天两天的解决方案,仅此而已。所以我想帮助你。

Stripe 文档不是那么清晰和有用

                    payment_intent_data: {
                        metadata: {
                            key1 : val1,
                            ke2  : val2,
                            key3 : val3,
                        }
                    },
Run Code Online (Sandbox Code Playgroud)


A J*_*A J 5

您可以使用 key 传递数组metadata。付款完成后,Stripe 将返回您发送的此字段。

你只需要通过这种格式。

"metadata": {}
Run Code Online (Sandbox Code Playgroud)

虽然,我用它来创建用户和保存卡片。但是,我在结帐时没有使用它,但似乎您几乎可以通过每个 API 传递它。

条纹文档

可更新的 Stripe 对象——包括 Account、Charge、Customer、PaymentIntent、Refund、Subscription 和 Transfer——有一个元数据参数。您可以使用此参数将键值数据附加到这些 Stripe 对象。

元数据对于在对象上存储附加的结构化信息很有用。例如,您可以将用户的全名和系统中相应的唯一标识符存储在 Stripe Customer 对象上。Stripe 不使用元数据——例如,不用于授权或拒绝收费——并且不会被您的用户看到,除非您选择向他们展示。