我试图在 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/