Browse Source

feat:优惠券UI、支付类

“wangdongchao” 1 year ago
parent
commit
9d2924737a

+ 14 - 72
Asteria/Fuction/Cart/Cart_CheckoutC.m

@@ -274,17 +274,7 @@
             self.addGiftView.hidden = NO;
             [self.addGiftView setGiftData:model.add_gooodsImgUrl];
         }
-    } else if ([mark isEqualToString:Chectout_Verify_PayToken]) {
-        //校验支付token结果返回
-        if(sucessOrFail){
-            NSDictionary *payReturnDic = (NSDictionary *)data;
-            [self paymentResultStatus:[payReturnDic objectForKey:@"id"]];
-        }else{
-            [self.view makeToast:(NSString *)data duration:2 position:CSToastPositionCenter];
-        }
     }
-    
-    
 }
 
 - (void)updateData{
@@ -483,12 +473,6 @@
     [self.VM ry_requestDeleteApi:Chectout_DEL_cancelusePoints paramStr:@""];
 }
 
-//根据支付返回的token去服务端校验
-- (void)requestVerifyPayToken:(NSString *)payToken {
-    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
-    [self.VM ry_requestGetApi:Chectout_Verify_PayToken param:@{@"token":payToken}];
-}
-
 //下单
 -(void)requestSureOrder{
     
@@ -510,17 +494,20 @@
                 
                 NSDictionary *payDic = (NSDictionary *)payData;
                 
-                if ([payMethod isEqualToString:@"paypal_express"]) {
-                    [self requestVerifyPayToken:[payDic objectForKey:@"token"]];
-                } else if ([payMethod isEqualToString:@"stripe_payments"]) {//visa
-                    NSString *orderidStr = [NSString stringWithFormat:@"%@", [payDic objectForKey:@"orderid"]];
-                    [self paymentResultStatus:orderidStr];
-                } else if ([payMethod isEqualToString:@"afterpay_payment"]) {//afterpay
-                    
-                } else if ([payMethod isEqualToString:@"klarna_kco"]) {//klarna
-                    NSString *orderidStr = [NSString stringWithFormat:@"%@", [payDic objectForKey:@"orderid"]];
-                    [self paymentResultStatus:orderidStr];
-                }
+                NSString *orderidStr = [NSString stringWithFormat:@"%@", [payDic objectForKey:@"orderid"]];
+                
+                [self paymentResultStatus:orderidStr];
+                
+//                if ([payMethod isEqualToString:@"paypal_express"]) {
+//                    [self paymentResultStatus:orderidStr];
+//                } else if ([payMethod isEqualToString:@"stripe_payments"]) {//visa
+//                    [self paymentResultStatus:orderidStr];
+//                } else if ([payMethod isEqualToString:@"afterpay_payment"]) {//afterpay
+//                    
+//                } else if ([payMethod isEqualToString:@"klarna_kco"]) {//klarna
+////                    NSString *orderidStr = [NSString stringWithFormat:@"%@", [payDic objectForKey:@"orderid"]];
+//
+//                }
                  
             });
             
@@ -536,51 +523,6 @@
             
         }
     };
