簡體   English   中英

如何使用 Stripe 和 Swift 獲取卡片品牌

[英]How to get card brand using Stripe and Swift

    STPAPIClient.shared().createToken(withCard: cardParams) { (token, error) in
        if error != nil {
            //fail
        } else if let token = token {
            print(token.card?.brand) //Optional(__C.STPCardBrand)
            print(token.card?.brand.hashValue) //Optional(0)
            print(token.card?.brand.rawValue) //Optional(0)
        }
    }

有誰知道為什么 Stripe 不退回卡片品牌? 我正在使用 Stripe 測試卡,其余信息正在返回。

所以檢查 API 文檔我發現brand是枚舉:

var brand: STPCardBrand { get }

具有這些值:

typedef NS_ENUM(NSInteger, STPCardBrand) {
    STPCardBrandVisa,
    STPCardBrandAmex,
    STPCardBrandMasterCard,
    STPCardBrandDiscover,
    STPCardBrandJCB,
    STPCardBrandDinersClub,
    STPCardBrandUnknown,
};

您還可以考慮使用靜態stringFromBrand函數:

返回提供的卡片品牌的字符串表示; 即 [NSString stringFromBrand:STPCardBrandVisa] == @"Visa"。 宣言

  • (nonnull NSString *)stringFromBrand:(STPCardBrand)brand;

類 func 字符串(來自品牌:STPCardBrand)-> 字符串

示例:

print(STPCard.stringFromBrand(from: token.card?.brand))

斯威夫特 4:

print(STPCard.string(from: token.card!.brand))

@OlegDanu's answer with unwrapping

正如他所說,使用STPCard.stringFromBrand(from: token.card?.brand)但卡? STPCard類型的STPCard ,我沒有意識到這一點,並花了一些時間試圖解開它。 反正最好先拆開

if let card = token.card { }

這是下面的代碼

STPAPIClient.shared().createToken(withCard: card, completion: { 
    [weak self] (token, error) in

    if let error = error {
        print(error.localizedDescription)
        return
    }

    guard let token = token else { return }

    // card is an Optional of type STPCard
    if let card = token.card {

       let brand = STPCard.string(from: card.brand)

       print(brand)
    }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM