Skip to content

Commit 314c27b

Browse files
committed
微信支付
1 parent 03bbe06 commit 314c27b

17 files changed

+369
-88
lines changed

Coding_iOS.xcodeproj/project.pbxproj

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,6 +1226,13 @@
12261226
B1BCB8881FCD006C0098B87B /* icon_file_ai_big@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB87B1FCD006C0098B87B /* icon_file_ai_big@2x.png */; };
12271227
B1BCB8891FCD006C0098B87B /* icon_file_ppt_big@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB87C1FCD006C0098B87B /* icon_file_ppt_big@2x.png */; };
12281228
B1BCB88B1FCD0A6D0098B87B /* icon_file_xls_big@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB88A1FCD0A6D0098B87B /* icon_file_xls_big@2x.png */; };
1229+
B1BCB88F1FCE61D60098B87B /* EAPayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1BCB88D1FCE61D60098B87B /* EAPayViewController.m */; };
1230+
B1BCB8901FCE61D60098B87B /* EAPayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB88E1FCE61D60098B87B /* EAPayViewController.xib */; };
1231+
B1BCB8931FCE662A0098B87B /* NSLayoutConstraintLine.m in Sources */ = {isa = PBXBuildFile; fileRef = B1BCB8911FCE662A0098B87B /* NSLayoutConstraintLine.m */; };
1232+
B1BCB8991FCE93830098B87B /* alipay@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB8951FCE93830098B87B /* alipay@2x.png */; };
1233+
B1BCB89A1FCE93830098B87B /* alipay@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB8961FCE93830098B87B /* alipay@3x.png */; };
1234+
B1BCB89B1FCE93830098B87B /* wechat@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB8971FCE93830098B87B /* wechat@2x.png */; };
1235+
B1BCB89C1FCE93830098B87B /* wechat@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1BCB8981FCE93830098B87B /* wechat@3x.png */; };
12291236
B1C871131EADAEE1003DACF0 /* loading_monkey@2x.gif in Resources */ = {isa = PBXBuildFile; fileRef = B1C871121EADAEE1003DACF0 /* loading_monkey@2x.gif */; };
12301237
B1C871181EADF0B1003DACF0 /* messageAT@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1C871141EADF0B1003DACF0 /* messageAT@3x.png */; };
12311238
B1C871191EADF0B1003DACF0 /* messageComment@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B1C871151EADF0B1003DACF0 /* messageComment@3x.png */; };
@@ -3209,6 +3216,15 @@
32093216
B1BCB87B1FCD006C0098B87B /* icon_file_ai_big@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_file_ai_big@2x.png"; sourceTree = "<group>"; };
32103217
B1BCB87C1FCD006C0098B87B /* icon_file_ppt_big@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_file_ppt_big@2x.png"; sourceTree = "<group>"; };
32113218
B1BCB88A1FCD0A6D0098B87B /* icon_file_xls_big@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_file_xls_big@2x.png"; sourceTree = "<group>"; };
3219+
B1BCB88C1FCE61D60098B87B /* EAPayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EAPayViewController.h; sourceTree = "<group>"; };
3220+
B1BCB88D1FCE61D60098B87B /* EAPayViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EAPayViewController.m; sourceTree = "<group>"; };
3221+
B1BCB88E1FCE61D60098B87B /* EAPayViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EAPayViewController.xib; sourceTree = "<group>"; };
3222+
B1BCB8911FCE662A0098B87B /* NSLayoutConstraintLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSLayoutConstraintLine.m; sourceTree = "<group>"; };
3223+
B1BCB8921FCE662A0098B87B /* NSLayoutConstraintLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSLayoutConstraintLine.h; sourceTree = "<group>"; };
3224+
B1BCB8951FCE93830098B87B /* alipay@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "alipay@2x.png"; sourceTree = "<group>"; };
3225+
B1BCB8961FCE93830098B87B /* alipay@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "alipay@3x.png"; sourceTree = "<group>"; };
3226+
B1BCB8971FCE93830098B87B /* wechat@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wechat@2x.png"; sourceTree = "<group>"; };
3227+
B1BCB8981FCE93830098B87B /* wechat@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wechat@3x.png"; sourceTree = "<group>"; };
32123228
B1C871121EADAEE1003DACF0 /* loading_monkey@2x.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "loading_monkey@2x.gif"; sourceTree = "<group>"; };
32133229
B1C871141EADF0B1003DACF0 /* messageAT@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "messageAT@3x.png"; sourceTree = "<group>"; };
32143230
B1C871151EADF0B1003DACF0 /* messageComment@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "messageComment@3x.png"; sourceTree = "<group>"; };
@@ -5501,6 +5517,9 @@
55015517
4E6CBE501D8E962300644086 /* TopicAnswerDetailViewController.m */,
55025518
4E9E3B731DCC2DB10005FD79 /* HtmlMediaViewController.h */,
55035519
4E9E3B741DCC2DB10005FD79 /* HtmlMediaViewController.m */,
5520+
B1BCB88C1FCE61D60098B87B /* EAPayViewController.h */,
5521+
B1BCB88D1FCE61D60098B87B /* EAPayViewController.m */,
5522+
B1BCB88E1FCE61D60098B87B /* EAPayViewController.xib */,
55045523
);
55055524
path = Controllers;
55065525
sourceTree = "<group>";
@@ -5552,6 +5571,7 @@
55525571
8EA6CF5D19E240C40076D59C /* Images */ = {
55535572
isa = PBXGroup;
55545573
children = (
5574+
B1BCB8941FCE93830098B87B /* pay */,
55555575
B14689A31EE100B200B01371 /* vip */,
55565576
4EAAD0481E542B2D008AA957 /* icon_code */,
55575577
4EAAD0181E540551008AA957 /* mrpr_icon_status */,
@@ -6187,6 +6207,8 @@
61876207
09A058941E0AAA2F00C1CA3F /* TaskSelectionView.m */,
61886208
09A058961E0AAA5300C1CA3F /* ScreenView.h */,
61896209
09A058971E0AAA5300C1CA3F /* ScreenView.m */,
6210+
B1BCB8921FCE662A0098B87B /* NSLayoutConstraintLine.h */,
6211+
B1BCB8911FCE662A0098B87B /* NSLayoutConstraintLine.m */,
61906212
);
61916213
path = Views;
61926214
sourceTree = "<group>";
@@ -6525,6 +6547,17 @@
65256547
path = AlipaySDK;
65266548
sourceTree = "<group>";
65276549
};
6550+
B1BCB8941FCE93830098B87B /* pay */ = {
6551+
isa = PBXGroup;
6552+
children = (
6553+
B1BCB8951FCE93830098B87B /* alipay@2x.png */,
6554+
B1BCB8961FCE93830098B87B /* alipay@3x.png */,
6555+
B1BCB8971FCE93830098B87B /* wechat@2x.png */,
6556+
B1BCB8981FCE93830098B87B /* wechat@3x.png */,
6557+
);
6558+
path = pay;
6559+
sourceTree = "<group>";
6560+
};
65286561
B94C1B661AC945C60000C271 /* NewProject */ = {
65296562
isa = PBXGroup;
65306563
children = (
@@ -6950,6 +6983,7 @@
69506983
4E6383AD1B3262D300D98648 /* taskPriority3_small@2x.png in Resources */,
69516984
8E97CEA91A0C7E26006F9AD7 /* coding_emoji_18@2x.png in Resources */,
69526985
4ED4B4861D82646100EED8C6 /* user_info_about@3x.png in Resources */,
6986+
B1BCB8901FCE61D60098B87B /* EAPayViewController.xib in Resources */,
69536987
B1C871801EB18599003DACF0 /* calendar_0xA1CF64@3x.png in Resources */,
69546988
4ED4B4871D82646100EED8C6 /* user_info_file@2x.png in Resources */,
69556989
B19D4EF31F710EF900C598F3 /* ShopSwitchCell.xib in Resources */,
@@ -7097,6 +7131,7 @@
70977131
4E9423E71E69401B0095F1CD /* blankpage_image_Project@3x.png in Resources */,
70987132
8E97CE641A0A3424006F9AD7 /* keyboard_emotion@2x.png in Resources */,
70997133
4EAE06A81B7B1AE100179F4B /* button_file_history@2x.png in Resources */,
7134+
B1BCB89B1FCE93830098B87B /* wechat@2x.png in Resources */,
71007135
4E0849851A918A7F00BD27F6 /* coding_emoji_43@2x.png in Resources */,
71017136
4E5D130E1C0ECB3400985AEB /* tweet_btn_liked@3x.png in Resources */,
71027137
4E96E7DE1A1B537E0037C098 /* icon_file_music@2x.png in Resources */,
@@ -7126,6 +7161,7 @@
71267161
4EF17ED81B3C3112003CDD2D /* intro_icon_4@3x.png in Resources */,
71277162
4EAE06921B7880BA00179F4B /* me_info_arrow_left@2x.png in Resources */,
71287163
4E5F39071ACBFDCD0010515D /* keyboard_photo@2x.png in Resources */,
7164+
B1BCB89C1FCE93830098B87B /* wechat@3x.png in Resources */,
71297165
4E0022A91B7362EF005308DE /* intro_page0_ip6@2x.png in Resources */,
71307166
4E76D4DE1A5A7B4A0094A35E /* text_clear_btn@2x.png in Resources */,
71317167
D0C447A91C02A3C700DC1C4B /* task_normal@2x.png in Resources */,
@@ -7383,6 +7419,7 @@
73837419
8E97CEAA1A0C7E26006F9AD7 /* coding_emoji_19@2x.png in Resources */,
73847420
13FB5D521CA17A6400EE127C /* PR_review_undo@3x.png in Resources */,
73857421
B1C871681EB182C7003DACF0 /* taskPriority1@3x.png in Resources */,
7422+
B1BCB89A1FCE93830098B87B /* alipay@3x.png in Resources */,
73867423
4E90F89D1AF709C100B44F03 /* markdown.html in Resources */,
73877424
134116F11CB529E1005E6550 /* PR_more@3x.png in Resources */,
73887425
4E2BF3D51B96CDF800A5A0A8 /* share_btn_wxsession@2x.png in Resources */,
@@ -7394,6 +7431,7 @@
73947431
B1C871281EADF0FF003DACF0 /* back_T_Nav@2x.png in Resources */,
73957432
B1C871631EB182C7003DACF0 /* checkbox_checked@3x.png in Resources */,
73967433
8E97CE9C1A0C7E26006F9AD7 /* coding_emoji_05@2x.png in Resources */,
7434+
B1BCB8991FCE93830098B87B /* alipay@2x.png in Resources */,
73977435
4E095A171D9534CB00E63D9E /* intro_page_unselected@2x.png in Resources */,
73987436
4E6383A61B3262D300D98648 /* taskPriority0@2x.png in Resources */,
73997437
4E0EF6EC1BF42E4B00F2FCC8 /* task_activity_icon_update_label@2x.png in Resources */,
@@ -7782,6 +7820,7 @@
77827820
4E87656A1A22E5B40090CFB9 /* SWUtilityButtonView.m in Sources */,
77837821
7EB02FFC1B6E001300D2166C /* VoiceMedia.m in Sources */,
77847822
8EABE3C819F10D2400A17784 /* TaskComment.m in Sources */,
7823+
B1BCB88F1FCE61D60098B87B /* EAPayViewController.m in Sources */,
77857824
8E97CE471A0A2DF8006F9AD7 /* AGEmojiKeyBoardView.m in Sources */,
77867825
4E53EB521AFA03990034FE1C /* RKSwipeBetweenViewControllers.m in Sources */,
77877826
8EA6D12C19E240C40076D59C /* EditTopicViewController.m in Sources */,
@@ -7867,6 +7906,7 @@
78677906
4E3068461E0B781A00AEE0CE /* NSData+gzip.m in Sources */,
78687907
4E8D5D5C1B45295D00B70936 /* NSString+OTPURLArguments.m in Sources */,
78697908
D066BB3A1BF30EB9005AB5D6 /* ProjectSquareViewController.m in Sources */,
7909+
B1BCB8931FCE662A0098B87B /* NSLayoutConstraintLine.m in Sources */,
78707910
8E6F1C951A03BD6000BF79C8 /* ProjectMemberActivityListViewController.m in Sources */,
78717911
8EA6D13619E240C40076D59C /* BaseViewController.m in Sources */,
78727912
4E5F39051ACA958C0010515D /* TopicCommentCCell.m in Sources */,

Coding_iOS/AppDelegate.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,14 @@ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceAppl
304304
}else{//一般模式解析网页
305305
[BaseViewController presentLinkStr:url.absoluteString];
306306
}
307-
return YES;
307+
}else if ([url.scheme isEqualToString:kSocial_WX_ID] && [url.host isEqualToString:@"pay"]){//微信支付
308+
[self p_handlePayURL:url];
308309
}else if ([url.absoluteString hasPrefix:@"en-:"]){
309310
return [[ENSession sharedSession] handleOpenURL:url];
310311
}else{
311312
return [UMSocialSnsService handleOpenURL:url];
312313
}
314+
return YES;
313315
}
314316

