|
@@ -8,13 +8,18 @@
|
|
#import "ASCheckoutPayManager.h"
|
|
#import "ASCheckoutPayManager.h"
|
|
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
#import <KlarnaMobileSDK/KlarnaMobileSDK-Swift.h>
|
|
|
|
|
|
|
|
+#import "Asteria-Swift.h"
|
|
|
|
+
|
|
|
|
+#import "CartVM.h"
|
|
|
|
+
|
|
|
|
+//Asteria-Bridging-Header
|
|
|
|
+
|
|
@interface ASCheckoutPayManager()<KlarnaEventHandler,KlarnaPaymentEventListener>
|
|
@interface ASCheckoutPayManager()<KlarnaEventHandler,KlarnaPaymentEventListener>
|
|
|
|
|
|
@property (nonatomic, copy) NSString *payType;
|
|
@property (nonatomic, copy) NSString *payType;
|
|
|
|
|
|
@property (nonatomic, strong) KlarnaPaymentView *klarna_payV;
|
|
@property (nonatomic, strong) KlarnaPaymentView *klarna_payV;
|
|
@property (nonatomic, strong) NSString *client_token;
|
|
@property (nonatomic, strong) NSString *client_token;
|
|
-@property (nonatomic, strong) NSString *author_token;
|
|
|
|
|
|
|
|
@end
|
|
@end
|
|
|
|
|
|
@@ -31,7 +36,7 @@ static ASCheckoutPayManager *_instance = nil;
|
|
return _instance;
|
|
return _instance;
|
|
}
|
|
}
|
|
|
|
|
|
-- (void)checkoutPayWithMethodType:(NSString *)payType {
|
|
|
|
|
|
+- (void)checkoutPayWithMethodType:(NSString *)payType param:(NSDictionary *)payParam {
|
|
|
|
|
|
self.payType = payType;
|
|
self.payType = payType;
|
|
|
|
|
|
@@ -49,15 +54,40 @@ static ASCheckoutPayManager *_instance = nil;
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
[self tool_gotoWebPay:urlStr withVC:topVC];
|
|
[self tool_gotoWebPay:urlStr withVC:topVC];
|
|
});
|
|
});
|
|
-
|
|
|
|
- NSLog(@"=====%@", json);
|
|
|
|
} faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
} faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
- K_STRONG_SELF;
|
|
|
|
|
|
+// K_STRONG_SELF;
|
|
[MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
[MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
}];
|
|
}];
|
|
|
|
|
|
} else if ([payType isEqualToString:@"stripe_payments"]) {//visa
|
|
} else if ([payType isEqualToString:@"stripe_payments"]) {//visa
|
|
|
|
|
|
|
|
+ double totalPay = [[payParam objectForKey:@"price"] doubleValue];
|
|
|
|
+ ToolStripePayment *payment = [[ToolStripePayment alloc]init];
|
|
|
|
+ NSString *price_unit_code = ASCurrencyManager.shared.currentCur;
|
|
|
|
+ if (price_unit_code.isEmpty) {
|
|
|
|
+ price_unit_code = @"USD";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [payment stripedidTapCheckoutButtonWithCurrentvc:[Current_normalTool topViewController] publishableKey:PayStripepublishableKey reqbaseUrl:BaseRequestrUrl(@"carts/mine/order") amount:totalPay*100 currency:price_unit_code addressModel:self.addressModel completion:nil];
|
|
|
|
+
|
|
|
|
+ payment.payFinishBlock = ^(NSString *status, NSString *orderid) {
|
|
|
|
+ int statusInt = [status intValue];
|
|
|
|
+ if (statusInt == 0) {
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 1, @{@"orderid":orderid});
|
|
|
|
+ }
|
|
|
|
+ } else if (statusInt == 1) {
|
|
|
|
+ //二次验证
|
|
|
|
+ [self stripePayCreateOrderid:orderid];
|
|
|
|
+ } else if (statusInt == 2) {
|
|
|
|
+// [topVC.view makeToast:@"您已取消支付"];
|
|
|
|
+ } else {
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":@"支付失败"});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
} else if ([payType isEqualToString:@"afterpay_payment"]) {//afterpay
|
|
} else if ([payType isEqualToString:@"afterpay_payment"]) {//afterpay
|
|
|
|
|
|
} else if ([payType isEqualToString:@"klarna_kco"]) {//klarna
|
|
} else if ([payType isEqualToString:@"klarna_kco"]) {//klarna
|
|
@@ -75,67 +105,162 @@ static ASCheckoutPayManager *_instance = nil;
|
|
|
|
|
|
NSLog(@"=====%@", json);
|
|
NSLog(@"=====%@", json);
|
|
} faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
} faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
- K_STRONG_SELF;
|
|
|
|
|
|
+ /*K_STRONG_SELF*/;
|
|
[MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
[MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
|
|
}];
|
|
}];
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
|
|
+ //货到付款
|
|
|
|
+ [self stripePayCreateOrderid:@""];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#pragma mark ----- stripe支付 、 货到付款方式-----
|
|
|
|
+//stripe支付(二次校验后生成订单)
|
|
|
|
+- (void)stripePayCreateOrderid:(NSString *)payid {
|
|
|
|
+ UIViewController *topVC = topViewController();
|
|
|
|
+
|
|
|
|
+ NSDictionary *requestParams = nil;
|
|
|
|
+ if ([payid isEqualToString:@""]) {//货到付款方式
|
|
|
|
+ requestParams = @{@"paymentMethod":self.payType};
|
|
|
|
+ } else {//stripe支付
|
|
|
|
+ NSDictionary *methodDic = @{@"payment_method":payid,
|
|
|
|
+ @"manual_authentication":@"card",
|
|
|
|
+ @"payment_element":@(YES)};
|
|
|
|
+ NSDictionary *param = @{@"method":self.payType, @"additional_data":methodDic};
|
|
|
|
+ requestParams = @{@"paymentMethod":param};
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
|
|
|
|
+ K_WEAK_SELF;
|
|
|
|
+ [ASNetTools.shared putWithPath:Chectout_PUT_sureOrder param:requestParams success:^(id _Nonnull json) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+
|
|
|
|
+ NSString *orderid = (NSString *)json;
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 1, @{@"orderid":orderid});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":msg});
|
|
|
|
+ }
|
|
|
|
+ }];
|
|
|
|
+}
|
|
|
|
|
|
|
|
+#pragma mark ----- PayPal支付 -----
|
|
|
|
+//paypal支付
|
|
- (void)tool_gotoWebPay:(NSString *)urlStr withVC:(UIViewController *)tmpvc {
|
|
- (void)tool_gotoWebPay:(NSString *)urlStr withVC:(UIViewController *)tmpvc {
|
|
XXX_BaseWebC *vc = [[XXX_BaseWebC alloc] init];
|
|
XXX_BaseWebC *vc = [[XXX_BaseWebC alloc] init];
|
|
vc.isPayType = YES;
|
|
vc.isPayType = YES;
|
|
|
|
+ K_WEAK_SELF;
|
|
vc.WebViewBlock = ^(NSUInteger status, id _Nonnull webData) {
|
|
vc.WebViewBlock = ^(NSUInteger status, id _Nonnull webData) {
|
|
-
|
|
|
|
- if (self.payFinishBlock) {
|
|
|
|
- self.payFinishBlock(self.payType, status, webData);
|
|
|
|
- }
|
|
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [self requestVerifyPaypalToken:webData];
|
|
};
|
|
};
|
|
[vc xxx_dsWebLoadUrl:urlStr];
|
|
[vc xxx_dsWebLoadUrl:urlStr];
|
|
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
vc.modalPresentationStyle = UIModalPresentationFullScreen;
|
|
[tmpvc presentViewController:vc animated:YES completion:nil];
|
|
[tmpvc presentViewController:vc animated:YES completion:nil];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//paypal支付 Token验证
|
|
|
|
+- (void)requestVerifyPaypalToken:(NSDictionary *)dic {
|
|
|
|
+ UIViewController *topVC = topViewController();
|
|
|
|
+
|
|
|
|
+ NSDictionary *params = @{@"token":[dic objectForKey:@"token"]};
|
|
|
|
+ [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
|
|
|
|
+ K_WEAK_SELF;
|
|
|
|
+ [ASNetTools.shared postWithPath:Chectout_Verify_PayToken param:params success:^(id _Nonnull json) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+
|
|
|
|
+ NSDictionary *payReturnDic = (NSDictionary *)json;
|
|
|
|
+ NSString *orderid = [payReturnDic objectForKey:@"id"];
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 1, @{@"orderid":orderid});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":msg});
|
|
|
|
+ }
|
|
|
|
+ }];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#pragma mark ----- klarna支付验证 -----
|
|
|
|
+//klarna支付验证
|
|
|
|
+-(void)tool_verifyOrderAutoken:(NSString *)authToken{
|
|
|
|
+
|
|
|
|
+ UIViewController *topVC = topViewController();
|
|
|
|
+
|
|
|
|
+ NSDictionary *params = @{@"authorization_token":authToken};
|
|
|
|
+
|
|
|
|
+ [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
|
|
|
|
+ K_WEAK_SELF;
|
|
|
|
+ [ASNetTools.shared postWithPath:Chectout_Verify_KlarnaCart param:params success:^(id _Nonnull json) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+
|
|
|
|
+ NSString *is_active = [(NSDictionary *)json objectForKey:@"is_active"];
|
|
|
|
+ NSLog(@"=======%@", is_active);
|
|
|
|
+ if ([is_active isEqualToString:@"1"]) {
|
|
|
|
+ [self tool_creatOrderAutoken:authToken];
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":msg});
|
|
|
|
+ }
|
|
|
|
+ }];
|
|
|
|
+}
|
|
|
|
|
|
|
|
+//klarna支付
|
|
-(void)tool_creatOrderAutoken:(NSString *)authToken{
|
|
-(void)tool_creatOrderAutoken:(NSString *)authToken{
|
|
UIViewController *topVC = topViewController();
|
|
UIViewController *topVC = topViewController();
|
|
|
|
|
|
self.client_token = authToken;
|
|
self.client_token = authToken;
|
|
-// //klarna_4 授权成功,创建订单
|
|
|
|
-// NSString *klarnaUrl = [NSString stringWithFormat:@"%@firecheckout/index/saveOrderKlarna",WebBase_Server];
|
|
|
|
-// NSMutableDictionary *paraDic = [NSMutableDictionary dictionary];
|
|
|
|
-// [paraDic setObject:@"klarna_payments" forKey:@"payment[method]"];
|
|
|
|
-// [paraDic setObject:authToken forKey:@"payment[authorization_token]"];
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ NSDictionary *additional_data = @{@"authorization_token":authToken};
|
|
|
|
+
|
|
|
|
+ NSDictionary *payType = @{@"method":@"klarna_pay_over_time",
|
|
|
|
+ @"additional_data":additional_data};
|
|
|
|
+ NSDictionary *params = @{@"paymentMethod":payType,
|
|
|
|
+ @"cartId":self.cartId};
|
|
|
|
+
|
|
// [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
|
|
// [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
|
|
-// [PPNetworkHelper POST:klarnaUrl parameters:paraDic success:^(id responseObject) {
|
|
|
|
-// [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
-// if(RequestSuccess){
|
|
|
|
-// NSDictionary *dic = (NSDictionary *)responseObject[@"data"];
|
|
|
|
-// NSString *order_id = MM_str(dic[@"order_id"]);
|
|
|
|
-//// [tepC tool_payMentSucessOrderId:order_id];
|
|
|
|
-// }else{
|
|
|
|
-//// [tepC tool_payMentFaild];
|
|
|
|
-// }
|
|
|
|
-// } failure:^(NSError *error) {
|
|
|
|
-// [MBProgressHUD hideHUDForView:topVC.view
|
|
|
|
-// animated:YES];
|
|
|
|
-// [topVC.view makeToast:ReqNetWorkFaild
|
|
|
|
-// duration:2
|
|
|
|
-// position:CSToastPositionCenter];
|
|
|
|
-// }];
|
|
|
|
|
|
+ K_WEAK_SELF;
|
|
|
|
+ [ASNetTools.shared postWithPath:Chectout_Verify_KlarnaToken param:params success:^(id _Nonnull json) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+
|
|
|
|
+ NSString *orderid = (NSString *)json;
|
|
|
|
+ NSLog(@"=======%@", orderid);
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 1, @{@"orderid":orderid});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
|
|
|
|
+ K_STRONG_SELF;
|
|
|
|
+ [MBProgressHUD hideHUDForView:topVC.view animated:YES];
|
|
|
|
+
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":msg});
|
|
|
|
+ }
|
|
|
|
+ }];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-#pragma mark - **************** KlarnaEventHandler ****************
|
|
|
|
-- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent dispatchedEvent:(KlarnaProductEvent * _Nonnull)event{
|
|
|
|
- NSLog(@"klarna---111---%@",event.qmui_allBindingKeys);
|
|
|
|
-}
|
|
|
|
-- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent encounteredError:(KlarnaError * _Nonnull)error{
|
|
|
|
- NSLog(@"klarna---222---error:%@",error);
|
|
|
|
-}
|
|
|
|
|
|
+
|
|
#pragma mark - **************** KlarnaPaymentEventListener ****************
|
|
#pragma mark - **************** KlarnaPaymentEventListener ****************
|
|
- (void)klarnaInitializedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView { //init 成功
|
|
- (void)klarnaInitializedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView { //init 成功
|
|
NSLog(@"klarna---888---%@",self.client_token);
|
|
NSLog(@"klarna---888---%@",self.client_token);
|
|
@@ -144,32 +269,19 @@ static ASCheckoutPayManager *_instance = nil;
|
|
//klarna_3 授权支付操作 klarna_getClientTokenAurhorizePay
|
|
//klarna_3 授权支付操作 klarna_getClientTokenAurhorizePay
|
|
[self.klarna_payV authorizeWithAutoFinalize:YES jsonData:self.client_token];
|
|
[self.klarna_payV authorizeWithAutoFinalize:YES jsonData:self.client_token];
|
|
}
|
|
}
|
|
-- (void)klarnaLoadedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView {
|
|
|
|
- NSLog(@"klarna---333---%@",paymentView);
|
|
|
|
-// self.bottomPaybtn.backgroundColor = [UIColor colorWithHexString:@"#B2000F"];
|
|
|
|
-// self.bottomPaybtn.userInteractionEnabled = YES;
|
|
|
|
|
|
|
|
-}
|
|
|
|
-- (void)klarnaLoadedPaymentReviewWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView {
|
|
|
|
- NSLog(@"klarna---444---%@",paymentView);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-}
|
|
|
|
- (void)klarnaAuthorizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView approved:(BOOL)approved authToken:(NSString * _Nullable)authToken finalizeRequired:(BOOL)finalizeRequired {
|
|
- (void)klarnaAuthorizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView approved:(BOOL)approved authToken:(NSString * _Nullable)authToken finalizeRequired:(BOOL)finalizeRequired {
|
|
|
|
|
|
- NSLog(@"klarna---555---%@",authToken);
|
|
|
|
|
|
+ NSLog(@"klarna---555---%@--approved---%d",authToken, approved);
|
|
|
|
|
|
if (approved == true ){
|
|
if (approved == true ){
|
|
NSLog(@"klarna 授权支付成功");
|
|
NSLog(@"klarna 授权支付成功");
|
|
-// if (self.payFinishBlock) {
|
|
|
|
-// self.payFinishBlock(self.payType, 1, @{@"token":authToken});
|
|
|
|
-// }
|
|
|
|
-// self.author_token = authToken;
|
|
|
|
-// [self tool_creatOrderAutoken:authToken];
|
|
|
|
|
|
+ [self tool_verifyOrderAutoken:authToken];
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
-// if (self.payFinishBlock) {
|
|
|
|
-// self.payFinishBlock(self.payType, 0, @{@"token":authToken});
|
|
|
|
-// }
|
|
|
|
|
|
+ if (self.payFinishBlock) {
|
|
|
|
+ self.payFinishBlock(self.payType, 0, @{@"msg":@"支付失败"});
|
|
|
|
+ }
|
|
NSLog(@"klarna 授权支付失败");
|
|
NSLog(@"klarna 授权支付失败");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -179,6 +291,13 @@ static ASCheckoutPayManager *_instance = nil;
|
|
[self tool_creatOrderAutoken:authToken];
|
|
[self tool_creatOrderAutoken:authToken];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+#pragma mark - **************** KlarnaEventHandler ****************
|
|
|
|
+- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent dispatchedEvent:(KlarnaProductEvent * _Nonnull)event{
|
|
|
|
+ NSLog(@"klarna---111---%@",event.qmui_allBindingKeys);
|
|
|
|
+}
|
|
|
|
+- (void)klarnaComponent:(id <KlarnaComponent> _Nonnull)klarnaComponent encounteredError:(KlarnaError * _Nonnull)error{
|
|
|
|
+ NSLog(@"klarna---222---error:%@",error);
|
|
|
|
+}
|
|
- (void)klarnaResizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView to:(CGFloat)newHeight {
|
|
- (void)klarnaResizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView to:(CGFloat)newHeight {
|
|
// [self.klarna_payV mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
// [self.klarna_payV mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
// make.height.mas_equalTo(newHeight);
|
|
// make.height.mas_equalTo(newHeight);
|
|
@@ -191,7 +310,17 @@ static ASCheckoutPayManager *_instance = nil;
|
|
- (void)klarnaFinalizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView approved:(BOOL)approved authToken:(NSString * _Nullable)authToken {
|
|
- (void)klarnaFinalizedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView approved:(BOOL)approved authToken:(NSString * _Nullable)authToken {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+- (void)klarnaLoadedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView {
|
|
|
|
+ NSLog(@"klarna---333---%@",paymentView);
|
|
|
|
+// self.bottomPaybtn.backgroundColor = [UIColor colorWithHexString:@"#B2000F"];
|
|
|
|
+// self.bottomPaybtn.userInteractionEnabled = YES;
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+- (void)klarnaLoadedPaymentReviewWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView {
|
|
|
|
+ NSLog(@"klarna---444---%@",paymentView);
|
|
|
|
+
|
|
|
|
|
|
|
|
+}
|
|
|
|
|
|
#pragma mark - **************** lazy ****************
|
|
#pragma mark - **************** lazy ****************
|
|
-(KlarnaPaymentView *)klarna_payV{
|
|
-(KlarnaPaymentView *)klarna_payV{
|