Ich bin wirklich enttäuscht, dass Stripe es nicht erlaubt, einen Kunden über seine E-Mail-Adresse abzurufen (und mehrere Kunden mit derselben E-Mail-Adresse zulässt).
Hier ist ein Hack/Workaround, den ich in PHP verwende.
Wenn Sie das Erstellungsdatum des Kunden schätzen können, können Sie die Liste der Kunden wahrscheinlich einschränken und dann prüfen, ob sie mit der E-Mail-Adresse übereinstimmt.
/**
* Because email address is not uniquely indexed in Stripe and Stripe does not allow retrieving a customer by email address, here is a function that allows searching for customers based on email address with creation date between two provided dates.
* @return array
*/
function getCustomerByEmailAddressAndDates($emailAddress, $dateGreaterThanOrEqual, $dateLessThanOrEqual) {
$customersResults = \Stripe\Customer::all(['created' => ['gte' => $dateGreaterThanOrEqual, 'lte' => $dateLessThanOrEqual]]);
$customers = $customersResults->data;
$filteredResults = [];
foreach ($customers as $customer) {
if ($emailAddress === $customer->email) {
$filteredResults[] = $customer;
}
}
return $filteredResults;
}
Sie könnten wahrscheinlich dann benutzen Sie einfach das erste Element in dem resultierenden Array (vor allem, da das Array wahrscheinlich nur 1 Punkt enthalten wird).
Außerdem ist die maximale Grenze 100, wenn Sie also mehr als 100 Kunden haben, kann die Suche per E-Mail nicht dazu führen, dass Sie einen Kunden per E-Mail finden. – Greeso
Angeblich können Sie jetzt per E-Mail suchen, aber Stripe erlaubt immer noch dummerweise mehrere Kunden mit derselben E-Mail, so dass wir mit Duplikaten in den Ergebnissen umgehen müssen: https://stackoverflow.com/a/40482496/470749 – Ryan