将数据存储在 Stripe 中以作为网络挂钩数据的一部分发回?

Store data in Stripe to be sent back as part of web hook data?

我是第一次使用 Stripe。我正在使用独立帐户。我也有一个平台帐户。在我的网站上,许多拥有不同 Stripe 帐户的人将开展活动,各种捐助者可以为这些活动捐款。每个活动所有者都有一个单独的条带帐户,平台将通过活动所有者的条带帐户收费。

因此,平台帐户将通过每个活动所有者的 Stripe 帐户对多个活动收费。我的问题与网络挂钩有关。需要记住的一点是,每个活动在数据库中都有一个与之关联的 ID,我正在存储每个活动所有者的条带帐户的 API 密钥并将其与该 ID 相关联。要从 Web 挂钩端点的 Web 挂钩获取 Stripe 数据,我必须使用如下语句设置连接帐户的 API 键:

\Stripe\Stripe::setApiKey("api key of stand alone account");
$input = @file_get_contents("php://input");

问题在于多个 Stripe 帐户有一个 Web 挂钩端点。我无法在上述语句中对 API 键进行硬编码。我必须使用 id.

从我的数据库中获取适当的 API 键

但是当 Stripe 调用 web 挂钩端点时,我根本没有活动 ID 来获取适当的 API 键并设置 API 键。有解决办法吗?

您不需要存储每个帐户的 API 密钥。您需要存储的唯一信息是帐户 ID ("acct_...")。对于独立帐户,您的集成将在 OAuth 流的 last step 中的 stripe_user_id 参数中接收帐户 ID。

然后您可以使用您自己的(平台的)API 密钥和 Stripe-Account header.[= 代表此帐户发出 API 请求。 18=]

特别是关于 webhooks,通过 "Connect" 端点发送到您的服务器的事件将包含一个带有帐户 ID 的 user_id 字段。所以你可以这样做:

\Stripe\Stripe::setApiKey("PLATFORM_API_KEY");

$input = @file_get_contents("php://input");
$event_json = json_decode($input);
$user_id = $event_json->user_id;

// if you need to send an API request on behalf of this account,
// for example if you want to verify the event by fetching it from
// Stripe, you can use the Stripe-Account header:
$event = \Stripe\Event::retrieve(
    $event_json->id,
    array("stripe_account" => $user_id)
);