У меня проблемы с получением Stripe API для обновления электронной почты клиента.Когда пользователь входит в систему, появляется форма для обновления его адреса электронной почты.Адрес электронной почты обновляется в моей таблице базы данных, но я не могу заставить Stripe API обновить клиента.
Вот код, который я использую:
if (isset($customerid)) {
try {
$cu = \Stripe\Customer::update(
$customer_id,
[
'email' => $_SESSION['email'],
]
);
$output = "<p>Success!</p>";
} catch (\Stripe\Error\Card $e) {
// Use the variable $error to save any errors
// To be displayed to the customer later in the page
$body = $e->getJsonBody();
$err = $body['error'];
$error = $err['message'];
$output = "Error: $error";
}
// Add additional error handling here as needed
}
$ customerid получен из моегобазы данных, и подпрограмма ошибки вставлена из кода обновления моей карты.
Вот тело запроса POST из журналов:
{
"email": {
"0": "myemail@mydomain.com"
}
}
Я получаю фатальную ошибку при запуске сценария:
Fatal error: Uncaught Stripe\Error\InvalidRequest: Invalid string: {:"0"=>"myemail@mydomain.com"}
и следующее из журналов:
{
"error": {
"message": "Invalid string: {:"0"=>"myemail@mydomain.com"}",
"param": "email",
"type": "invalid_request_error"
}
}
Любые идеи или предложения?
Так должен выглядеть php-код для Marcin?Очевидно, я в значительной степени новичок.
if (isset($customerid)) {
try {
$cu = \Stripe\Customer::update(
$customer_id,
[
"email": "myemail@mydomain.com",
]
);
$output = "<p>Success!</p>";
} catch (\Stripe\Error\Card $e) {
// Use the variable $error to save any errors
// To be displayed to the customer later in the page
$body = $e->getJsonBody();
$err = $body['error'];
$error = $err['message'];
$output = "Error: $error";
}
// Add additional error handling here as needed
}
Сначала я сделал это из справочника по API, и я попытался подражать их примеру:
\Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxx");
\Stripe\Customer::update(
'cus_ElRYM0KexefrGt',
[
'metadata' => ['order_id' => '6735'],
]
);