【问题标题】:How to get card brand using Stripe and Swift如何使用 Stripe 和 Swift 获得卡片品牌
【发布时间】:2017-11-16 00:27:16
【问题描述】:
    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 测试卡,其余信息正在返回。

【问题讨论】:

    标签: ios swift stripe-payments


    【解决方案1】:

    所以检查API文档我发现brand是en enum:

    var brand: STPCardBrand { get }
    

    具有这些值:

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

    您也可以考虑使用静态stringFromBrand 函数:

    返回所提供卡片品牌的字符串表示形式; IE。 [NSString stringFromBrand:STPCardBrandVisa] == @"Visa"。声明

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

    类函数字符串(来自品牌:STPCardBrand)->字符串

    例子:

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

    斯威夫特 4:

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

    【讨论】:

    • 不生成Token可以得到卡片品牌吗?
    • 令牌是什么意思?
    【解决方案2】:

    @OlegDanu 的解包回答

    正如他所说,使用STPCard.stringFromBrand(from: token.card?.brand) 但卡?是 STPCard 类型的 Optional,我没有意识到这一点,花了一些时间试图打开它。无论如何最好先拆开它

    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)
        }
    })
    

    【讨论】:

    • cardparams 表示卡卡号?
    • 您在哪里看到cardparams?
    • 您在创建令牌时传递的卡片参数?
    • @Arigarasuthan 是的,这是卡片参数。我从 STPPaymentCardTextField 文本字段中获取卡片。输入到文本字段中的卡的类型为 STPPaymentMethodCardParams。基本上是用户在该文本字段中输入的卡号。
    • 是的,它正在工作,谢谢。如果我想生成一个令牌发布密钥需要吗?
    猜你喜欢
    • 2017-11-16
    • 2018-09-01
    • 2017-07-04
    • 2018-12-22
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多