Я делаю код бэкенда для формы, которая обновляет кредитную карту через Braintree. Я уверен, что все мои значения в JSON верны. Однако когда я использую ajax для перехода на страницу бэкэнда, я получаю следующую ошибку в ответе:
Неустранимая ошибка: необработанное исключение InvalidArgumentException с
сообщение «Ожидаемый идентификатор кредитной карты будет установлен» в
/var/www/html/braiden/braintree/lib/Braintree/CreditCardGateway.php:431
Трассировки стека:
# 0 /var/www/html/braiden/braintree/lib/Braintree/CreditCardGateway.php(152):
Braintree \ CreditCardGateway->_validateId (NULL)
# 1 /var/www/html/braiden/braintree/updateCreditCardBackend.php(18): Braintree \ CreditCardGateway->найти (NULL)
# 2 {main} добавлено в /var/www/html/braiden/braintree/lib/Braintree/CreditCardGateway.php на
линия 431
Вот копия кода, любая помощь здесь будет отличной.
Во-первых, вот json, который я предоставляю бэкэнд-странице: {Имя: «курица», номер карты: «4111111111111111», Cvv: «747», месяц: «12», год: «22»}
Вот код
<?php require_once 'lib/Braintree.php';
$requestBody = file_get_contents('php://input');
$requestJSON = json_decode($requestBody);
$name = $requestJSON->Name;
$cvv = $requestJSON->Cvv;
$cardNumber = $requestJSON->cardNumber;
$year = $requestJSON->Year;
$month = $requestJSON->Month;
$token = $requestJSON->Token;
$gateway = new Braintree_Gateway([
'environment' => 'sandbox',
'merchantId' => '********',
'publicKey' => '********',
'privateKey' => '********'
]);
$creditCard = $gateway->creditCard()->find($token);
$result = $gateway->creditCard()->update($creditCard->token, [
'cardholderName' => $name,
'cvv' => $cvv,
'number' => $cardNumber,
'expirationMonth' => $month,
'expirationYear' => $year
]);
?>
Мне пришлось изменить имя в json с токена на токен, и это сработало, видимо токен зарезервирован. как это {[«tok»: «this.token»]}
Других решений пока нет …