iOS 支付宝手机网站支付

时间:2018-01-04 17:52:04

后台提供的是一个可以使用webView加载的URL, URL的返回值为一个带有订单信息的from表单

步骤1 集成支付宝SDK

步骤2 在加载webView的界面这样写


- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    /// 初始化webView
    _webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
    /// 设置代理
    _webView.delegate = self;
    [self.view addSubview:_webView];
    /// load
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:[NSURL URLWithString:self.strUrl]];
    [_webView loadRequest:request];
}

#pragma mark -
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString* orderInfo = [[AlipaySDK defaultService]fetchOrderInfoFromH5PayUrl:[request.URL absoluteString]];
    if (orderInfo.length > 0) {
        // 调用支付接口进行支付
        /*
         {
         isProcessUrlPay = 1;
         resultCode = 6001;
         returnUrl = "";
         }
         */
        [[AlipaySDK defaultService]payUrlOrder:orderInfo fromScheme:@"yoparking" callback:^(NSDictionary* result) {
            /*
             9000    订单支付成功
             8000    正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
             4000    订单支付失败
             5000    重复请求
             6001    用户中途取消
             6002    网络连接出错
             6004    支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
             其它    其它支付错误
             */
        }];
    }
    return YES;
}

在AppDelegate中 中补充

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

    //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包
    if ([url.host isEqualToString:@"safepay"]) {
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
    //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode

        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

good!

待补充~

作者:sinat_30162391 发表于2018/1/4 19:52:04 原文链接
阅读:31 评论:0 查看评论