-    return;
-    
-    if ([paymentCode isEqualToString:@"paypal_express"]) {//paypal
-        
-        
-        
-        return;
-        
-//        for (int i=0; i<self.totalCellM.total_segments.count; i++) {
-//            NSDictionary *dic = self.totalCellM.total_segments[i];
-//            NSString *code = MM_str(dic[@"code"]);
-//            if ([code isEqualToString:@"grand_total"]){ //subBottomV
-//                NSString *priceStr = [NSString stringWithFormat:@"%@",dic[@"value"]];
-////                [self PayPalWithAmount:priceStr currencyCode:ASCurrencyManager.shared.currentCur shortDescription:@"购买商品"];
-//                return;
-//
-//            }
-//        }
-        return;
-    } else if ([paymentCode isEqualToString:@"stripe_payments"]) {//visa
-        
-    } else if ([paymentCode isEqualToString:@"afterpay_payment"]) {//afterpay
-        
-    } else if ([paymentCode isEqualToString:@"klarna_kco"]) {//klarna
-        
-    } else {
-        
-    }
-    
-    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
-    NSDictionary *param = @{@"method":paymentCode};
-//    K_WEAK_SELF;
-    [ASNetTools.shared putWithPath:Chectout_PUT_sureOrder param:@{@"paymentMethod":param} success:^(id _Nonnull json) {
-        K_STRONG_SELF;
-        [MBProgressHUD hideHUDForView:self.view animated:YES];
-        NSLog(@"=======%@", json);
-        
-        [self paymentResultStatus:[json objectForKey:@"data"]];
-        
-    } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
-        K_STRONG_SELF;
-        [MBProgressHUD hideHUDForView:self.view animated:YES];
-        NSLog(@"=======%@=====%@", code, msg);
-        [self paymentResultStatus:@""];
-    }];
 }
 
 - (void)paymentResultStatus:(NSString *)orderid {

+ 2 - 3
Asteria/Fuction/Cart/PayManager/ASCheckoutPayManager.h

@@ -10,6 +10,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+#define PayStripepublishableKey      @"pk_test_51MFDGRAxgV55iyHtmJFrPuz4i5cl1y3nhTLVT3EmsHlYLIwsj7TnPRPeulAUXSbOW7gccaVLJmFjVz4eu3E17g6z00TLI1YvoG"
 
 #define Chectout_Pay_Paypal_Url      BaseRequestrUrl(@"rewrite/paypal/getPaypalToken")
 #define Chectout_Pay_Klarna_Url      BaseRequestrUrl(@"rewrite/klarna/getKlarnaToken")
@@ -23,7 +24,7 @@ typedef void(^ASPayFinishBlock)(NSString *payMethod, NSUInteger isSucess , id pa
 
 //购物车id(klarna支付生成订单用到)
 @property (nonatomic, copy) NSString *cartId;
-//地址信息(klarna支付生成订单用到)
+//地址信息(stripe支付sdk用到)
 @property (nonatomic, strong) ASAddressModel *addressModel;
 
 
@@ -31,8 +32,6 @@ typedef void(^ASPayFinishBlock)(NSString *payMethod, NSUInteger isSucess , id pa
 
 - (void)checkoutPayWithMethodType:(NSString *)payType param:(NSDictionary *)payParam;
 
-- (void)checkoutPayWithMethodType:(NSString *)payType completion:(void (^ __nullable)(NSUInteger isSucess , id payData))completion;
-
 @end
 
 NS_ASSUME_NONNULL_END

+ 75 - 67
Asteria/Fuction/Cart/PayManager/ASCheckoutPayManager.m

@@ -54,47 +54,30 @@ static ASCheckoutPayManager *_instance = nil;
             dispatch_async(dispatch_get_main_queue(), ^{
                 [self tool_gotoWebPay:urlStr withVC:topVC];
             });
-            
-            NSLog(@"=====%@", json);
         } faild:^(NSString * _Nonnull code, NSString * _Nonnull msg) {
-            K_STRONG_SELF;
+//            K_STRONG_SELF;
             [MBProgressHUD hideHUDForView:topVC.view animated:YES];
         }];
         
     } 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";
         }
         
-        
-//        double totalPay = 212.00;
-//        NSString *price_unit_code = @"USD";
-        [payment stripedidTapCheckoutButtonWithCurrentvc:[Current_normalTool topViewController] publishableKey:@"pk_test_51MFDGRAxgV55iyHtmJFrPuz4i5cl1y3nhTLVT3EmsHlYLIwsj7TnPRPeulAUXSbOW7gccaVLJmFjVz4eu3E17g6z00TLI1YvoG" reqbaseUrl:BaseRequestrUrl(@"carts/mine/order") amount:totalPay*100 currency:price_unit_code addressModel:self.addressModel completion:^(NSInteger isState, id _Nonnull data) {
-            
-            NSLog(@"======%ld==========%@", isState, (NSString *)data);
-            
-            if(isState == 0){
-                NSString *orderId = (NSString *)data;
-//                [self tool_payMentSucessOrderId:orderId];
-                
-            }
-        }];
+        [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) {
-            NSLog(@"======%@==========%@", status, 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 (self.payFinishBlock) {
@@ -102,9 +85,7 @@ static ASCheckoutPayManager *_instance = nil;
                 }
             }
         };
