当我尝试使用来自 Github (https://github.com/square/SquareRegisterSDK-iOS) 的 Square SDK 进行付款时,我无法在 Square POS 应用程序中找到我从我的应用程序传递过来的金额。
请找出我实际遵循的以下步骤。
- 我已经从下面的 git hub 链接下载了 Square Register SDK。
https://github.com/square/SquareRegisterSDK-iOS
我使用 cocoa pods 运行了该应用程序,并且我已在我的项目中成功安装了 pod 文件。
我在“我的应用程序”部分的客户端登录中创建了一个测试应用程序。
应用名称:MyApp
应用程序 ID:XXXXXXXXXXXXXX(我在 Square Dashboard 中的应用程序 ID)
- 我已经在 Register Api 部分注册了我的 Bundle Id 和 Callback Url
iOS 应用包 ID:我的包 ID
iOS 应用程序 URL 方案:我的回调 Url
因为我的帐户已激活,可以通过应用程序接收付款。
现在回到我的代码,我只是采用了 Square Register SDK ----> SwiftCharge 类方法。
请找到我用于收费的以下代码,请让我知道我要进行的任何更正。
导入SquareRegisterSDK 导入 UIKit 让 yourClientID = "xxxxxxxxxx" let yourCallbackURL = URL(string: "MyApp://callback")!
枚举部分:Int { case amount = 0, supportedTenderTypes, optionalFields, 设置
init?(at indexPath: IndexPath) { self.init(rawValue: indexPath.section) }
让 allTenderTypes: [SCCAPIRequestTenderTypes] = [.card, .cash, .other, .squareGiftCard, .cardOnFile]
扩展字符串{ 变量 nilIfEmpty:字符串? { 返回是空的?无: self }
类 View Controller :UIViewController {
var supportedTenderTypes: SCCAPIRequestTenderTypes = .card var clearsDefaultFees = false var returnAutomaticallyAfterPayment = true @IBOutlet weak var currencyField: UITextField! @IBOutlet weak var amountField: UITextField! @IBOutlet weak var notesField: UITextField! @IBOutlet weak var userInfoStringField: UITextField! @IBOutlet weak var merchantIDField: UITextField! @IBOutlet weak var customerIDField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func awakeFromNib() { super.awakeFromNib() // Always set the client ID before creating your first API request. SCCAPIRequest.setClientID(yourClientID) } @IBAction func charge(sender: AnyObject) { let currencyCodeString = "USD" let amountString = "500" let amount: SCCMoney guard let amountCents = Int(amountString) else { showErrorMessage(title: "Invalid Amount", message: "\(amountString) is not a valid amount.") return } do { amount = try SCCMoney(amountCents: amountCents, currencyCode: currencyCodeString) } catch let error as NSError { showErrorMessage(title: "Invalid Amount", error: error) return } let userInfoString = "Radhachandan" let merchantID = "" let customerID = "" let notes = "Sample Test" let request: SCCAPIRequest do { request = try SCCAPIRequest(callbackURL: yourCallbackURL, amount: amount, userInfoString: userInfoString, merchantID: merchantID, notes: notes, customerID: customerID, supportedTenderTypes: supportedTenderTypes, clearsDefaultFees: clearsDefaultFees, returnAutomaticallyAfterPayment: returnAutomaticallyAfterPayment) } catch let error as NSError { showErrorMessage(title: "Invalid Amount", error: error) return } do { try SCCAPIConnection.perform(request) } catch let error as NSError { showErrorMessage(title: "Cannot Perform Request", error: error) return } } private func showErrorMessage(title: String, error: NSError) { showErrorMessage(title: title, message: error.localizedDescription) } private func showErrorMessage(title: String, message: String) { let alertView = UIAlertController(title: title, message: message, preferredStyle: .alert) alertView.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: nil)) present(alertView, animated: true, completion: nil) }
截至目前,它已重定向至 Square Point Of Sale 应用程序,但未显示我已通过的金额。
非常感谢您的友好反馈。
最佳答案
尝试像这样修改您的代码:
...
let userInfoString = "Radhachandan"
let merchantID = nil
let customerID = nil
let notes = "Sample Test"
...
您已提醒我们在为这些参数传递空字符串时存在错误,我们将尽快进行修复。
关于ios - 使用 Square SDK Swift 3 进行支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42953667/