1- 首先您需要将条带导入您的项目:
import Stripe
2- 制作支付按钮以执行支付操作:
@IBOutlet weak var payButton: UIButton!
3- 创建条带文本字段的实例来处理卡片数据输入:
class StripePaymentViewController: UIViewController {
//stripe payment textfield
let paymentTexField = STPPaymentCardTextField()
}
4- 在 viewDidLoad 你可以初始化 textField:
func initializeStripeTextField() {
// Initialize textField size
paymentTexField.frame = CGRect(x: 15, y: 300, width: self.view.frame.width - 30, height: 60)
// Changing textField background color
paymentTexField.backgroundColor = .white
// Setting the delegate (will be implemented later)
paymentTexField.delegate = self
// Adding the textField to the view
view.addSubview(paymentTexField)
// optional: hide the button until the payment data entered
payButton.isHidden = true
}
5- 实现条带textField委托,在填写卡片数据后显示隐藏按钮
extension StripePaymentViewController: STPPaymentCardTextFieldDelegate {
func paymentCardTextFieldDidChange(_ textField: STPPaymentCardTextField) {
if textField.isValid {
payButton.isHidden = false
}
}
}
6- 使用“YOUR_STRIPE_KEY”添加支付按钮操作:
@IBAction func payAction(_ sender: Any) {
// Get the card parameters
let card = paymentTexField.cardParams
// Aquire stripe token
STPAPIClient.init(publishableKey: "YOUR_STRIPE_KEY").createToken(withCard: card) { (token, error) in
if let error = error {
print (error)
} else if let token = token {
// The aquired token
print (token)
// Send payment request (will be implemented later)
self.payUsingToken(token: token)
}
}
}
7- 使用 Alamofire 提出付款请求
func payUsingToken(token: STPToken) {
let baseUrl = "YOUR_BACKEND_PAYMENT_URL"
// Request parameters
var parameters = [String: String]()
// Stripe aquired token
parameters["pay_token"] = token.tokenId
// The payment amount in cents (500 == 5$)
parameters["money_amount"] = String(500 * 100)
// Add other parameters if you want ...
Alamofire.request(baseUrl, method: .post, parameters: parameters, encoding: URLEncoding.default) .responseJSON { response in
switch response.result {
case .success(let JSON):
//Success
print(JSON)
case .failure(let error):
//Failure
print(error.localizedDescription)
}
}
}