php - Braintree 交易创建时 key 无效

标签 php braintree

我以为我是按照官方文档一步步遵循 Braintree PHP SDK 设置的,但我一定错过了一些东西。当尝试使用客户端生成并提供给服务器的随机数来创建事务时,我不断收到此 fatal error 。我一定错过了一些明显的东西!谢谢。

Fatal error: Uncaught InvalidArgumentException: invalid keys: paymentMethodNonce[binData][commercial], paymentMethodNonce[binData][countryOfIssuance], paymentMethodNonce[binData][debit], paymentMethodNonce[binData][durbinRegulated], paymentMethodNonce[binData][healthcare], paymentMethodNonce[binData][issuingBank], paymentMethodNonce[binData][payroll], paymentMethodNonce[binData][prepaid], paymentMethodNonce[binData][productId], paymentMethodNonce[description], paymentMethodNonce[details][cardType], paymentMethodNonce[details][lastFour], paymentMethodNonce[details][lastTwo], paymentMethodNonce[nonce], paymentMethodNonce[type] in C:\xampp\htdocs\wp-content\themes\btree\lib\Braintree\Util.php:349

Stack trace:
#0 C:\xampp\htdocs\wp-content\themes\btree\lib\Braintree\TransactionGateway.php(47): Braintree\Util::verifyKeys(Array, Array)
#1 C:\xampp\htdocs\wp-content\themes\btree\lib\Braintree\TransactionGateway.php(304): Braintree\TransactionGateway->create(Array)
#2 C:\xampp\htdocs\wp-content\theme in C:\xampp\htdocs\wp-content\themes\btree\lib\Braintree\Util.php on line 349

init.php

<?php
require 'lib/Braintree.php';

session_start();

$gateway = new Braintree_Gateway([
    'environment' => 'sandbox',
    'merchantId' => 'cys2',
    'publicKey' => 'h9v7',
    'privateKey' => '7fbca5'
]);

read_nonce.php

<?php
require '../init.php';

$clientNonce = $_POST["payment_method_nonce"];

print_r($clientNonce);

$result = $gateway->transaction()->sale([
    'amount' => '10.00',
    'paymentMethodNonce' => $clientNonce,
    'options' => [
        'submitForSettlement' => True
    ]
]);

$clientNonce

Array
(
    [nonce] => tokencc_bd_8pccr_vq5wfj_h2pxbf_kn99n4_6c7
    [details] => Array
        (
            [cardType] => Discover
            [lastFour] => 1117
            [lastTwo] => 17
        )

    [type] => CreditCard
    [description] => ending in 17
    [binData] => Array
        (
            [prepaid] => Unknown
            [healthcare] => Unknown
            [debit] => Unknown
            [durbinRegulated] => Unknown
            [commercial] => Unknown
            [payroll] => Unknown
            [issuingBank] => Unknown
            [countryOfIssuance] => Unknown
            [productId] => Unknown
        )

)

index.php

<?php
require 'btree/init.php';

$clientToken = $gateway->clientToken()->generate();

?>

<head>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://js.braintreegateway.com/web/dropin/1.10.0/js/dropin.min.js"></script>
</head>
<body>
  <div id="dropin-container"></div>
  <button id="submit-button">Request payment method</button>
  <script>
    var button = document.querySelector('#submit-button');

    braintree.dropin.create({
      authorization: '<?=$clientToken?>',
      container: '#dropin-container'
    }, function (createErr, instance) {
      button.addEventListener('click', function () {
        instance.requestPaymentMethod(function (err, payload) {
          console.log(payload);
          $.ajax({
            url : 'btree/ajax/read_nonce.php',
            type : 'POST',
            data : {
              payment_method_nonce : payload
            }
          }).done(function(r){

          });
        });
      });
    });
  </script>
</body>

最佳答案

抱歉,我看错了。

https://developers.braintreepayments.com/reference/request/transaction/sale/php#payment_method_token

paymentMethodNonce 作为字符串传递。

适当的改变很简单:

'paymentMethodNonce' => $clientNonce

'paymentMethodNonce' => $clientNonce['nonce']

关于php - Braintree 交易创建时 key 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49605229/

相关文章:

php - 如何将Json插入mysql数据库?

Braintree Dropin UI,如何删除付款方式

ios - Apple Pay 中的 Braintree Drop 崩溃

php - pdo 获取对象?

php - 与 YII_DEBUG 和 YII_ENV 类似,我在 Yii2 中将全局变量放在哪里

php - 在 php 中读取在线 .csv 文件时遇到问题?

php - 在 Laravel 中对多维数组应用搜索

java - 如何使用 Gradle 安装 Braintree Java 服务器 SDK?

ios - Facebook 登录 + Google 登录 + Braintree Paypal 支付 - AppDelegate 问题

braintree - 从布伦特里汇款