简体   繁体   English

BrainTree沙箱返回验证错误:-未知paymentMethodNonce

[英]BrainTree Sandbox returns Validation errors: - Unknown paymentMethodNonce

I am integrating braintree into a website 我正在将Braintree集成到网站中

starting with the sandbox.... 从沙盒开始...

client side: 客户端:

   <form id="checkout" method="post" action="payments.php">
  <div id="dropin"></div>
  <input type="submit" value="Pay $10">
</form>

<script src="https://js.braintreegateway.com/v2/braintree.js"></script>

<script>
  braintree.setup(
    // Replace this with a client token from your server

    "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJhNzRkZjU3ZWY2ZTczYmYzMTIzODZlMDIzNzRhMTIyZGU0NDQxODU0MTA1ZGU0Y2U4MWM5ZWY3NjJmNTliYjVifGNyZWF0ZWRfYXQ9MjAxNS0wMy0wMVQwMDoyODoyMi4yODk3NDc0OTErMDAwMFx1MDAyNm1lcmNoYW50X2lkPWRjcHNweTJicndkanIzcW5cdTAwMjZwdWJsaWNfa2V5PTl3d3J6cWszdnIzdDRuYzgiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvZGNwc3B5MmJyd2RqcjNxbi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzL2RjcHNweTJicndkanIzcW4vY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIn0sInRocmVlRFNlY3VyZUVuYWJsZWQiOnRydWUsInRocmVlRFNlY3VyZSI6eyJsb29rdXBVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvZGNwc3B5MmJyd2RqcjNxbi90aHJlZV9kX3NlY3VyZS9sb29rdXAifSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiQWNtZSBXaWRnZXRzLCBMdGQuIChTYW5kYm94KSIsImNsaWVudElkIjpudWxsLCJwcml2YWN5VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3BwIiwidXNlckFncmVlbWVudFVybCI6Imh0dHA6Ly9leGFtcGxlLmNvbS90b3MiLCJiYXNlVXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20iLCJhc3NldHNVcmwiOiJodHRwczovL2NoZWNrb3V0LnBheXBhbC5jb20iLCJkaXJlY3RCYXNlVXJsIjpudWxsLCJhbGxvd0h0dHAiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjp0cnVlLCJlbnZpcm9ubWVudCI6Im9mZmxpbmUiLCJ1bnZldHRlZE1lcmNoYW50IjpmYWxzZSwibWVyY2hhbnRBY2NvdW50SWQiOiJzdGNoMm5mZGZ3c3p5dHc1IiwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn0sImNvaW5iYXNlRW5hYmxlZCI6dHJ1ZSwiY29pbmJhc2UiOnsiY2xpZW50SWQiOiJhZTBkMTk4MWI1MzcxNDgzZDZkODA2OTA5M2EwNjY5MjEyMGRiZTM0YWE0NTBlNzY0ZmY2NTI2ZWVmODhiMTlkIiwibWVyY2hhbnRBY2NvdW50IjoiZGV2cytzYW5kYm94LXNhbXBsZS1tZXJjaGFudEBicmFpbnRyZWVwYXltZW50cy5jb20iLCJzY29wZXMiOiJhdXRob3JpemF0aW9uczpicmFpbnRyZWUgdXNlciIsInJlZGlyZWN0VXJsIjoiaHR0cHM6Ly9hc3NldHMuYnJhaW50cmVlZ2F0ZXdheS5jb20vY29pbmJhc2Uvb2F1dGgvcmVkaXJlY3QtbGFuZGluZy5odG1sIn0sIm1lcmNoYW50SWQiOiJkY3BzcHkyYnJ3ZGpyM3FuIiwidmVubW8iOiJvZmZsaW5lIiwiYXBwbGVQYXkiOnsic3RhdHVzIjoibW9jayIsImNvdW50cnlDb2RlIjoiVVMiLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJtZXJjaGFudElkZW50aWZpZXIiOiJtZXJjaGFudC5jb20uYnJhaW50cmVlcGF5bWVudHMuZGV2LWRjb3BlbGFuZCIsInN1cHBvcnRlZE5ldHdvcmtzIjpbInZpc2EiLCJtYXN0ZXJjYXJkIiwiYW1leCJdfX0=",
    'dropin', {
      container: 'dropin'
    });
</script>

and for the server: 对于服务器:

 <?php
include("braintree/Braintree.php"); 

Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('');
Braintree_Configuration::publicKey('');
Braintree_Configuration::privateKey('');

$nonce = $_POST["payment_method_nonce"];

$result = Braintree_Transaction::sale(array(
  'amount' => '100.00',
  'paymentMethodNonce' => $nonce
));


if ($result->success) {
    echo("Success! Transaction ID: " . $result->transaction->id);
} else if ($result->transaction) {
    echo("Error: " . $result->message);
    echo("<br/>");
    echo("Code: " . $result->transaction->processorResponseCode);
} else {
    echo("Validation errors:<br/>");
    foreach (($result->errors->deepAll()) as $error) {
        echo("- " . $error->message . "<br/>");
    }
}

and when it returns: 当它返回时:

 Validation errors: - Unknown paymentMethodNonce.

this was code taken directly from the tutorial - so confused what it is I did wrong 这是直接从教程中获取的代码-如此困惑我做错了什么

this is a website only (no app) service 这是仅网站(无应用程序)服务

It's not entirely clear which client token you used in the JS and which merchant credentials you used in the PHP but I think this is probably the problem. 目前尚不清楚您在JS中使用了哪个客户端令牌以及在PHP中使用了哪个商家凭据,但是我认为这可能是问题所在。

Payment method nonces are merchant-specific, and the client token initializes the Drop In UI with limited permission to act on behalf of a specific merchant. 支付方式随机数是特定于商家的,并且客户令牌会使用代表特定商家的有限权限来初始化Drop In UI。 If you used the actual client token pasted above, this merchant was our sandbox demo merchant. 如果您使用上面粘贴的实际客户令牌,则该商人是我们的沙盒演示商人。

You need to substitute your own sandbox merchant's merchant ID, public key and private key in the fields at the top of your PHP sample (I assume you did and just took them out for posting). 您需要在PHP示例顶部的字段中替换自己的沙盒商人的商人ID,公共密钥和私有密钥(我假设您已经这样做,只是将它们拿出来进行发布)。 You also need to call Braintree::ClientToken.generate within your PHP when building the page that displays the UI so that you can add a real client token for your merchant to that page. 在构建显示UI的页面时,您还需要在PHP中调用Braintree :: ClientToken.generate,以便可以向该页面添加商家的真实客户令牌。 See https://developers.braintreepayments.com/javascript+php/start/hello-server#provide-a-client-token-to-your-client . 请参阅https://developers.braintreepayments.com/javascript+php/start/hello-server#provide-a-client-token-to-your-client

Feel free to contact Braintree Support at support@braintreepayments.com support@braintreepayments.com if you'd like more help. 如果您需要更多帮助,请随时通过support@braintreepayments.com support@braintreepayments.com与Braintree支持联系。

you should pass a valid nonce. 您应该传递有效的随机数。 eq:fake-valid-nonce. EQ:假化有效的随机数。

Other valid nonces are here in braintree page link 其他有效的随机数在braintree页面链接中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM