swift如何获得Stripe令牌?

Ris*_*tel 7 ios stripe-payments swift

我想实现Stripe Payment网关。并且需要生成令牌并将其传递给后端。

private func getToken(){
        let cardParams = STPCardParams()
        cardParams.number = paymentCardTextField?.cardNumber
        cardParams.expMonth = (paymentCardTextField?.expirationMonth)!
        cardParams.expYear = (paymentCardTextField?.expirationYear)!
        cardParams.cvc = paymentCardTextField?.cvc
        STPAPIClient.shared().createToken(withCard: cardParams) { (token: STPToken?, error: Error?) in
            guard let token = token, error == nil else {
                // Present error to user...
                return
            }
            self.dictPayData["stripe_token"] = token.tokenId
            print(self.dictPayData)


        }
    }
Run Code Online (Sandbox Code Playgroud)

Ris*_*tel 7

确保您需要添加Stripe publishableKey(实时/测试)

AppDelegate.swift中

     import Stripe
       class AppDelegate: UIResponder, UIApplicationDelegate{

       // var navCon: UINavigationController?
        var window: UIWindow?
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application la
             STPPaymentConfiguration.shared().publishableKey = "pk_test_DSFDSFSDFDFSDFSDFDSDSF"

            return true
        }
}
Run Code Online (Sandbox Code Playgroud)

在我的PaymentView.swift中

注:使用STPPaymentCardTextFieldDelegate卡片验证。

class PaymentView: UIViewController,STPPaymentCardTextFieldDelegate {
    @IBOutlet weak var paymentCardTextField = STPPaymentCardTextField()
}

private func getToken(){
        let cardParams = STPCardParams()
        cardParams.number = paymentCardTextField?.cardNumber
        cardParams.expMonth = (paymentCardTextField?.expirationMonth)!
        cardParams.expYear = (paymentCardTextField?.expirationYear)!
        cardParams.cvc = paymentCardTextField?.cvc
        STPAPIClient.shared().createToken(withCard: cardParams) { (token: STPToken?, error: Error?) in
            guard let token = token, error == nil else {
                // Present error to user...
                return
            }
            self.dictPayData["stripe_token"] = token.tokenId
            print(self.dictPayData)

        }
    }
Run Code Online (Sandbox Code Playgroud)