php - 搜索客户以更新卡详细信息条
问题描述
我正在尝试制作一个允许向客户更新卡的页面。要更新卡片详细信息,我以条纹文档为例,仅此而已:
if (isset($_POST['stripeToken'])){
$customer = \Stripe\Customer::all(["limit" => 100, "email" => $mail]);
$customerid = intval($customer->id);
try {
$cu = \Stripe\Customer::update(
$customerid,
[
'source' => $_POST['stripeToken'],
]
);
echo "Your card details have been updated!";
}
catch(\Stripe\Exception\CardException $e) {
$body = $e->getJsonBody();
$err = $body['error'];
$error = $err['message'];
}
}
?>
<html>
<head>
</head>
<body>
<form action="updatecard.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<?php echo $params['public_test_key']; ?>"
data-image="img/logo-b.jpeg"
data-name="Your Website Name f"
data-panel-label="Update Card Details"
data-label="Update Card Details"
data-allow-remember-me=false
data-locale="auto">
</script>
</form>
</body>
</html>
问题出在我唯一写的东西上:
$customer = \Stripe\Customer::all(["limit" => 100, "email" => $mail]);
我也尝试过没有限制值,但条带日志总是给我这个错误:
"error": {
"code": "resource_missing",
"doc_url": "https://stripe.com/docs/error-codes/resource-missing",
"message": "No such customer: 0",
"param": "id",
"type": "invalid_request_error"
我有两个问题:
第一个:如何将邮件从条带形式传递到 POST 方法?
第二个:我用电子邮件搜索客户的错误在哪里?
解决方案
您调用的 API 方法是 List Customers API。这不会返回一个客户,而是返回一个客户列表,其中包含 0、1 或多个客户。这意味着对象本身是一个条纹列表,并且元素在data
数组内。
您需要更改这行代码:
$customerid = intval($customer->id);
相反,您想检查是否有任何结果,然后访问第一个客户的 ID(如果有):
$customers = \Stripe\Customer::all(["limit" => 100, "email" => $mail]);
if(count($customers->data == 0 )
{
// handle cases where there are no match
}
else
{
$customerid = $customers->data[0]->id;
// then update
}
推荐阅读
- q# - 我的 Q# 语言服务器不会停止在 VS Code 上下载
- amazon-web-services - 由于 SNS 主题订阅已存在不同属性,AWS Cloudformation 模板部署失败
- python - 字典的备份计划(在矩阵诊断中)?
- r - 用 R 求解系统方程
- iis - 部署到 IIS 后,Blazor 服务器组件无法路由到基本 URL
- python - 使用 gspread 提取工作表 ID
- python - 当两个矩阵具有相同尺寸时,形状未在 numpy ValueError 中对齐
- npm - Mikro-orm 不同包版本兼容性
- amazon-web-services - HTTPS、AWS ELB、CloudFront 和 S3
- python - NumPy 线性方程组