[英]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.