Платежи с помощью Square SDK Swift 3

Поскольку я пытаюсь производить платежи с помощью Square SDK из Github (https://github.com/square/SquareRegisterSDK-iOS) Я не могу найти сумму в приложении Square POS, которую я передал из своего приложения.

Пожалуйста, найдите следующие шаги, которые я действительно выполнил.

  1. Я загрузил SDK Square Register по ссылке ниже git hub.

https://github.com/square/SquareRegisterSDK-iOS

  1. Я запустил приложение, используя стручки какао, и я успешно установил файл стручка в свой проект.

  2. Я создал тестовое приложение в моем клиентском логине в разделе «Мои приложения».

Имя приложения: MyApp

Идентификатор приложения: XXXXXXXXXXXXXX (идентификатор моего приложения из Square Dashboard)

  1. Я зарегистрировал свой идентификатор пакета и URL-адрес обратного вызова в разделе Register Api

Идентификаторы пакетов приложений для iOS: My Bundle Id

Схемы URL-адресов приложений iOS: мой URL-адрес обратного вызова

  1. Поскольку моя учетная запись активирована для приема платежей через приложения.

  2. Теперь, возвращаясь к своему коду, я просто взял Square Register SDK ----> методы класса SwiftCharge как есть.

  3. Пожалуйста, найдите приведенный ниже код, который я использовал для оплаты, и сообщите мне о любых исправлениях, которые необходимо внести с моей стороны.

    import SquareRegisterSDK import UIKit let yourClientID = "xxxxxxxxxx" let yourCallbackURL = URL (string: "MyApp: // callback")!

    enum Раздел: Int {case amount = 0, supportedTenderTypes, optionalFields, settings

    init?(at indexPath: IndexPath) {
        self.init(rawValue: indexPath.section)
    }
    

    }

    let allTenderTypes: [SCCAPIRequestTenderTypes] = [.card, .cash, .other, .squareGiftCard, .cardOnFile]

    extension String {var nilIfEmpty: String? {return isEmpty? nil: self}}

    class ViewController: 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)
    }
    

    }

  4. На данный момент он был перенаправлен в приложение Square Point Of Sale, но он не отображает сумму, которую я передал.

Будем очень признательны за ваш отзыв.


person Radhachandan    schedule 22.03.2017    source источник
comment
Вы уверены, что ваша сумма устанавливается правильно? Вы пробовали пример кода суммы? SCCMoney *const amount = [SCCMoney moneyWithAmountCents:100 currencyCode:@"USD" error:NULL];   -  person tristansokol    schedule 22.03.2017
comment
Да, я сделал это, но не повезло. Я уверен, что что-то упустил, если мы свяжемся с вами и проверим код, это может мне помочь.   -  person Radhachandan    schedule 23.03.2017
comment
какая сумма взимается? 0.00?   -  person tristansokol    schedule 23.03.2017
comment
Поскольку существует метод обратного вызова для взимания суммы в квадратном SDK (SCCAPIRequest), и там я передаю 500 центов, что технически означает 5 долларов, когда мое приложение перенаправляет приложение Square POS, я не смог найти сумму, которую я прошел , он отображается как 0,00 долларов США.   -  person Radhachandan    schedule 24.03.2017
comment
Когда меня перенаправили в приложение Square Point of sale, я обнаружил экран с загрузкой типа (file: ///Users/macblx/Desktop/IMG_0277.PNG), а после этого экран выглядит как (file: /// Users / macblx / Рабочий стол / IMG_0276.PNG).   -  person Radhachandan    schedule 27.03.2017
comment
Можете попробовать загрузить свои фотографии на сайт вроде imgur? эти ссылки не работают.   -  person tristansokol    schedule 27.03.2017
comment
Я заметил, что вы передали пустые строки для идентификатора продавца и идентификатора клиента. Можете ли вы вместо этого попробовать использовать nil? @ user2584500   -  person orangemako    schedule 28.03.2017


Ответы (1)


Попробуйте изменить свой код следующим образом:

...
let userInfoString = "Radhachandan"
    let merchantID = nil
    let customerID = nil
    let notes = "Sample Test"
...

Вы предупредили нас об ошибке при передаче пустых строк для этих параметров, мы скоро будем работать над исправлением.

person tristansokol    schedule 28.03.2017