У меня есть проверка полосы с php. Это создает клиентов и заряжает их. Я хочу создать форму для пожертвований, в которой если один и тот же клиент возвращается и дает тот же адрес электронной почты, что Stripe не создает другого клиента, а взимает с существующего клиента дополнительные платежи. Это возможно? Или касса всегда создает нового клиента с новым идентификатором клиента?
Вот мой обвинение
<?php
require_once('config.php');
$token = $_POST['stripeToken'];
if($_POST) {
$error = NULL;
try{
if(!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
$customer = Stripe_Customer::create(array(
'card' => $token,
'email' => $_POST['stripeEmail'],
'description' => 'Thrive General Donor'
));
$charge = Stripe_Charge::create(array(
'customer' => $customer->id,
'amount' => $_POST['donationAmount'] * 100,
'currency' => 'usd'
));
}
catch(Exception $e) {
$eror = $e->getMessage();
}}
?>
Вам нужно будет сохранить связь между адресом электронной почты и идентификатором клиента Stripe в базе данных. Я определил это, посмотрев на Stripe API для клиентов.
Во-первых, при создании нового клиента каждое поле является необязательным. Это заставляет меня верить, что каждый раз, когда вы POST
в /v1/customers
, он будет «[создавать] новый объект клиента».
Кроме того, при поиске клиента доступно только одно поле: id
, Это заставляет меня поверить, что вы не можете найти клиента на основе адреса электронной почты или другого поля.
если ты не может хранить эту информацию в базе данных, вы всегда можете перечислить всех клиентов с GET /v1/customers
, Это потребует от вас разбивки на страницы и проверки всех объектов клиента, пока вы не найдете объект с соответствующим адресом электронной почты. Вы можете видеть, как это было бы совершенно неэффективно, если бы это делалось каждый раз, когда вы пытались создать клиента.
Других решений пока нет …