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