我如何获得费用以及如何通过令牌ID快速付款(IOS)

时间:2019-06-21 06:06:25

标签: ios swift iphone stripe-payments

如何快速生成条带令牌ID和费用ID。拜托,任何人都可以迅速帮助产生条纹付款吗?

2 个答案:

答案 0 :(得分:0)

首先执行条纹付款配置

        let configuration = STPPaymentConfiguration.shared()
    configuration.additionalPaymentMethods = .all
    configuration.appleMerchantIdentifier = "Your stripe identifier"
    configuration.canDeletePaymentMethods = true
    configuration.createCardSources = false

    let customerContext = STPCustomerContext(keyProvider: MyAPIClient.sharedClient)
    paymentMethodViewController = STPPaymentMethodsViewController(configuration: configuration,
                                                                  theme: STPTheme.init(),
                                                                  customerContext: customerContext,
                                                                  delegate: self)
    self.navigationController?.pushViewController(controller, animated: true)

用于ApiClient生成密钥的代码

 class MyAPIClient: NSObject, STPEphemeralKeyProvider {

static let sharedClient = MyAPIClient()

func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
    let url = AppConstant.Server.EPHERMAL_KEY

    let user = UserDefaultManager.shared.readUser()
    let header: HTTPHeaders = ["api_token":  user.apiToken ?? "",
                               "Content-Type": "application/json"]

    Alamofire.request(url,
                      method: .get,
                      parameters: [
        "api_version": apiVersion,
        "id": user.id ?? -1
        ],
        headers: header)
        .validate(statusCode: 200..<300)
        .responseJSON { responseJSON in
            switch responseJSON.result {
            case .success(let json):
                completion(json as? [String: AnyObject], nil)
            case .failure(let error):
                completion(nil, error)
            }
    }
}

}

然后使用委托方法

   func paymentMethodsViewController(_ paymentMethodsViewController: STPPaymentMethodsViewController, didSelect paymentMethod: STPPaymentMethod) {

    var paymentStripeId: String?
    if let source = paymentMethod as? STPSource {
        paymentStripeId = source.stripeID
    } else if let card = paymentMethod as? STPCard {
        self.stpCard = card
    }
}

答案 1 :(得分:-1)

尝试此方法。来自条带文档。

let cardParams = STPCardParams()
cardParams.number = "4242424242424242"
cardParams.expMonth = 10
cardParams.expYear = 2021
cardParams.cvc = "123"

STPAPIClient.shared().createToken(withCard: cardParams) { (token: STPToken?, error: Error?) in
    guard let token = token, error == nil else {
        // Present error to user...
        return
    }

    submitTokenToBackend(token, completion: { (error: Error?) in
        if let error = error {
            // Present error to user...
        }
        else {
            // Continue with payment...
        }
    })
}