swift - Braintree Swift 继续在生成的 token 中打印 html

标签 swift braintree

我试图在 Brain Tree 中生成一个 token ,由于某种原因,它生成整个 html,这导致 token 无效,如何解决这个问题。这是我当前的功能

func brainTree() {

        let clientTokenURL = NSURL(string: "http://mywesitelinkhere.com/braintree_php_api/public_html/index.php/client_token")!


        let clientTokenRequest = NSMutableURLRequest(URL: clientTokenURL)


        clientTokenRequest.setValue("text/plain", forHTTPHeaderField: "Accept")

        NSURLSession.sharedSession().dataTaskWithRequest(clientTokenRequest) { (data, response, error) -> Void in



            print("data start- \(data) -data end")

            print("response start- \(response) -response end")

            print("Error is \(error?.localizedDescription)")


            let clientToken = String(data: data!, encoding: NSUTF8StringEncoding)!

            print("token is\(clientToken) token end")

            self.braintreeClient = BTAPIClient(authorization: clientToken)
            // As an example, you may wish to present our Drop-in UI at this point.
            // Continue to the next section to learn more...
        }.resume()


    }

这是正在打印的 token

<html>
<head>
    <title>BraintreePHPExample</title>
    <link rel=stylesheet type=text/css href="css/app.css">
    <link rel=stylesheet type=text/css href="css/overrides.css">
    <script src="javascript/vendor/jquery-2.1.4.min.js"></script>
    <script src="javascript/vendor/jquery.lettering-0.6.1.min.js"></script>
    <script src="javascript/demo.js"></script>
</head>
<body>

    <header class="main">
    <div class="container wide">
        <div class="content slim">
            <div class="set">
                <div class="fill">
                    <a class="pseudoshop" href="/">PSEUDO<strong>SHOP</strong></a>
                </div>

                <div class="fit">
                    <a class="braintree" href="https://developers.braintreepayments.com/guides/drop-in" target="_blank">Braintree</a>
                </div>
            </div>
        </div>
    </div>

    <div class="notice-wrapper">
            </div>
</header>

    <div class="wrapper">
        <div class="checkout container">

            <header>
                <h1>Hi, <br>Let's test a transaction</h1>
                <p>
                    Make a test payment with Braintree using PayPal or a card
                </p>
            </header>

            <form method="post" id="payment-form" action="/braintree_php_api/public_html/checkout.php">
                <section>
                    <div class="bt-drop-in-wrapper">
                        <div id="bt-dropin"></div>
                    </div>

                    <label for="amount">
                        <span class="input-label">Amount</span>
                        <div class="input-wrapper amount-wrapper">
                            <input id="amount" name="amount" type="tel" min="1" placeholder="Amount" value="10">
                        </div>
                    </label>
                </section>

                <button class="button" type="submit"><span>Test Transaction</span></button>
            </form>
        </div>
    </div>

    <script src="https://js.braintreegateway.com/v2/braintree.js"></script>
    <script>
        var checkout = new Demo({
            formID: 'payment-form'
        })
        var client_token = "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJiNmZhMDYxN2IxZjU2MjQzZGE0NWY4Mjk5YjEzYmRhNGEzZDEyNzM4MmMyOGQxOWY5NGI0OTJkMjgwODlkMTllfGNyZWF0ZWRfYXQ9MjAxNi0wNi0yNVQwMDo0MDo1My4xODc0MTUyNzcrMDAwMFx1MDAyNm1lcmNoYW50X2lkPXdtdDJoZ25tYzdxcW1wcGZcdTAwMjZwdWJsaWNfa2V5PXZmZnBqY2t0a216cHhidnIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvd210Mmhnbm1jN3FxbXBwZi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzL3dtdDJoZ25tYzdxcW1wcGYvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tL3dtdDJoZ25tYzdxcW1wcGYifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFsIjp7ImRpc3BsYXlOYW1lIjoiaWhlbHByIiwiY2xpZW50SWQiOm51bGwsInByaXZhY3lVcmwiOiJodHRwOi8vZXhhbXBsZS5jb20vcHAiLCJ1c2VyQWdyZWVtZW50VXJsIjoiaHR0cDovL2V4YW1wbGUuY29tL3RvcyIsImJhc2VVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImFzc2V0c1VybCI6Imh0dHBzOi8vY2hlY2tvdXQucGF5cGFsLmNvbSIsImRpcmVjdEJhc2VVcmwiOm51bGwsImFsbG93SHR0cCI6dHJ1ZSwiZW52aXJvbm1lbnROb05ldHdvcmsiOnRydWUsImVudmlyb25tZW50Ijoib2ZmbGluZSIsInVudmV0dGVkTWVyY2hhbnQiOmZhbHNlLCJicmFpbnRyZWVDbGllbnRJZCI6Im1hc3RlcmNsaWVudDMiLCJiaWxsaW5nQWdyZWVtZW50c0VuYWJsZWQiOnRydWUsIm1lcmNoYW50QWNjb3VudElkIjoiaWhlbHByIiwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn0sImNvaW5iYXNlRW5hYmxlZCI6ZmFsc2UsIm1lcmNoYW50SWQiOiJ3bXQyaGdubWM3cXFtcHBmIiwidmVubW8iOiJvZmYifQ==";

        braintree.setup(client_token, "dropin", {
            container: "bt-dropin"
        });
    </script>
</body>
</html>

最佳答案

全面披露:我在 Braintree 工作。如果您还有任何疑问,请随时联系support .

问题在于您的服务器端代码,而不是 swift 中的任何内容。问题是您的网站只需要提供 token 而不是 HTML。您可以在 Mac/*nix 系统上使用 curl 进行测试:

curl http://mywesitelinkhere.com/braintree_php_api/public_html/index.php/client_token

​ 如果此命令返回的不仅仅是客户端 token 字符串,那么您需要修复您的服务器。 Braintree getting started guide's client token generation lines确实是您所需要的:

<?php
  Braintree_Configuration::environment('sandbox');
  Braintree_Configuration::merchantId('use_your_merchant_id');
  Braintree_Configuration::publicKey('use_your_public_key');
  Braintree_Configuration::privateKey('use_your_private_key');

  echo($clientToken = Braintree_ClientToken::generate());
?>

查看您的服务器代码,并从该 url 中删除除打印此字符串之外的所有内容。

关于swift - Braintree Swift 继续在生成的 token 中打印 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023935/

相关文章:

ruby-on-rails - 类地址的父类(super class)不匹配 Braintree

ios - SKLightNodes 导致 SpriteKit 中的帧速率问题

ios - NVActivityIndi​​catorView 在按下按钮时不起作用

ios - TouchesBegan 方法在 swift 3 中不起作用

java - Braintree 创建 submerchant 不成功,但结果对象中没有错误

Braintree & Taxamo 整合,如何做才对?

android - Google Pay 无法与 Braintree SDK 配合使用

ios - EXC_BAD_ACCESS(Code=EXC_ARM_DA_ALIGN) 仅当从 Xcode 在设备上运行应用程序时

iOS:如何拦截和操作 AVPlayer 中的字节

ios - 在 iOS 应用程序中实现 Braintree SDK 时出错(swift 2.2/xcode 7.3)