315317
- (void)p_handlePayURL:(NSURL *)url{
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//
2+
// EAPayViewController.h
3+
// Coding_iOS
4+
//
5+
// Created by Easeeeeeeeee on 2017/11/29.
6+
// Copyright © 2017年 Coding. All rights reserved.
7+
//
8+
9+
#import "BaseViewController.h"
10+
#import "ShopOrder.h"
11+
12+
@interface EAPayViewController : BaseViewController
13+
14+
@property (strong, nonatomic) ShopOrder *shopOrder;
15+
16+
- (void)handlePayURL:(NSURL *)url;
17+
18+
@end
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
//
2+
// EAPayViewController.m
3+
// Coding_iOS
4+
//
5+
// Created by Easeeeeeeeee on 2017/11/29.
6+
// Copyright © 2017年 Coding. All rights reserved.
7+
//
8+
9+
#import "EAPayViewController.h"
10+
11+
#import <AlipaySDK/AlipaySDK.h>
12+
#import <UMengSocial/WXApi.h>
13+
#import <UMengSocial/WXApiObject.h>
14+
15+
#import "Coding_NetAPIManager.h"
16+
17+
@interface EAPayViewController ()
18+
19+
@property (assign, nonatomic) NSInteger payMethod;//0 alipay, 1 wechat
20+
@property (strong, nonatomic) NSDictionary *payDict;
21+
22+
@end
23+
24+
@implementation EAPayViewController
25+
26+
- (void)viewDidLoad {
27+
[super viewDidLoad];
28+
// Do any additional setup after loading the view from its nib.
29+
self.title = @"支付";
30+
self.payMethod = 0;
31+
}
32+
33+
- (IBAction)methodBtnClicked:(UIButton *)sender {
34+
self.payMethod = sender.tag;
35+
if (self.payMethod == 1 && ![self p_canOpenWeiXin]){
36+
[NSObject showHudTipStr:@"您还没有安装「微信」"];
37+
return;
38+
}
39+
[NSObject showHUDQueryStr:@"请稍等..."];
40+
__weak typeof(self) weakSelf = self;
41+
[[Coding_NetAPIManager sharedManager] request_shop_payOrder:_shopOrder.orderNo method:_payMethod == 0? @"Alipay": @"Weixin" andBlock:^(NSDictionary *payDict, NSError *error) {
42+
[NSObject hideHUDQuery];
43+
weakSelf.payDict = payDict;
44+
if (weakSelf.payMethod == 0) {
45+
[weakSelf aliPay];
46+
}else{
47+
[weakSelf weixinPay];
48+
}
49+
}];
50+
}
51+
52+
- (void)aliPay{
53+
__weak typeof(self) weakSelf = self;
54+
[[AlipaySDK defaultService] payOrder:_payDict[@"url"] fromScheme:kCodingAppScheme callback:^(NSDictionary *resultDic) {
55+
[weakSelf handleAliResult:resultDic];
56+
}];
57+
}
58+
59+
- (void)weixinPay{
60+
PayReq *req = [PayReq new];
61+
NSDictionary *resultDict = _payDict;
62+
63+
req.partnerId = resultDict[@"partnerId"];
64+
req.prepayId = resultDict[@"prepayId"];
65+
req.nonceStr = resultDict[@"nonceStr"];
66+
req.timeStamp = [resultDict[@"timestamp"] intValue];
67+
req.package = resultDict[@"package"];
68+
req.sign = resultDict[@"sign"];
69+
[WXApi sendReq:req];
70+
}
71+
72+
- (void)handleAliResult:(NSDictionary *)resultDic{
73+
DebugLog(@"handleAliResult: %@", resultDic);
74+
BOOL isPaySuccess = NO;
75+
if (_payMethod == 0) {
76+
isPaySuccess = ([resultDic[@"resultStatus"] integerValue] == 9000);
77+
}else{
78+
NSInteger resultCode = [resultDic[@"ret"] intValue];
79+
isPaySuccess = (resultCode == 0);
80+
}
81+
[NSObject showHudTipStr:isPaySuccess? @"支付成功": @"支付失败"];
82+
if (isPaySuccess) {
83+
[self.navigationController popViewControllerAnimated:YES];
84+
}
85+
}
86+
87+
- (void)handlePayURL:(NSURL *)url{
88+
if (_payMethod == 0) {
89+
__weak typeof(self) weakSelf = self;
90+
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
91+
[weakSelf handleAliResult:resultDic];
92+
}];
93+
}else{
94+
[self handleAliResult:[url queryParams]];
95+
}
96+
}
97+
98+
#pragma mark - app url
99+
- (BOOL)p_canOpenWeiXin{
100+
return [self p_canOpen:@"weixin://"];
101+
}
102+
103+
- (BOOL)p_canOpenAlipay{
104+
return [self p_canOpen:@"alipay://"];
105+
}
106+
107+
- (BOOL)p_canOpen:(NSString*)url{
108+
return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]];
109+
}
110+
111+
@end

0 commit comments

Comments
 (0)