-        
-        
-        
+
     } else if ([payType isEqualToString:@"afterpay_payment"]) {//afterpay
         
     } else if ([payType isEqualToString:@"klarna_kco"]) {//klarna
@@ -127,22 +108,30 @@ static ASCheckoutPayManager *_instance = nil;
             
         }];
     } else {
-        
+        //货到付款
+        [self stripePayCreateOrderid:@""];
     }
 }
 
+#pragma mark ----- stripe支付 、 货到付款方式-----
 //stripe支付(二次校验后生成订单)
 - (void)stripePayCreateOrderid:(NSString *)payid {
     UIViewController *topVC = topViewController();
     
-    [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
-    NSDictionary *methodDic = @{@"payment_method":payid,
-                                @"manual_authentication":@"card",
-                                @"payment_element":@(YES)};
+    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};
+    }
     
-    NSDictionary *param = @{@"method":self.payType, @"additional_data":methodDic};
+    [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
     K_WEAK_SELF;
-    [ASNetTools.shared putWithPath:Chectout_PUT_sureOrder param:@{@"paymentMethod":param} success:^(id _Nonnull json) {
+    [ASNetTools.shared putWithPath:Chectout_PUT_sureOrder param:requestParams success:^(id _Nonnull json) {
         K_STRONG_SELF;
         [MBProgressHUD hideHUDForView:topVC.view animated:YES];
         
@@ -155,26 +144,53 @@ static ASCheckoutPayManager *_instance = nil;
         K_STRONG_SELF;
         [MBProgressHUD hideHUDForView:topVC.view animated:YES];
         if (self.payFinishBlock) {
-            self.payFinishBlock(self.payType, 0, @{@"msg":@"取消支付/支付失败"});
+            self.payFinishBlock(self.payType, 0, @{@"msg":@"支付失败"});
         }
     }];
 }
 
+#pragma mark ----- PayPal支付 -----
 //paypal支付
 - (void)tool_gotoWebPay:(NSString *)urlStr withVC:(UIViewController *)tmpvc {
     XXX_BaseWebC *vc = [[XXX_BaseWebC alloc] init];
     vc.isPayType = YES;
+    K_WEAK_SELF;
     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.modalPresentationStyle = UIModalPresentationFullScreen;
     [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":@"支付失败"});
+        }
+    }];
+}
+
+#pragma mark ----- klarna支付验证 -----
 //klarna支付验证
 -(void)tool_verifyOrderAutoken:(NSString *)authToken{
     
@@ -184,10 +200,8 @@ static ASCheckoutPayManager *_instance = nil;
     
     [MBProgressHUD showHUDAddedTo:topVC.view animated:YES];
     K_WEAK_SELF;
-    [ASNetTools.shared postWithPath:@"rest/V1/rewrite/klarna/checkoutQuoteStatus" param:params success:^(id _Nonnull json) {
+    [ASNetTools.shared postWithPath:Chectout_Verify_KlarnaCart param:params success:^(id _Nonnull json) {
         K_STRONG_SELF;
-//        [MBProgressHUD hideHUDForView:topVC.view animated:YES];
-        
         
         NSString *is_active = [(NSDictionary *)json objectForKey:@"is_active"];
         NSLog(@"=======%@", is_active);
@@ -197,14 +211,12 @@ static ASCheckoutPayManager *_instance = nil;
             
         }
         
-        
-        
     } 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":@"取消支付/支付失败"});
+            self.payFinishBlock(self.payType, 0, @{@"msg":@"支付失败"});
         }
     }];
 }
