gpt4 book ai didi

ios - 在 iOS 上使用 Stripe 验证信用卡

转载 作者:可可西里 更新时间:2023-11-01 17:15:19 34 4
gpt4 key购买 nike

我开始将 Stripe 集成到我正在制作的 iOS 应用程序中,我已经到了需要验证卡信息的地步。

我试过:

#pragma mark - My Actions

- (IBAction)buyButtonTapped:(id)sender {

//Populate STPCard property
self.stripeCard = [[STPCard alloc]init];
self.stripeCard.name = self.txtFieldCardHolderName.text;
self.stripeCard.number = self.txtFieldCardNumber.text;
self.stripeCard.cvc = self.txtFieldCardCvc.text;
self.stripeCard.expMonth = [self.selectedMonth integerValue];
self.stripeCard.expYear = [self.selectedYear integerValue];

//Validate Customer info
if ([self validateCustomerInfo]) {
[self performStripeOperation];
}

}

-(BOOL)validateCustomerInfo{

//Create Alert

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Please, try again!"
message:@"Please, enter all required information."
preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {

//Add some action

}];

//Add its action
[alert addAction:action];


//Validate text fields
if (self.txtFieldCardHolderName.text == 0 || self.txtFieldCardNumber.text == 0 || self.txtFieldCardExpDate.text == 0 || self.txtFieldCardCvc.text == 0) {

[self presentViewController:alert animated:true completion:nil];
return NO;
}

//Validate card number, CVC, expMonth, expYear
NSError *error = nil;

[self.stripeCard validateCardReturningError:&error];

//3
if (error) {
alert.message = [error localizedDescription];
[self presentViewController:alert animated:true completion:nil];
return NO;
}

return YES;

}

我在 StackOverflow 上检查了几个其他问题,似乎每个人都在使用 validateCardReturningError 方法,iOS9 不推荐使用它。

Xcode 提示并要求我改用 STPCardValidator。

谁能帮我举一个使用 STPCardValidator 进行卡验证的例子?

我注意到我也可以使用以下类方法:

[STPCardValidator validationStateForNumber:self.txtFieldCardNumber.text validatingCardBrand:true];

但我不确定如何在我的 validateCustomerInfo 方法中使用它。

最佳答案

- (IBAction)buyButtonTapped:(id)sender{

param = [[STPCardParams alloc]init];
param.number = txt_cc_no.text;
param.cvc = txt_cc_cvvno.text;
param.expMonth =[self.selectedMonth integerValue];
param.expYear = [self.selectedYear integerValue];


if ([self validateCustomerInfo]) {
[self performStripeOperation];
}

}
- (BOOL)validateCustomerInfo {

//2. Validate card number, CVC, expMonth, expYear
[STPCardValidator validationStateForExpirationMonth:[self.selectedMonth stringValue]];
[STPCardValidator validationStateForExpirationYear:[self.selectedYear stringValue] inMonth:[self.selectedMonth stringValue]];
if ([txt_cc_type.text isEqualToString:@"visa"]) {
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandVisa];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandVisa];
}
else if ([txt_cc_type.text isEqualToString:@"MasterCard"]){
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandMasterCard];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandMasterCard];
}
else if ([txt_cc_type.text isEqualToString:@"American Express"]){

[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandAmex];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandAmex];
}
else if ([txt_cc_type.text isEqualToString:@"Discover"]){
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandDiscover];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandDiscover];
}
else if ([txt_cc_type.text isEqualToString:@"Diners Club"]){
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandDinersClub];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandDinersClub];
}
else if ([txt_cc_type.text isEqualToString:@"JCB"]){
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandJCB];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandJCB];
}
else if ([txt_cc_type.text isEqualToString:@"Unknown"]){
[STPCardValidator validationStateForCVC:txt_cc_cvvno.text cardBrand:STPCardBrandUnknown];
[STPCardValidator validationStateForNumber:txt_cc_no.text validatingCardBrand:STPCardBrandUnknown];
}


return YES;
}
- (void)performStripeOperation {
[[STPAPIClient sharedClient] createTokenWithCard:param
completion:^(STPToken *token, NSError *error) {
if (error) {
// [self handleError:error];
NSLog(@"ERRRRR = %@",error);
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Please try again"
message:[NSString stringWithFormat:@"%@",error.localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
} else {

//when credit card details is correct code here
}
}];
}

关于ios - 在 iOS 上使用 Stripe 验证信用卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137885/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com