Commit 729052aa by lee

同步完结版本

parent f877d8f2
...@@ -84,6 +84,7 @@ ...@@ -84,6 +84,7 @@
80F82E621D704E34008B470B /* KWMBrandCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 80F82E601D704E34008B470B /* KWMBrandCell.xib */; }; 80F82E621D704E34008B470B /* KWMBrandCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 80F82E601D704E34008B470B /* KWMBrandCell.xib */; };
80FBF7E18C063DB9E8DC7502 /* libPods-iCemarose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 450DA8BB947651E9A9B38BEB /* libPods-iCemarose.a */; }; 80FBF7E18C063DB9E8DC7502 /* libPods-iCemarose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 450DA8BB947651E9A9B38BEB /* libPods-iCemarose.a */; };
9B0F56B81ECD3424009FC5FE /* UIViewController+AppearLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0F56B71ECD3424009FC5FE /* UIViewController+AppearLog.m */; }; 9B0F56B81ECD3424009FC5FE /* UIViewController+AppearLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0F56B71ECD3424009FC5FE /* UIViewController+AppearLog.m */; };
9B166F511ED6DBCF003E9F03 /* KWMHttpUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B166F501ED6DBCF003E9F03 /* KWMHttpUtil.m */; };
9BE61CFB1ECD56E70031D21E /* KWMDictioaryResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61CFA1ECD56E70031D21E /* KWMDictioaryResult.m */; }; 9BE61CFB1ECD56E70031D21E /* KWMDictioaryResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61CFA1ECD56E70031D21E /* KWMDictioaryResult.m */; };
9BE61CFE1ECD66BC0031D21E /* KWMShoppingCart.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61CFD1ECD66BC0031D21E /* KWMShoppingCart.m */; }; 9BE61CFE1ECD66BC0031D21E /* KWMShoppingCart.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61CFD1ECD66BC0031D21E /* KWMShoppingCart.m */; };
9BE61D011ECD71610031D21E /* KWMCartResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61D001ECD71610031D21E /* KWMCartResult.m */; }; 9BE61D011ECD71610031D21E /* KWMCartResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE61D001ECD71610031D21E /* KWMCartResult.m */; };
...@@ -421,6 +422,8 @@ ...@@ -421,6 +422,8 @@
80F82E601D704E34008B470B /* KWMBrandCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KWMBrandCell.xib; sourceTree = "<group>"; }; 80F82E601D704E34008B470B /* KWMBrandCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KWMBrandCell.xib; sourceTree = "<group>"; };
9B0F56B61ECD3424009FC5FE /* UIViewController+AppearLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+AppearLog.h"; sourceTree = "<group>"; }; 9B0F56B61ECD3424009FC5FE /* UIViewController+AppearLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+AppearLog.h"; sourceTree = "<group>"; };
9B0F56B71ECD3424009FC5FE /* UIViewController+AppearLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+AppearLog.m"; sourceTree = "<group>"; }; 9B0F56B71ECD3424009FC5FE /* UIViewController+AppearLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+AppearLog.m"; sourceTree = "<group>"; };
9B166F4F1ED6DBCF003E9F03 /* KWMHttpUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMHttpUtil.h; sourceTree = "<group>"; };
9B166F501ED6DBCF003E9F03 /* KWMHttpUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMHttpUtil.m; sourceTree = "<group>"; };
9B58353B797587723B0E7515 /* Pods-iCemarose.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iCemarose.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iCemarose/Pods-iCemarose.debug.xcconfig"; sourceTree = "<group>"; }; 9B58353B797587723B0E7515 /* Pods-iCemarose.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iCemarose.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iCemarose/Pods-iCemarose.debug.xcconfig"; sourceTree = "<group>"; };
9BE61CF91ECD56E70031D21E /* KWMDictionaryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMDictionaryResult.h; sourceTree = "<group>"; }; 9BE61CF91ECD56E70031D21E /* KWMDictionaryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWMDictionaryResult.h; sourceTree = "<group>"; };
9BE61CFA1ECD56E70031D21E /* KWMDictioaryResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMDictioaryResult.m; sourceTree = "<group>"; }; 9BE61CFA1ECD56E70031D21E /* KWMDictioaryResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWMDictioaryResult.m; sourceTree = "<group>"; };
...@@ -1135,6 +1138,8 @@ ...@@ -1135,6 +1138,8 @@
C034E6D51D6AEF1B006EE129 /* KWMTextFieldUtil.m */, C034E6D51D6AEF1B006EE129 /* KWMTextFieldUtil.m */,
C001BA5A1EB2ED5500B366A8 /* KWMImageBlurUtil.h */, C001BA5A1EB2ED5500B366A8 /* KWMImageBlurUtil.h */,
C001BA5B1EB2ED5500B366A8 /* KWMImageBlurUtil.m */, C001BA5B1EB2ED5500B366A8 /* KWMImageBlurUtil.m */,
9B166F4F1ED6DBCF003E9F03 /* KWMHttpUtil.h */,
9B166F501ED6DBCF003E9F03 /* KWMHttpUtil.m */,
); );
path = Util; path = Util;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -2213,6 +2218,7 @@ ...@@ -2213,6 +2218,7 @@
80E81E691D87F96E00FCC0B1 /* KWMMineTitleView.m in Sources */, 80E81E691D87F96E00FCC0B1 /* KWMMineTitleView.m in Sources */,
C0F5868A1E24F820001248E2 /* KWMSelectedGoodsVC.m in Sources */, C0F5868A1E24F820001248E2 /* KWMSelectedGoodsVC.m in Sources */,
C034E8661D6B10A0006EE129 /* PhotoItemView.m in Sources */, C034E8661D6B10A0006EE129 /* PhotoItemView.m in Sources */,
9B166F511ED6DBCF003E9F03 /* KWMHttpUtil.m in Sources */,
C034E6D91D6AEF1B006EE129 /* KWMStringUtil.m in Sources */, C034E6D91D6AEF1B006EE129 /* KWMStringUtil.m in Sources */,
C02C7D9B1E642DED008DC29C /* KWMWeChatUtil.m in Sources */, C02C7D9B1E642DED008DC29C /* KWMWeChatUtil.m in Sources */,
C034E6F11D6AF13A006EE129 /* KWMBasePageVC.m in Sources */, C034E6F11D6AF13A006EE129 /* KWMBasePageVC.m in Sources */,
......
...@@ -82,6 +82,18 @@ ...@@ -82,6 +82,18 @@
* @return <#return value description#> * @return <#return value description#>
*/ */
- (NSURLSessionDataTask *) addProductWithVariantId:(NSNumber *) variantId quantity:(NSInteger) quantity success:(void(^)(NSURLSessionDataTask *task,KWMRequestResult *result)) success failure:(void(^)(NSURLSessionDataTask *task,NSError *error)) failure; - (NSURLSessionDataTask *) addProductWithVariantId:(NSNumber *) variantId quantity:(NSInteger) quantity success:(void(^)(NSURLSessionDataTask *task,KWMRequestResult *result)) success failure:(void(^)(NSURLSessionDataTask *task,NSError *error)) failure;
/**
* 立即购买使用
*
* @param variantId <#variantId description#>
* @param quantity <#quantity description#>
* @param success <#success description#>
* @param failure <#failure description#>
*
* @return <#return value description#>
*/
- (NSURLSessionDataTask *) tmpCartWithVariantId:(NSNumber *) variantId quantity:(NSInteger) quantity success:(void(^)(NSURLSessionDataTask *task,NSString *cartCookie)) success failure:(void(^)(NSURLSessionDataTask *task,NSError *error)) failure;
/** /**
* *
* *
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#import <RegexKitLite/RegexKitLite.h> #import <RegexKitLite/RegexKitLite.h>
#import <SAMKeychain/SAMKeychain.h> #import <SAMKeychain/SAMKeychain.h>
#import "KWMUserModel.h" #import "KWMUserModel.h"
#import "KWMHttpUtil.h"
...@@ -433,6 +434,23 @@ static NSString *const passwordTest = @"9e84aae218c57cdf0762763c4cf5a651"; ...@@ -433,6 +434,23 @@ static NSString *const passwordTest = @"9e84aae218c57cdf0762763c4cf5a651";
return [self startSessionTask:KWMHTTPMethodPOST apiPath:apiPath parameters:params result:[KWMDictionaryResult class] model:nil success:success failure:failure]; return [self startSessionTask:KWMHTTPMethodPOST apiPath:apiPath parameters:params result:[KWMDictionaryResult class] model:nil success:success failure:failure];
} }
- (NSURLSessionDataTask *)tmpCartWithVariantId:(NSNumber *)variantId quantity:(NSInteger)quantity success:(void (^)(NSURLSessionDataTask *, NSString *))success failure:(void (^)(NSURLSessionDataTask *, NSError *))failure {
NSString *apiPath = [NSString stringWithFormat:@"https://%@/cart/add.js",Shopify_SHOP_DOMAIN];
id params = @{
@"id":variantId,
@"quantity":@(quantity),
};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager.requestSerializer setHTTPShouldHandleCookies:NO];
NSString *cookie = [[KWMHttpUtil buildRequestCookieString] stringByReplacingOccurrencesOfRegex:@"cart=.*?; ?" withString:@""];
[manager.requestSerializer setValue:cookie forHTTPHeaderField:@"Cookie"];
return [manager POST:apiPath parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
NSString *cartCookie = [response.allHeaderFields[@"Set-Cookie"] stringByMatching:@"cart=(.*?);" capture:1];
success(task,cartCookie);
} failure:failure];
}
-(NSURLSessionDataTask *)getCartSuccess:(void (^)(NSURLSessionDataTask *, KWMCartResult *))success failure:(void (^)(NSURLSessionDataTask *, NSError *))failure { -(NSURLSessionDataTask *)getCartSuccess:(void (^)(NSURLSessionDataTask *, KWMCartResult *))success failure:(void (^)(NSURLSessionDataTask *, NSError *))failure {
NSString *apiPath = [NSString stringWithFormat:@"https://%@/cart.js",Shopify_SHOP_DOMAIN]; NSString *apiPath = [NSString stringWithFormat:@"https://%@/cart.js",Shopify_SHOP_DOMAIN];
return [self startSessionTask:KWMHTTPMethodGET apiPath:apiPath parameters:nil result:[KWMCartResult class] model:nil success:success failure:failure]; return [self startSessionTask:KWMHTTPMethodGET apiPath:apiPath parameters:nil result:[KWMCartResult class] model:nil success:success failure:failure];
......
...@@ -216,6 +216,7 @@ ...@@ -216,6 +216,7 @@
- (void)kwm_addShopWithVariantId:(NSNumber *)identifier quantity:(NSInteger)quantity buyNow:(BOOL)buyNow callback:(void (^)(BOOL))callback { - (void)kwm_addShopWithVariantId:(NSNumber *)identifier quantity:(NSInteger)quantity buyNow:(BOOL)buyNow callback:(void (^)(BOOL))callback {
__weak KWMProductDetailVC *this = self; __weak KWMProductDetailVC *this = self;
if (!buyNow) {
[[KWMShoppingCart sharedInstance] increaseProductWithVariantId:identifier quantity:quantity callback:^(NSError *error, KWMCartResult *cart) { [[KWMShoppingCart sharedInstance] increaseProductWithVariantId:identifier quantity:quantity callback:^(NSError *error, KWMCartResult *cart) {
if (!error) { if (!error) {
[this showToast:@"添加成功"]; [this showToast:@"添加成功"];
...@@ -226,6 +227,27 @@ ...@@ -226,6 +227,27 @@
callback(NO); callback(NO);
} }
}]; }];
return;
}
callback(YES);
KWMUserModel *useModel = [KWMUserModel shareUser];
if (!useModel.status) {
//登录
KWMLoginVC *loginVc = (KWMLoginVC *)[KWMBaseVC findControllerBy:[KWMLoginVC kwmTag] fromStoryboard:@"Login"];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginVc];
[self presentViewController:nav animated:YES completion:nil];
return;
}
[self showLoading];
[self.api tmpCartWithVariantId:identifier quantity:quantity success:^(NSURLSessionDataTask *task, NSString *cartCookie) {
[this hideLoading];
KWMBeforePayVC *beforePayVC = (KWMBeforePayVC *)[KWMBaseVC findControllerBy:[KWMBeforePayVC kwmTag] fromStoryboard:@"ShopCart"];
beforePayVC.cartCookie = cartCookie;
[this.navigationController pushViewController:beforePayVC animated:YES];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
[this showError:error];
}];
} }
//KWMSelectSizeVCDelegate //KWMSelectSizeVCDelegate
......
...@@ -56,6 +56,8 @@ ...@@ -56,6 +56,8 @@
//快速购买购物车 //快速购买购物车
@property (nonatomic) BUYCart *fastPayCart; @property (nonatomic) BUYCart *fastPayCart;
@property (strong, nonatomic) NSString *cartCookie;
- (IBAction)onClickPayType:(id)sender; - (IBAction)onClickPayType:(id)sender;
- (IBAction)onClickAddress:(id)sender; - (IBAction)onClickAddress:(id)sender;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#import "KWMStringUtil.h" #import "KWMStringUtil.h"
#import "UIColor+SAMAdditions.h" #import "UIColor+SAMAdditions.h"
#import <RegexKitLite/RegexKitLite.h> #import <RegexKitLite/RegexKitLite.h>
#import "KWMHttpUtil.h"
@interface KWMBeforePayVC () @interface KWMBeforePayVC ()
...@@ -233,7 +234,7 @@ ...@@ -233,7 +234,7 @@
// } // }
NSDictionary *checkoutCache = [self.userDao checkOutCache]; NSDictionary *checkoutCache = [self.userDao checkOutCache];
BUYCheckout *checkout = nil; BUYCheckout *checkout = nil;
if (!checkoutCache) { if (!checkoutCache || self.cartCookie) {
checkout = [[BUYCheckout alloc] initWithModelManager:self.client.modelManager JSONDictionary:nil]; checkout = [[BUYCheckout alloc] initWithModelManager:self.client.modelManager JSONDictionary:nil];
} }
if(self.address){ if(self.address){
...@@ -420,6 +421,11 @@ ...@@ -420,6 +421,11 @@
__weak KWMBeforePayVC *this = self; __weak KWMBeforePayVC *this = self;
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
if (self.cartCookie) {
[manager.requestSerializer setHTTPShouldHandleCookies:NO];
NSString *cookie = [[KWMHttpUtil buildRequestCookieString] stringByReplacingOccurrencesOfRegex:@"cart=.*?;" withString:[NSString stringWithFormat:@"cart=%@;",self.cartCookie]];
[manager.requestSerializer setValue:cookie forHTTPHeaderField:@"Cookie"];
}
[manager setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest * _Nonnull(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLResponse * _Nonnull response, NSURLRequest * _Nonnull request) { [manager setTaskWillPerformHTTPRedirectionBlock:^NSURLRequest * _Nonnull(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLResponse * _Nonnull response, NSURLRequest * _Nonnull request) {
if (!response) { if (!response) {
return request; return request;
...@@ -436,7 +442,7 @@ ...@@ -436,7 +442,7 @@
[newReq setValue:this.client.customerToken.accessToken forHTTPHeaderField:@"X-Shopify-Customer-Access-Token"]; [newReq setValue:this.client.customerToken.accessToken forHTTPHeaderField:@"X-Shopify-Customer-Access-Token"];
} }
// 如果有checkout说明是新订单 直接更新订单地址就好 如果没有checkout说明是旧订单已经有地址所以无需更新 // 如果有checkout说明是新订单 直接更新订单地址就好 如果没有checkout说明是旧订单已经有地址所以无需更新
if (checkout) { if (checkout || this.cartCookie) {
newReq.HTTPMethod = @"PATCH"; newReq.HTTPMethod = @"PATCH";
[newReq setHTTPBody:[NSJSONSerialization dataWithJSONObject:[checkout jsonDictionaryForCheckout] options:0 error:nil]]; [newReq setHTTPBody:[NSJSONSerialization dataWithJSONObject:[checkout jsonDictionaryForCheckout] options:0 error:nil]];
} }
......
//
// KWMHttpUtil.h
// iCemarose
//
// Created by lee on 2017/5/25.
// Copyright © 2017年 kollway. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface KWMHttpUtil : NSObject
+ (NSString *) buildRequestCookieString;
@end
//
// KWMHttpUtil.m
// iCemarose
//
// Created by lee on 2017/5/25.
// Copyright © 2017年 kollway. All rights reserved.
//
#import "KWMHttpUtil.h"
@implementation KWMHttpUtil
+ (NSString *)buildRequestCookieString {
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSMutableString *cookieString = [[NSMutableString alloc] init];
for (NSHTTPCookie *cookie in cookies) {
[cookieString appendFormat:@"%@=%@; ",cookie.name,cookie.value];
}
return cookieString;
}
@end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment