我在使用 STRIPE customer->search 时遇到困难,有时会返回不正确的结果。
如果我搜索某个客户,如果它不存在,则添加它,然后重复 - 我可以发现它会第二次/第三次/第四次/等等添加客户 - 一段时间。同时,在 Stripe 仪表板上,我可以看到客户出现[多次]。
如果我在初次刷新之间等待几分钟 - 似乎没问题。
也许在添加客户和搜索找到它之间存在缓存、滞后或其他原因,但这并不是很有帮助。我错了吗?还是有什么我没有做的事情?
相关PHP代码在这里:
$stripe = new \Stripe\StripeClient($stripe_secretkey);
echo "<LI>Searching for $customerNm...</LI>";
$json = $stripe->customers->search(['query' => 'name:\'' . $customerNm . '\'']);
foreach ($json->data as $key) {
echo "<LI>Found id:[" . $key->id . "]";
if (strcmp($key->name, $customerNm) == 0) {
$customerId = $key->id;
$email = $key->email;
break;
}
}
echo "<hr>";
if (strcmp($customerId, "") == 0) {
echo "<LI>Result to search is <PRE style='margin-left:20px'>$json</PRE>";
$email = str_replace(" ", "", str_replace(" ", "", "abc@$customerNm.com"));
$json = $stripe->customers->create(
[
'email' => $email,
'name' => $customerNm,
]);
$customerId = $json->id;
echo "<UL>Created New STRIPE customer id: [$customerId]</UL>\n";
}
}
此代码可以在沙箱上运行这里**,如果您多次运行该页面 - 它会继续创建客户[一段时间]。
(请注意,此页面将创建一个 cookie“posterUID”,用作客户名称;一旦创建,它将一直保留到过期或手动删除)。
** 可以在here
查看完整来源这是 Stripe 搜索文档的预期行为:
不要对先写后读的流程使用搜索(例如,充电后立即搜索),因为数据不会立即可供搜索。正常操作条件下,1 分钟内即可搜索到数据。在中断期间,新数据或更新数据的传播可能会更加延迟。
我也遇到了同样的问题。
我想知道是否可以使用 Stripe.Customer.list 而不是 Stripe.Customer.search 来访问最新的客户数据,有人知道这是否可行吗?
我在同一站点上找不到任何带有“列表”功能详细信息的 Stripe 文档,但我确实看到它在 Stripe 示例中用于检查现有客户:
https://docs.stripe.com/invoicing/customer?dashboard-or-api=api
编辑:
我认为“限制”会起作用,因为在下面的 Stripe 文档页面中,它没有说任何关于避免限制写入和读取的内容,但它确实提到了下面的搜索。