// // KWMBeforePayVC.m // iCemarose // // Created by HouWeiBin on 16/9/2. // Copyright © 2016年 kollway. All rights reserved. // #import "KWMBeforePayVC.h" #import "KWMDiscountVC.h" #import "KWMSelectAddressVC.h" #import "KWMCustomsClearanceVC.h" #import "KWMPaySuccessVC.h" #import "KWMShopCartModel.h" #import "KWMStringUtil.h" #import "KWMCheckoutWebViewVC.h" #import "KWMPaySuccessVC.h" #import "KWMStringUtil.h" #import "UIColor+SAMAdditions.h" #import <RegexKitLite/RegexKitLite.h> #import "KWMHttpUtil.h" #import "KWMValidateUtil.h" #import "KWMPayUtil.h" #import "KWMShopCartData.h" #import "KWMShoppingCart.h" @interface KWMBeforePayVC () @property (nonatomic) BUYCustomer *customer; @property (weak, nonatomic) IBOutlet UIButton *submit; @end @implementation KWMBeforePayVC +(NSString *)kwmTag{ return @"KWMBeforePayVC"; } - (void)setAddress:(BUYAddress *)address{ if (address) { _address = address; } } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self initDefaultData]; } - (void)viewDidLoad { [super viewDidLoad]; self.title = @"提交订单"; self.payType = [self.userDao.currencyCode isEqualToString:@"EUR"]?TypeWebpay:TypeAlipay; self.beforePayData = [KWMBeforePayData new]; //支付成功回调广播接收者 ##通过广播接受appdelegate中的支付回调。 //app active回调广播接受者 ##判断订单支付状态. NSNotificationCenter *notifi = [NSNotificationCenter defaultCenter]; [notifi addObserver:self selector:@selector(paySuccess) name:KWMPaySuccess object:nil]; [notifi addObserver:self selector:@selector(requestOrderPayResult) name:UIApplicationDidBecomeActiveNotification object:nil]; } -(void)dealloc{ //注销广播接收者 NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter removeObserver:self name:KWMPaySuccess object:nil]; [notificationCenter removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; } -(void)setPayType:(KWMPayType)payType{ _payType = payType; //web支付,隐藏选择支付栏 if(payType == TypeWebpay){ self.heightPayType.constant = 0; self.vPayType.hidden = YES; }else{ self.lbPayType.text = [KWMPayUtil payTypeString:payType]; } } -(void)initDefaultData{ if (!_address) { [self initDefaultAddress]; } if (!self.checkout){ [self initCheckOut]; } } - (void)kwm_setAddress:(BUYAddress *)address { if (!address) { self.checkout.billingAddress = nil; self.checkout.shippingAddress = nil; [self initData]; return; } if (!self.checkout) { self.address = address; // viewWillAppear中已经调用了 initCheckOut // [self initCheckOut]; return; } if(address.identifier.integerValue != self.checkout.billingAddress.identifier.integerValue){ if(address!=nil && [KWMStringUtil isEmpty:self.address.firstName]){ self.address.firstName = @""; } self.checkout.billingAddress = address; self.checkout.shippingAddress = address; [self showLoading]; __weak typeof(self) this = self; [self.client updateCheckout:self.checkout completion:^(NSDictionary *dictionary, BUYCheckout *checkout, NSError *error) { [this hideLoading]; if (error == nil && checkout) { this.address = address; this.checkout = checkout; [this showToast:@"更新地址成功"]; [this flushCheckout:dictionary]; // [this initData]; // [this.userDao saveCheckoutCache:checkout.JSONDictionary]; } else { [this showError:error]; // [self showToast:@"更新地址失败"]; NSLog(@"Error applying checkout: %@", error); } }]; } } //因为没有地址后进入的地址页面 -(void)kwm_getAddress:(BUYAddress *)address{ self.address = address; } //创建订单后进入的地址页面 -(void)kwm_selectAddress:(BUYCheckout *)checkout{ self.checkout = checkout; self.checkout.shippingRate = nil; self.checkout.shippingRateId = nil; [self initData]; } -(void)kwm_selectShippingRate:(BUYCheckout *)checkout{ self.checkout = checkout; [self initData]; } - (void)kwm_addedDiscount:(BUYCheckout *)checkout{ self.checkout = checkout; [self initData]; } - (void)kwm_addedGiftCard:(BUYCheckout *)checkout{ self.checkout = checkout; [self initData]; } - (void)kwm_removedGiftCard:(BUYCheckout *)checkout{ self.checkout = checkout; [self initData]; } -(void)kwm_onSelectPayType:(KWMPayType)payType{ self.payType = payType; } - (void)initData{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } //地址 if(self.checkout.billingAddress){ BUYAddress *address = self.checkout.billingAddress; self.vAddressHeight.constant = 90; self.vHasAddress.hidden = NO; self.lbNoAddress.hidden = YES; _lbName.text = address.lastName; _lbPhone.text = address.phone; if(address.province){ //省份有可能为空 //城市 省份 _lbAddress.text = [NSString stringWithFormat:@"%@, %@, %@",address.city,address.province,address.country]; }else{ //具体地址 补充 _lbAddress.text = [NSString stringWithFormat:@"%@, %@",address.city,address.country]; } _lbAddressDetail.text = [NSString stringWithFormat:@"%@ %@",address.address1,address.address2 == nil?@"":address.address2]; self.lbShippingRate.textColor = [UIColor sam_colorWithHex:@"393939"]; self.lbShippingRate.text = @"请选择配送方式"; }else{ self.vAddressHeight.constant = 37; self.vHasAddress.hidden = YES; self.lbNoAddress.hidden = NO; self.lbShippingRate.textColor = [UIColor grayColor]; self.lbShippingRate.text = @"请先选择地址"; } //优惠码 if(self.checkout.discount!=nil){ self.lbDiscount.text = self.checkout.discount.code; }else{ self.lbDiscount.text = @"请输入优惠码"; } //礼品卡 if(self.checkout.giftCardsArray!=nil && self.checkout.giftCardsArray.count>0){ BUYGiftCard *giftCard = [self.checkout.giftCardsArray objectAtIndex:0]; self.lbGiftCard.text = [NSString stringWithFormat:@"******%@",giftCard.lastCharacters]; }else{ self.lbGiftCard.text = @"请输入礼品卡"; } //配送方式 if(self.checkout.shippingRate!=nil){ self.lbShippingRate.text = self.checkout.shippingRate.title; }else{ self.lbShippingRate.text = @"请选择配送方式"; } //总价 if(self.checkout!=nil){ // self.lbTotalPrice.text = [NSString stringWithFormat:@"¥%@",[KWMStringUtil getEUR2CNYstring:self.checkout.totalPrice]]; self.lbTotalPrice.text = self.checkout.totalPrice.priceValueFormatted; } } - (void)initDefaultAddress{ NSDictionary *customerDict = [[NSUserDefaults standardUserDefaults] objectForKey:@"customer"]; _customer = [[BUYCustomer alloc] initWithModelManager:self.client.modelManager JSONDictionary:customerDict]; if (_customer) { NSDictionary *defaultAddress = [customerDict objectForKey:@"default_address"]; if (defaultAddress) { _address = [[BUYAddress alloc] initWithModelManager:self.client.modelManager JSONDictionary:defaultAddress]; } } if(_address){ self.vAddressHeight.constant = 90; self.vHasAddress.hidden = NO; self.lbNoAddress.hidden = YES; _lbName.text = _address.lastName; _lbPhone.text = _address.phone; if(_address.province != nil){ //城市 省份 _lbAddress.text = [NSString stringWithFormat:@"%@, %@",_address.city,_address.province]; }else{ //具体地址 补充 _lbAddress.text = _address.city; } _lbAddressDetail.text = [NSString stringWithFormat:@"%@ %@",_address.address1,_address.address2 == nil?@"":_address.address2]; self.lbShippingRate.textColor = [UIColor sam_colorWithHex:@"393939"]; self.lbShippingRate.text = @"请选择配送方式"; }else{ self.vAddressHeight.constant = 37; self.vHasAddress.hidden = YES; self.lbNoAddress.hidden = NO; self.lbShippingRate.textColor = [UIColor grayColor]; self.lbShippingRate.text = @"请先选择地址"; } } //初始化订单 -(void)initBuyCart{ if(self.fastPayCart!=nil){ self.cart = self.fastPayCart; return; } if(self.shopcartArray == nil || self.shopcartArray.count == 0){ [self showToast:@"购物车还没有商品,不能下单哦~"]; return; } self.cart = [self.client.modelManager insertCartWithJSONDictionary:nil]; //将商品加入 for (KWMShopCartModel *shopcartModel in self.shopcartArray) { if(shopcartModel.shopCartDict == nil){ return; } BUYProduct *product = [self.client.modelManager insertProductWithJSONDictionary:shopcartModel.shopCartDict]; if(product == nil || product.identifier == nil){ return; } //将商品加入buycart中,每个商品就是一个商品规格model if(product.variantsArray!=nil && product.variantsArray.count>0){ for(BUYProductVariant *mVariant in product.variantsArray){ if([mVariant.title isEqualToString:shopcartModel.size]){ [self.cart setVariant:mVariant withTotalQuantity:shopcartModel.quantity]; break; } } } } } //初始化订单 -(void)initCheckOut{ // 直接使用session cart所以不需要init了之后可以做代码清除 // [self initBuyCart]; //如果已登录 // if(self.cart && self.customer){ if(self.customer){ // BUYCheckout *checkout = nil; // //如果self.checkout1=nil,则为缓存订单,反正则为新建订单 // NSDictionary *checkoutCache = [self.userDao checkOutCache]; // // 这个if可能不需要了 下面下直接对session进行修改就可以 // if(checkoutCache){ // // update server // checkout = [[BUYCheckout alloc] initWithModelManager:self.client.modelManager JSONDictionary:checkoutCache]; // [checkout updateWithCart:self.cart]; // }else{ // // init checkout 这里应该也没用了 因为self.cart不存在 // checkout = [[BUYCheckout alloc] initWithModelManager:self.client.modelManager cart:self.cart]; // } // NSDictionary *checkoutCache = [self.userDao checkOutCache]; BUYCheckout *checkout = nil; // if (!checkoutCache || self.cartCookie) { checkout = [[BUYCheckout alloc] initWithModelManager:self.client.modelManager JSONDictionary:nil]; // } // if(self.address){ if([self checkAddress:self.address]){ [self jumpToSelectAddress]; return; } if([KWMStringUtil isEmpty:self.address.firstName]){ self.address.firstName = @""; } if([KWMStringUtil isEmpty:self.address.provinceCode]){ self.address.provinceCode = @"0"; } checkout.shippingAddress = self.address; checkout.billingAddress = self.address; // } checkout.email = self.customer.email; checkout.customerId = self.customer.identifier; // self.client.urlScheme = @"CemaroseApp://"; // 走session的情况下应该不存在update 只是update cart自动会update到checkout // if(checkoutCache){ // 更新订单 // [self requestUpdateCheckout:checkout isCacheCheckout:YES]; // }else{ // 申请将session cart转成checkout [self requestCreateCheckout:checkout]; // // } } } - (void) jumpToSelectAddress { KWMSelectAddressVC *addressVC = (KWMSelectAddressVC *)[KWMBaseVC findControllerBy:[KWMSelectAddressVC kwmTag] fromStoryboard:@"ShopCart"]; // addressVC.checkout = checkout; addressVC.delegate = self; [self.navigationController pushViewController:addressVC animated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } //选择地址页面 -(void)onClickAddress:(id)sender{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } KWMSelectAddressVC *addressVC = (KWMSelectAddressVC *)[KWMBaseVC findControllerBy:[KWMSelectAddressVC kwmTag] fromStoryboard:@"ShopCart"]; addressVC.checkout = self.checkout; addressVC.delegate = self; [self.navigationController pushViewController:addressVC animated:YES]; } //支付方式页面 -(void)onClickPayType:(id)sender{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } KWMPayTypeVC *typeVC = (KWMPayTypeVC *)[KWMBaseVC findControllerBy:[KWMPayTypeVC kwmTag] fromStoryboard:@"ShopCart"]; typeVC.delegate = self; [self.navigationController pushViewController:typeVC animated:YES]; } //优惠码页面 -(void)onClickDiscount:(id)sender{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } KWMDiscountVC *discountVC = (KWMDiscountVC *)[KWMBaseVC findControllerBy:[KWMDiscountVC kwmTag] fromStoryboard:@"ShopCart"]; discountVC.checkout = self.checkout; discountVC.delegate = self; [self.navigationController pushViewController:discountVC animated:YES]; } //礼品卡页面 -(void)onClickGiftCard:(id)sender{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } KWMGiftCardVC *giftCardVC = (KWMGiftCardVC *)[KWMBaseVC findControllerBy:[KWMGiftCardVC kwmTag] fromStoryboard:@"ShopCart"]; giftCardVC.delegate = self; giftCardVC.checkout = self.checkout; [self.navigationController pushViewController:giftCardVC animated:YES]; } //清关信息填写页面 -(void)onClickCustomsClearance:(id)sender{ } //选择配送方式页面 -(void)onClickShipping:(id)sender{ if(self.checkout == nil){ [self showToast:@"未成功创建订单"]; return; } if(self.checkout.billingAddress == nil){ [self showToast:@"请先选择地址"]; return; } KWMShippingVC *shippingVC = (KWMShippingVC *)[KWMBaseVC findControllerBy:[KWMShippingVC kwmTag] fromStoryboard:@"ShopCart"]; shippingVC.delegate = self; shippingVC.checkout = self.checkout; [self.navigationController pushViewController:shippingVC animated:YES]; } -(void)onClickPay:(id)sender{ [self startCheckout]; } -(void)startCheckout{ if(self.checkout == nil){ [self showToast:@"未成功初始化订单"]; return; } if(self.checkout.shippingAddress == nil){ [self showToast:@"请先选择地址"]; return; } if(self.payType == TypeNone){ [self showToast:@"请选择一种付款方式"]; return; } if(self.checkout.shippingRate == nil){ [self showToast:@"请先选择配送方式"]; return; } if(self.checkout.webCheckoutURL == nil){ [self showToast:@"未成功创建支付链接"]; return; } //不同的支付方式 switch (self.payType) { case TypeWebpay: [self goToWebPay]; break; case TypeAlipay: [self requestAliPay]; break; case TypeWechatPay: [self requestWeChatPay]; break; default: break; } } //设置配送费到订单 -(void)setShippingToCheckout:(BUYShippingRate *)shippingRate{ if(self.checkout == nil){ return; } if(shippingRate == nil){ return; } [self.checkout setShippingRate:shippingRate]; [self requestUpdateCheckout:self.checkout isCacheCheckout:NO]; } -(BOOL)checkAddress:(BUYAddress *)address{ NSString *errorMsg = [KWMValidateUtil validateAddress:address]; if (errorMsg) { [self showToast:errorMsg]; } return errorMsg != nil; // if(address == nil){ // [self showToast:@"您的地址尚未有任何地址,请前往选择地址"]; // return YES; // }else if([KWMStringUtil isEmpty:address.firstName] && [KWMStringUtil isEmpty:address.lastName]){ // [self showToast:@"您的地址缺少收件人姓名,请前往完善地址"]; // return YES; // }else if([KWMStringUtil isEmpty:address.city]){ // [self showToast:@"您的地址缺少所在城市,请前往完善地址"]; // return YES; // }else if([KWMStringUtil isEmpty:address.zip]){ // [self showToast:@"您的地址缺少邮政编码,请前往完善地址"]; // return YES; // }else if([KWMStringUtil isEmpty:address.phone]){ // [self showToast:@"您的地址缺少收件人电话号码,请前往完善地址"]; // return YES; // } // return NO; } -(void)requestCreateCheckout:(BUYCheckout *)checkout{ [self showLoading]; //[self showToast:@"创建订单中"]; // __weak KWMBeforePayVC *weakSelf = self; // self.checkoutCreationOperation = [self.client createCheckout:checkout completion:^(NSDictionary *dictionary,BUYCheckout *checkout, NSError *error) { // [self hideLoading]; // [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; // if (error == nil && checkout) { // weakSelf.checkout = checkout; // //[self showToast:@"创建订单成功"]; // [weakSelf initData]; // NSLog(@"saveDict: %@",dictionary); // [weakSelf.userDao saveCheckoutCache:dictionary]; // if(weakSelf.checkout.shippingAddress!=nil){ // [weakSelf requestShippingData]; // }} // else { // [self hideLoading]; // [weakSelf showError:error]; // NSLog(@"Error creating checkout: %@", error); // } // }]; __weak KWMBeforePayVC *this = self; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; if (self.cartCookie) { [manager.requestSerializer setHTTPShouldHandleCookies:NO]; NSString *cookie = [KWMHttpUtil buildRequestCookieString]; if ([cookie isMatchedByRegex:@"cart=.*?;"]) { cookie = [cookie stringByReplacingOccurrencesOfRegex:@"cart=.*?;" withString:[NSString stringWithFormat:@"cart=%@;",self.cartCookie]]; }else{ cookie = [NSString stringWithFormat:@"cart=%@; %@",self.cartCookie,cookie]; } [manager.requestSerializer setValue:cookie forHTTPHeaderField:@"Cookie"]; } [manager setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest * _Nonnull(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLResponse * _Nonnull response, NSURLRequest * _Nonnull request) { if (!response) { return request; } NSString *checkoutId = [request.URL.absoluteString stringByMatching:@"checkouts/(.*?)\\?" capture:1]; checkoutId = checkoutId ? checkoutId : [request.URL.absoluteString stringByMatching:@"checkouts/(.*)$" capture:1]; NSString *URLString = [NSString stringWithFormat:@"https://%@/api/checkouts/%@.json",Shopify_SHOP_DOMAIN,checkoutId]; NSMutableURLRequest *newReq = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URLString]]; [newReq setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [newReq setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSString *token = [NSString stringWithFormat:@"Basic %@",[[this.client.apiKey dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0]]; [newReq setValue:token forHTTPHeaderField:@"Authorization"]; if(this.client.customerToken) { [newReq setValue:this.client.customerToken.accessToken forHTTPHeaderField:@"X-Shopify-Customer-Access-Token"]; } // 如果有checkout说明是新订单 直接更新订单地址就好 如果没有checkout说明是旧订单已经有地址所以无需更新 // 170922 所有订单全部刷新地址 // if (checkout || this.cartCookie) { newReq.HTTPMethod = @"PATCH"; // checkout.shippingAddress.identifier = nil; // checkout.shippingAddress.provinceCode = nil; // checkout.billingAddress = checkout.shippingAddress; [newReq setHTTPBody:[NSJSONSerialization dataWithJSONObject:[checkout jsonDictionaryForCheckout] options:0 error:nil]]; // } return newReq; }]; [manager GET:[NSString stringWithFormat:@"https://%@/checkout",Shopify_SHOP_DOMAIN] parameters:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { [this hideLoading]; BUYCheckout *checkout = [this.client.modelManager insertCheckoutWithJSONDictionary:responseObject[@"checkout"]]; this.checkout = checkout; [self flushCheckout:responseObject[@"checkout"]]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[error userInfo][@"com.alamofire.serialization.response.error.data"] options:NSJSONReadingMutableLeaves error:nil]; if (json[@"errors"][@"checkout"][@"shipping_address"]) { [this showToast:@"地址出现问题请重新选择"]; [this jumpToSelectAddress]; return; } [this hideLoading]; [this showError:error]; }]; } -(void) flushCheckout:(NSDictionary *) dic { [self initData]; [self.userDao saveCheckoutCache:dic]; if (!self.checkout.shippingAddress && self.address) { [self kwm_setAddress:self.address]; }// else if(self.checkout.shippingAddress && !self.checkout.shippingRate) { [self requestShippingData]; //} } -(void)requestShippingData{ if(self.checkout==nil){ return; } [self showLoading]; __weak KWMBeforePayVC *weakSelf = self; [self.client getShippingRatesForCheckoutWithToken:self.checkout.token completion:^(NSArray *shippingRates, BUYStatus status, NSError *error) { [self hideLoading]; //自动设置配送 if (shippingRates && shippingRates.count > 0 && !error) { [weakSelf setShippingToCheckout:shippingRates.firstObject]; }else { [self hideLoading]; [weakSelf showError:error]; NSLog(@"Failed to retrieve shipping rates: %@", error); } [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; }]; } -(void)requestUpdateCheckout:(BUYCheckout *)checkout isCacheCheckout:(BOOL)isCacheCheckout{ [self showLoading]; __weak KWMBeforePayVC *weakSelf = self; [self.client updateCheckout:checkout completion:^(NSDictionary *dictionary, BUYCheckout *checkout, NSError *error) { [self hideLoading]; if (error == nil && checkout) { weakSelf.checkout = checkout; [weakSelf initData]; NSLog(@"saveDict: %@", checkout); [weakSelf.userDao saveCheckoutCache:dictionary]; } else if(isCacheCheckout){//请求失败,并且为缓存订单更新,重新创建订单 weakSelf.checkout = nil; [weakSelf.userDao deleteCheckoutCache]; [weakSelf initDefaultData]; }else{ [self hideLoading]; [weakSelf showError:error]; NSLog(@"Error applying checkout: %@", error); } }]; } -(void)requestOrderPayResult{ //微信支付,用户支付后,当用户没有点击完成按钮,而是直接使用home键,或者点击状态栏左上角返回APP订单页面时,微信的回调不会调用,而很容易出现本地订单结果回调丢失的情况,所以需要再确认一次订单是否完成。 //支付宝暂时没有这种问题。 if(self.beforePayData && ![KWMStringUtil isEmpty:self.beforePayData.outTradeNo] && self.checkout){ NSDictionary *parameters = [KWMPayUtil payResultParameters:self.checkout tradeNo:self.beforePayData.outTradeNo]; self.beforePayData.outTradeNo = @""; __weak KWMBeforePayVC *weakSelf = self; void(^failure)(NSURLSessionDataTask *,NSError *) = ^(NSURLSessionDataTask *task,NSError *error){ //[weakSelf showError:error]; }; void(^success)(NSURLSessionDataTask *,KWMCheckoutPayResult *) = ^(NSURLSessionDataTask *task,KWMCheckoutPayResult *result){ if(!result){ return; } if(!result.code || result.code.integerValue != 1000){ return; } if(result.data){ //KWMOrderPaid *data = (KWMOrderPaid *)result.data; [weakSelf paySuccess]; } }; [self.api appOrderQuery:parameters success:success failure:failure]; } } //支付宝支付 -(void)requestAliPay{ NSDictionary *parameters = [KWMPayUtil aliPayParameters:self.checkout]; __weak KWMBeforePayVC *weakSelf = self; void(^failure)(NSURLSessionDataTask *,NSError *) = ^(NSURLSessionDataTask *task,NSError *error){ [weakSelf hideLoading]; [weakSelf showError:error]; }; void(^success)(NSURLSessionDataTask *,KWMCheckoutPayResult *) = ^(NSURLSessionDataTask *task,KWMCheckoutPayResult *result){ [weakSelf hideLoading]; if(!(result && result.code)){ return; } if(result.code.integerValue != 1000){ NSString *message = [KWMPayUtil payErrorMessage:weakSelf.checkout errorResult:result]; [weakSelf showDialog:message]; return; } NSString *alipayData = (NSString *)result.message; [KWMPayUtil aliPay:alipayData callback:^(NSDictionary *resultDic) { NSLog(@"reslut = %@",resultDic); NSNumber *statue = [resultDic objectForKey:@"resultStatus"]; if (statue.integerValue == 9000) { [weakSelf paySuccess]; } }]; }; [self.api aliPayUnifiedOrder:parameters success:success failure:failure]; [self showLoading]; } //微信支付 -(void)requestWeChatPay{ if (![WXApi isWXAppInstalled]) { NSLog(@"WeChat App is not installed!"); [self showToast:@"您还没有安装微信"]; return; } NSDictionary *parameters = [KWMPayUtil wechatPayParameters:self.checkout]; __weak KWMBeforePayVC *weakSelf = self; void(^failure)(NSURLSessionDataTask *,NSError *) = ^(NSURLSessionDataTask *task,NSError *error){ [weakSelf hideLoading]; [weakSelf showError:error]; }; void(^success)(NSURLSessionDataTask *,KWMCheckoutPayResult *) = ^(NSURLSessionDataTask *task,KWMCheckoutPayResult *result){ [weakSelf hideLoading]; if(!(result && result.code)){ return; } if(result.code.integerValue != 1000){ NSString *message = [KWMPayUtil payErrorMessage:weakSelf.checkout errorResult:result]; [weakSelf showDialog:message]; return; } if(result.data){ KWMWechatPayData *data = (KWMWechatPayData *)result.data; [KWMPayUtil weChatPay:data]; weakSelf.beforePayData.outTradeNo = data.outTradeNo; } }; [self.api wechatPayUnifiedOrder:parameters success:success failure:failure]; [self showLoading]; } -(void)goToWebPay{ KWMCheckoutWebViewVC *checkoutVC = (KWMCheckoutWebViewVC *)[KWMBaseVC findControllerBy:[KWMCheckoutWebViewVC kwmTag] fromStoryboard:@"ShopCart"]; checkoutVC.payURL = self.checkout.webCheckoutURL; [self.navigationController pushViewController:checkoutVC animated:YES]; } -(void)paySuccess{ [self clearCheckout]; KWMPaySuccessVC *successVC = (KWMPaySuccessVC *)[KWMBaseVC findControllerBy:[KWMPaySuccessVC kwmTag] fromStoryboard:@"ShopCart"]; successVC.paidCheckout = self.checkout; [self.navigationController pushViewController:successVC animated:YES]; } -(void) clearCheckout { self.cartCookie = nil; [KWMHttpUtil deleteCookie:@"cart"]; // [[KWMShoppingCart sharedInstance] clearCartWithCallback:^(NSError *error, KWMCartResult *cart) { //// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // [KWMHttpUtil deleteCookie:@"cart"]; //// }); // }]; // [KWMHttpUtil deleteCookie:@"cart"]; // [[KWMShopCartData alloc] removeAllItems]; [self.userDao deleteCheckoutCache]; } @end