STPPaymentConfiguration
An STPPaymentConfiguration represents all the options you can set or change around a payment.
STPPaymentContext
An STPPaymentContext keeps track of all of the state around a payment. It will manage fetching a user’s saved payment methods, tracking any information they select, and prompting them for required additional information before completing their purchase
STPPaymentConfiguration.shared().publishableKey = "pk_test_TYo"
STPPaymentConfiguration.shared().appleMerchantIdentifier = "mer_id"
Configure your publishable key
Initialise your Customer Context
An STPCustomerContext retrieves and updates a Stripe customer using an ephemeral key, a short-lived API key scoped to a specific customer object. If your current user logs out of your app and a new user logs in, be sure to either create a new instance of STPCustomerContext or clear the current instance’s cached customer.
Initialise your Customer Context
customerContext = STPCustomerContext(keyProvider: self)
extension ShoppingCartService: STPEphemeralKeyProvider {
func createCustomerKey(withAPIVersion apiVersion: String,
completion: @escaping STPJSONResponseCompletionBlock)
{
apiService.getStripeEphemeralKey { result in
switch result {
case .failure(let error):
completion(nil, error)
case .success(let payload):
if let payloadAsDict = convertToDictionary(text: payload) {
completion(payloadAsDict, nil)
} else {
completion(nil, NSError())
}
}
}
}
}
Initialise your Payment Context
paymentContext = STPPaymentContext(customerContext: customerContext!)
paymentContext?.delegate = self
extension ShoppingCartService: STPPaymentContextDelegate {
func paymentContextDidChange(_ paymentContext: STPPaymentContext) {}
func paymentContext(_ paymentContext: STPPaymentContext,
didFailToLoadWithError error: Swift.Error) {}
func paymentContext(_ paymentContext: STPPaymentContext,
didCreatePaymentResult paymentResult: STPPaymentResult,
completion: @escaping STPErrorBlock)
{
}
func paymentContext(_ paymentContext: STPPaymentContext,
didFinishWith status: STPPaymentStatus,
error: Swift.Error?)
{
}
}
STPShippingAddressViewController
This view controller contains a shipping address collection form. It renders a right bar button item that submits the form, so it must be shown inside a UINavigationController. Depending on your configuration’s shippingType, the view controller may present a shipping method selection form after the user enters an address.
STPPaymentMethodsViewController
This view controller presents a list of payment method options to the user, which they can select between. They can also add credit cards to the list.