поиск клиента, чтобы обновить полосу данных карты - PullRequest
2 голосов
/ 07 января 2020

Я пытаюсь создать страницу, позволяющую обновить карту для клиентов. чтобы обновить детали карты, я беру пример документации полосы и вот она:

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"

У меня есть 2 вопроса по этому поводу:

первый: как передать почту из чередующейся формы в метод POST?

второй: где я ошибся при поиске клиента с электронная почта

1 Ответ

4 голосов
/ 07 января 2020

Метод API, который вы вызываете, это Список клиентов API . Это не возвращает одного клиента, а список клиентов, с 0, 1 или несколькими клиентами. Это означает, что сам объект является списком полос, а элементы находятся внутри массива data.

Вам необходимо изменить эту строку кода:

$customerid = intval($customer->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
}
...