我試圖設置一個相對簡單的Braintree服務器上運行node.js與我的客戶端寫在Swift 2.1 iOS 9,雖然我能登錄客戶端令牌,我發現了以下錯誤:Braintree node.js瓦特/ iOS 9 Swift 2.1 - 客戶端令牌錯誤
[BraintreeSDK] ERROR Unsupported client token version. Please ensure your server is generating a valid Braintree ClientToken with a server-side SDK that is compatible with this version of Braintree iOS.
下面是我的服務器代碼(這是改編自BraintreeDev庫):
'use strict';
var express = require('express');
var app = express();
var braintree = require('braintree');
var bodyParser = require('body-parser');
var parseUrlEnconded = bodyParser.urlencoded({
extended: false
});
var gateway = braintree.connect({
environment: braintree.Environment.Sandbox,
merchantId: 'xxxxxxxxxxxxx',
publicKey: 'xxxxxxxxxxxxxxx',
privateKey: 'xxxxxxxxxxxxxxxxxxxxxxx'
});
app.use(express.static('public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
// Creates a new token and returns it in the response.
app.get('/token', function (req, res) {
gateway.clientToken.generate({}, function (error, response) {
res.json(response);
});
});
app.post('/payment', function (req, res) {
var sale = {
amount: "10",
payment_method_nonce: req.param('payment_method_nonce')
};
gateway.transaction.sale(sale, function (error, response) {
if (!error && response.success) {
res.json(response);
} else {
// do something else
}
});
});
app.listen(process.env.PORT || 5000)
module.exports = app;
這裏是我的iOS代碼:
class BaseViewController: UIViewController {
var braintreeClient: BTAPIClient?
override func viewDidLoad() {
super.viewDidLoad()
let clientTokenURL = NSURL(string: "https://my-heroku-app.herokuapp.com/token")!
let clientTokenRequest = NSMutableURLRequest(URL: clientTokenURL)
clientTokenRequest.setValue("text/plain", forHTTPHeaderField: "Accept")
NSURLSession.sharedSession().dataTaskWithRequest(clientTokenRequest) { (data, response, error) -> Void in
guard let data = data else {
return
}
let clientToken = String(data: data, encoding: NSUTF8StringEncoding)
print("Client Token: \(clientToken)")
self.braintreeClient = BTAPIClient(authorization: clientToken!)
print(response?.description)
}.resume()
}
...
這看起來應該是非常直截了當的事情,而且我很難理解爲什麼會出現此錯誤。
編輯:我使用最新版本的Braintree SDK for iOS和最新版本的Braintree node.js包。
不幸的是,我現在得到以下錯誤:'[BraintreeSDK]錯誤無效的客戶端令牌。請確保你的服務器正在生成一個有效的Braintree ClientToken。' – damianesteban
而且這個錯誤:'錯誤BTClient無法初始化,因爲提供的clientToken無效' – damianesteban
請聯繫我們的[support team](https://support.braintreepayments。 com /)更多幫助解決您的問題。 – pblesi