Как использовать две клавиши чередования в делегате приложения в swift ios - PullRequest
1 голос
/ 26 марта 2020

Я хочу добавить два ключа чередования в поле моего делегата приложения в Swift iOS. У меня есть два чековых счета, и в зависимости от условий я хочу совершать платежи по кредитным / дебетовым картам. Заранее спасибо.

Для того, что я сделал, вместо того, чтобы объявлять строковые ключи в делегате приложения, я объявляю ключи в самом классе, где я создаю токен для платежей, как показано ниже. У меня есть два класса в каждом классе, я использую каждый ключ.

@IBAction func submitCard(_ sender: AnyObject) {

    let cardParams = paymentTextField.cardParams
    Stripe.setDefaultPublishableKey("pk_test_1234567899875gh")// example key

    // It takes the card details and creates the token here.

    STPAPIClient.shared().createToken(withCard: cardParams) { token, error in
        guard token != nil else {

           print("Error creating token: %@", error!.localizedDescription);
           return
        }
        print(token)
    }
}

Это запись? или мне нужно изменить код?

Примечание. Речь идет не об окружающей среде, а о двух разных учетных записях.

Ответы [ 3 ]

1 голос
/ 26 марта 2020

Вы можете просто создать несколько клиентов STPAPIC, используя разные ключи, а затем использовать их по мере необходимости, вместо использования общего экземпляра.

https://stripe.dev/stripe-ios/docs/Classes/STPAPIClient.html# / c: obj c (cs) STPAPIClient (im) initWithPublishableKey :

let clientA = STPAPIClient(publishableKey: "pk_123")
let clientB = STPAPIClient(publishableKey: "pk_456")

if usingClientA {
    clientA.createToken(withCard: cardParams) { ... }
} else if usingClientB {
    clientB.createToken(withCard: cardParams) { ... }
}

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

0 голосов
/ 26 марта 2020

Вы можете использовать это условие в AppDelegate:

#if DEBUG
    Stripe.setDefaultPublishableKey(testKey)
#else
    Stripe.setDefaultPublishableKey(liveKey)
#endif

Результат: Если вы будете использовать среду отладки, то Stripe получит тестовый ключ. Например, в случае архивации и развертывания в TestFlight Stripe получит живые ключи.

0 голосов
/ 26 марта 2020

В идеале вы должны использовать только одну учетную запись Stripe. И способ установки publishableKey в AppDelegate зависит от текущей среды (т. Е. Разработки / производства), например:

let key = isProduction ? "pk_live_TYooMQauvdEDq54NiTphI7jx" : "pk_test_TYooMQauvdEDq54NiTphI7jx"
Stripe.setDefaultPublishableKey(key)

Если вам нужно установите новый ключ на основе «условий», как вы уже упоминали, позже просто установите его с помощью функции setDefaultPublishableKey.

...