123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- //
- // APWebViewController.m
- // AliSDKDemo
- //
- // Created by 亦澄 on 16-1-5.
- // Copyright (c) 2016年 Alipay. All rights reserved.
- //
- #import "APWebViewController.h"
- #import <AlipaySDK/AlipaySDK.h>
- @interface APWebViewController ()
- @property (nonatomic, strong)UIView* maskView;
- @property (nonatomic, strong)UIView* urlInputView;
- @property (nonatomic, strong)UITextField* urlInput;
- @end
- @implementation APWebViewController
- - (void)dealloc
- {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- self.webView.delegate = nil;
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor whiteColor];
- self.webView.delegate = self;
- // 加载已经配置的url
- NSString* webUrl = [[NSUserDefaults standardUserDefaults]objectForKey:@"alipayweburl"];
- if (webUrl.length > 0) {
- [self loadWithUrlStr:webUrl];
- }
- }
- #pragma mark ============== webview相关 回调及加载 ==============
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
- {
- // NSString* orderInfo = [[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:[request.URL absoluteString]];
- // if (orderInfo.length > 0) {
- // [self payWithUrlOrder:orderInfo];
- // return NO;
- // }
- // return YES;
- //新版本的H5拦截支付对老版本的获取订单串和订单支付接口进行合并,推荐使用该接口
- __weak APWebViewController* wself = self;
- BOOL isIntercepted = [[AlipaySDK defaultService] payInterceptorWithUrl:[request.URL absoluteString] fromScheme:@"alisdkdemo" callback:^(NSDictionary *result) {
- // 处理支付结果
- NSLog(@"%@", result);
- // isProcessUrlPay 代表 支付宝已经处理该URL
- if ([result[@"isProcessUrlPay"] boolValue]) {
- // returnUrl 代表 第三方App需要跳转的成功页URL
- NSString* urlStr = result[@"returnUrl"];
- [wself loadWithUrlStr:urlStr];
- }
- }];
-
- if (isIntercepted) {
- return NO;
- }
- return YES;
- }
- - (void)loadWithUrlStr:(NSString*)urlStr
- {
- if (urlStr.length > 0) {
- NSURLRequest *webRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]
- cachePolicy:NSURLRequestReturnCacheDataElseLoad
- timeoutInterval:30];
- [self.webView loadRequest:webRequest];
- }
- }
- #pragma mark -
- #pragma mark ============== URL pay 开始支付 ==============
- //- (void)payWithUrlOrder:(NSString*)urlOrder
- //{
- // if (urlOrder.length > 0) {
- // __weak APWebViewController* wself = self;
- // [[AlipaySDK defaultService]payUrlOrder:urlOrder fromScheme:@"alisdkdemo" callback:^(NSDictionary* result) {
- // // 处理支付结果
- // //NSLog(@"%@", result);
- // // isProcessUrlPay 代表 支付宝已经处理该URL
- // if ([result[@"isProcessUrlPay"] boolValue]) {
- // // returnUrl 代表 第三方App需要跳转的成功页URL
- // NSString* urlStr = result[@"returnUrl"];
- // [wself loadWithUrlStr:urlStr];
- // }
- // }];
- // }
- //}
- #pragma mark -
- #pragma mark ============== url 输入界面及响应==============
- - (IBAction)onOpenUrlInput:(id)sender
- {
- if (self.maskView == nil) {
- self.maskView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
- self.maskView.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.75];
- }
-
- if (self.urlInputView == nil) {
- self.urlInputView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 105)];
- self.urlInputView.backgroundColor = [UIColor lightGrayColor];
- self.urlInputView.layer.cornerRadius = 8.0f;
- self.urlInputView.layer.masksToBounds = YES;
-
- self.urlInput = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 280, 30)];
- self.urlInput.autocapitalizationType = UITextAutocapitalizationTypeNone;
- self.urlInput.autocorrectionType = UITextAutocorrectionTypeNo;
- self.urlInput.clearButtonMode = UITextFieldViewModeWhileEditing;
- self.urlInput.backgroundColor = [UIColor whiteColor];
- self.urlInput.layer.cornerRadius = 4.0f;
- self.urlInput.layer.masksToBounds = YES;
- [self.urlInputView addSubview:self.urlInput];
-
- UIButton* btn = [[UIButton alloc]initWithFrame:CGRectMake(230, 60, 60, 30)];
- btn.backgroundColor = [UIColor grayColor];
- btn.layer.cornerRadius = 4.0f;
- btn.layer.masksToBounds = YES;
- btn.layer.borderColor = [UIColor blueColor].CGColor;
- btn.layer.borderWidth = 2.0f;
-
- [btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
- [btn setTitle:@"Go" forState:UIControlStateNormal];
- [btn addTarget:self action:@selector(onOpenInputedUrl:) forControlEvents:UIControlEventTouchUpInside];
- [self.urlInputView addSubview:btn];
- }
-
- NSString* webUrl = [[NSUserDefaults standardUserDefaults]objectForKey:@"alipayweburl"];
- self.urlInput.text = webUrl;
-
- UIWindow* keyWnd = [UIApplication sharedApplication].keyWindow;
- if (keyWnd) {
- if (self.maskView.superview) {
- [self.maskView removeFromSuperview];
- }
- [keyWnd addSubview:self.maskView];
-
- if (self.urlInputView.superview) {
- [self.urlInputView removeFromSuperview];
- }
- [keyWnd addSubview:self.urlInputView];
- self.urlInputView.center = keyWnd.center;
- CGRect frame = self.urlInputView.frame;
- frame.origin.y = 84;
- self.urlInputView.frame = frame;
- }
- }
- - (IBAction)onOpenInputedUrl:(id)sender
- {
- if (self.urlInputView.superview) {
- [self.urlInputView removeFromSuperview];
- }
-
- if (self.maskView.superview) {
- [self.maskView removeFromSuperview];
- }
-
- NSString* urlStr = self.urlInput.text;
- if (urlStr.length > 0) {
- if (![urlStr hasPrefix:@"http"]) {
- urlStr = [NSString stringWithFormat:@"http://%@", urlStr];
- }
- [[NSUserDefaults standardUserDefaults] setObject:urlStr forKey:@"alipayweburl"];
- [self loadWithUrlStr:urlStr];
- }
- }
- @end
|