【问题标题】:Expected credit card id to be set braintree error预期的信用卡 ID 被设置 Braintree 错误
【发布时间】:2018-10-24 15:15:49
【问题描述】:

我正在为通过 Braintree 更新信用卡的表单编写后端代码。我确信我所有的值在 JSON 中都是正确的。但是,当我使用 ajax 转到后端页面时,我在响应中收到以下错误:

致命错误:未捕获的异常“InvalidArgumentException”与 消息“预期要设置的信用卡 ID”在 /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->find(NULL)
#2 {main} 在 /var/www/html/braiden/braintree/lib/Braintree/CreditCardGateway.php 中抛出 第 431 行

这里是代码的副本,这里的任何帮助都会很棒。 首先是我给后端页面的json:{Name:“chicken”,cardNumber:“4111111111111111”,Cvv:“747”,Month:“12”,Year:“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
]);
?>

【问题讨论】:

  • 你是更新还是添加,如果更新你应该有存储的 id\token。但实际上您似乎想添加一个。
  • 不,我有令牌 ID。我刚刚意识到它没有通过我检查并仔细检查的json。应该顺利通过的。你不能通过ajax post传递令牌吗
  • 在代码中注明您正在使用它
  • 我不是必须用它来更新信用卡吗?

标签: php updates credit-card braintree-sandbox


【解决方案1】:

我不得不将 json 中的名称从 Token 更改为 tok,它显然工作了 token 是保留的。像这样 {["tok": "this.token"]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多