Braintree信用卡更新报错:Expected credit card id to be set求助
问题根源分析
这个错误的核心原因非常明确:你传入后端的JSON数据缺少Token字段,导致后端代码中$token = $requestJSON->Token;获取到的值是NULL,而Braintree的CreditCardGateway->find()方法要求必须传入有效的信用卡标识(Token/ID),因此抛出了InvalidArgumentException异常。
从你提供的JSON数据可以看到:
{Name: "chicken", cardNumber: "4111111111111111", Cvv: "747", Month: "12", Year: "22"}
完全没有包含Token字段,这就是问题的起点。
修复步骤
1. 前端补充传入信用卡Token
你需要在AJAX请求的JSON数据中,加入要更新的信用卡对应的Token值。这个Token是用户首次添加信用卡时,Braintree返回的唯一标识(比如你后台存储的用户关联信用卡的Token,或者前端通过Braintree SDK获取的payment method token)。
修正后的JSON示例:
{ "Name": "chicken", "cardNumber": "4111111111111111", "Cvv": "747", "Month": "12", "Year": "22", "Token": "your_valid_credit_card_token_here" }
2. 后端添加参数校验与异常处理
为了避免类似的空值异常,建议在调用Braintree方法前,先校验Token是否存在且有效,同时添加异常捕获逻辑,更友好地处理错误:
<?php require_once 'lib/Braintree.php'; $requestBody = file_get_contents('php://input'); $requestJSON = json_decode($requestBody); // 先校验必填参数 if (empty($requestJSON->Token)) { http_response_code(400); echo json_encode(['error' => 'Credit card token is required for update']); exit; } $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' => '********' ]); try { $creditCard = $gateway->creditCard()->find($token); $result = $gateway->creditCard()->update($creditCard->token, [ 'cardholderName' => $name, 'cvv' => $cvv, 'number' => $cardNumber, 'expirationMonth' => $month, 'expirationYear' => $year ]); // 处理更新结果 if ($result->success) { echo json_encode(['success' => true, 'creditCard' => $result->creditCard]); } else { echo json_encode(['success' => false, 'errors' => $result->errors]); } } catch (Exception $e) { http_response_code(500); echo json_encode(['error' => $e->getMessage()]); } ?>
3. 注意参数大小写一致性
额外提醒:确保前后端参数名的大小写完全一致。比如后端用$requestJSON->Token(大写T),前端就不能传小写的token,否则会导致参数获取失败。
内容的提问来源于stack exchange,提问作者codernoob3
相关产品推荐
相关产品推荐

