Как создать клиента STRIPE с помощью STRIPE API в IOS?

У меня есть интеграция STRIPE в моем приложении для iOS.

Я могу сгенерировать токен, используя данные карты, введенные пользователями.

Я отправляю этот ТОКЕН на сервер для оплаты.

Все в порядке!

Проблема в том, что я хочу создать клиента STRIPE, используя его API.

Как это сделать, есть ли в SDK что-нибудь для этого?

ИЛИ передача «Authorization_KEY» и «STRIPE_TEST_PUBLIC_KEY» в заголовке - это способ?

ИЛИ мне нужно реализовать для этого весь OAuth 2.0?

Пожалуйста помоги !

Спасибо !


person Queshi Zakir    schedule 27.02.2014    source источник
comment
привет .... у меня проблема, я списываю сумму .... я сгенерировал токен, и я хочу списать сумму через PARSE, это возможно ... я alos dev для iOS   -  person Dalvik    schedule 10.04.2015
comment
@ Queshi Zakir Как создать полосатого клиента в iOS, пожалуйста, помогите мне.   -  person    schedule 21.04.2016


Ответы (2)


Я не думаю, что вы можете создать клиента Stripe с открытым ключом. Я совершенно уверен, что для этого запроса требуется секретный ключ, поэтому его, вероятно, следует обрабатывать на сервере, а не в клиентском приложении.

person nabeel    schedule 28.02.2014
comment
@QueshiZakir Как вам удалось сохранить детали на полосе? Через токен, созданный по реквизитам карты? Не могли бы вы сообщить мне, я столкнулся с той же проблемой. Спасибо - person Dhruv; 02.09.2015

Да, nabeel правильный, клиент должен создаваться сервером, а не клиентским приложением. Хотя, если хочешь рискнуть, можно сделать вот так ...

class StripeUtils {

    //Feed in the STPCardParams to create a Stripe token.
    func generateToken(with params: STPCardParams, completion: @escaping (Error?, STPToken?) -> ()) {

        STPAPIClient.shared().createToken(withCard: params) { (token, error) in
            completion(error, token)
        }
    }

    //Pass the token and user email address to get the STPCustomer
    func createUserWith(email: String, token: STPToken?, completion: @escaping (Error?, STPCustomer?) -> ()) {

        guard let token = token else {
            print("Token can not be nil")
            completion(*error*, nil)
            return
        }

        let headers = ["Authorization": "Bearer \(Constants.STRIPE_SECRET_KEY)"] //The secret key
        let body = ["email": email, "source": token.tokenId] as [String : Any]
        var paramString = String()

        body.forEach({ (key, value) in
            paramString = "\(paramString)\(key)=\(value)&"
        })
        let params = paramString.data(using: .utf8)

        //URLStrings.stripe_createUser is "https://api.stripe.com/v1/customers"
        //The APIManager is a class that takes urlString, params(HTTP body) and headers(HTTP headers) to get initialized.
        //(You can use Alamofire or whatever you use to handle APIs)
        //Instance of APIManager has a method called 'perform' with the URLSession's completion block  (Data?, URLResponse?, Error?) -> ()


        let manager = APIManager(urlString: URLStrings.stripe_createUser.description, params: params, headers: headers)

        manager.perform { (data, response, error) in

        //Use STPCustomerDeserializer intead of standard JSONSerialization to let Stripe hanlde the API response.

            let object = STPCustomerDeserializer.init(data: data, urlResponse: response, error: error)
            completion(object.error, object.customer)
        //That's it, you'll have a STPCustomer instance with stripeId if there were no errors.
        }
    }
}
person Gaurav Chandarana    schedule 09.10.2018
comment
могу ли я получить демо-код из приведенного выше примера? потому что я новичок в полосовой оплате, и я хочу создать клиента, и мне нужно сохранить данные карты на основе клиента. - person Bhavsang Jam; 07.08.2019
comment
Это демо. Все, что вам нужно сделать, это вызвать этот API с параметрами. - person Gaurav Chandarana; 01.10.2019