@@ -240,19 +252,13 @@ static ASCheckoutPayManager *_instance = nil;
         [MBProgressHUD hideHUDForView:topVC.view animated:YES];
         
         if (self.payFinishBlock) {
-            self.payFinishBlock(self.payType, 0, @{@"msg":@"取消支付/支付失败"});
+            self.payFinishBlock(self.payType, 0, @{@"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 ****************
 - (void)klarnaInitializedWithPaymentView:(KlarnaPaymentView * _Nonnull)paymentView { //init 成功
     NSLog(@"klarna---888---%@",self.client_token);
@@ -261,34 +267,19 @@ static ASCheckoutPayManager *_instance = nil;
     //klarna_3 授权支付操作 klarna_getClientTokenAurhorizePay
     [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 {
     
     NSLog(@"klarna---555---%@--approved---%d",authToken, approved);
     
     if (approved == true ){
         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 {
-//        if (self.payFinishBlock) {
-//            self.payFinishBlock(self.payType, 0, @{@"token":authToken});
-//        }
+        if (self.payFinishBlock) {
+            self.payFinishBlock(self.payType, 0, @{@"msg":@"支付失败"});
+        }
         NSLog(@"klarna 授权支付失败");
     }
 }
@@ -298,6 +289,13 @@ static ASCheckoutPayManager *_instance = nil;
         [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 {
 //    [self.klarna_payV mas_updateConstraints:^(MASConstraintMaker *make) {
 //        make.height.mas_equalTo(newHeight);
@@ -310,8 +308,18 @@ static ASCheckoutPayManager *_instance = nil;
 - (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 ****************
 -(KlarnaPaymentView *)klarna_payV{
     if(!_klarna_payV){

+ 3 - 1
Asteria/Fuction/Cart/VM/CartVM.h

@@ -48,7 +48,9 @@
 //paypal根据支付返回的token去服务端校验
 #define Chectout_Verify_PayToken     BaseRequestrUrl(@"rewrite/paypal/return")
 
-//paypal根据支付返回的token去服务端校验
+//Klarna支付购物车验证
+#define Chectout_Verify_KlarnaCart   BaseRequestrUrl(@"rewrite/klarna/checkoutQuoteStatus")
+//Klarna根据支付返回的token去服务端校验
 #define Chectout_Verify_KlarnaToken  BaseRequestrUrl(@"carts/mine/payment-information")
 
 

+ 22 - 0
Asteria/Fuction/Goods/V/ASGoodsCouponCell.m

@@ -101,8 +101,13 @@
         float itemY = 10;
         for (int i = 0; i < array.count; i++) {
             ASGoodsCouponItemView *itemView = [[ASGoodsCouponItemView alloc] initWithFrame:CGRectMake(itemX, itemY, itemWidth, 100)];
+            itemView.tag = i;
             [_couponView addSubview:itemView];
             
+            itemView.userInteractionEnabled = YES;
+            UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_clickAction:)];
+            [itemView addGestureRecognizer:tap];
+            
             if (i % 2 == 1) {
                 itemX = 10;
                 itemY = itemY + 100 + 10;
@@ -129,6 +134,10 @@
     }
 }
 
+- (void)_clickAction:(UIGestureRecognizer *)taper {
+    
+}
+
 - (void)_couponEvent:(UIButton *)button {
 //    button.selected = !button.selected;
     self.rTopBtn.selected = !self.rTopBtn.selected;
@@ -142,6 +151,10 @@
 
 @interface ASGoodsCouponItemView()
 
+@property (nonatomic, strong) UILabel *couponCodeLab;
+@property (nonatomic, strong) UILabel *couponPriceLab;
+@property (nonatomic, strong) UILabel *couponDescLab;
+
 @end
 
 
@@ -157,6 +170,15 @@
             make.edges.mas_equalTo(0);
         }];
         
+        _couponCodeLab = [UILabel labelCreateWithText:@"code:1238" font:[UIFont fontWithName:Rob_Regular size:12] textColor:_0B0B0B];
+        _couponCodeLab.textAlignment = NSTextAlignmentCenter;
+        [bgImaegView addSubview:_couponCodeLab];
+        [_couponCodeLab mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.bottom.mas_equalTo(-16);
+            make.centerX.equalTo(bgImaegView.mas_centerX).offset(-25);
+            make.width.mas_equalTo((KScreenWidth - 50)/2 - 80);
+        }];
+        
         
     }
     return self;