0
我正在爲swift快速設置我的OSX桌面應用程序的付款處理。由於沒有用於OSX的SDK,因此我正在通過Braintree的PHP SDK使用Web視圖。我想傳遞一些POST數據,以便產品的價格從我的應用程序動態傳遞,但似乎無法識別,並且根據PHP錯誤進行了定義。
我知道如何發送POST變量到一個PHP腳本並做了很多次,但我有一種感覺,我的swift代碼可能不正確。我的PHP錯誤是: 「通知:未定義的變量:價格」布倫特裏交易中的未定義Post變量
PayPal.swift
import Cocoa
import WebKit
class PayPal: NSViewController {
@IBOutlet weak var paypalWebView: WebView?
override func viewWillAppear() {
self.view.window!.title = "Payment"
}
override func viewDidLoad() {
super.viewDidLoad()
setupPP()
}
func setupPP(){
let request: NSURL = NSURL(string: "http://")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(url: request as URL)
urlRequest.httpMethod = "POST"
let postString = "price=45"
urlRequest.httpBody = postString.data(using: String.Encoding.utf8);
let session = URLSession.shared
let task = session.dataTask(with: urlRequest as URLRequest) {
(data, response, error) -> Void in
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = String(data: data!, encoding: .utf8)
print("responseString = \(responseString)")
}
task.resume()
let requesting = NSURLRequest(url: request as URL)
DispatchQueue.main.async(){
self.paypalWebView?.mainFrame.load(requesting as URLRequest)
}
}
}
布倫特裏PHP腳本
if(isset($_POST["price"])){
$price = $_POST["price"];
}
<?php $tr_data = Braintree_TransparentRedirect::transactionData(
array('redirectUrl' => "http://" ,
'transaction' => array('amount' => $price, 'type' => 'sale'))) ?>
而且貝寶認爲,本質上是一種網絡當用戶點擊一個按鈕時,視圖被激活。我不知道這是否與這件事有關?
什麼,當你添加'的var_dump($ _ POST)'到你的PHP代碼會發生什麼? – Maximus2012
我得到數組(0){}。我不確定它爲什麼沒有通過。 – Eseye
很可能您的開關代碼不會將POST(或任何請求)發送到您的PHP代碼。您可以使用Firebug/Web Developer瀏覽器插件來跟蹤GET/POST請求,以查看數據是否從Swift流向PHP。 – Maximus2012