繁体   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