美文网首页
iOS 集成支付宝支付

iOS 集成支付宝支付

作者: 善良的karl | 来源:发表于2019-06-13 22:57 被阅读0次

这次是一个新项目,集成支付宝和微信支付,客户端集成其实非常简单,主要参数和配置都是可以在后台完成。不过还是碰到了一些问题,所以在这里做一次记录吧。支付宝的官方文档在 开放平台文档中心 这里。

1、首先使用cocopods导入支付宝的sdk库。如下:
pod 'AlipaySDK-iOS'
2、在需要调用 AlipaySDK 的文件中,增加头文件引用。
import <AlipaySDK/AlipaySDK.h>
3、组装请求信息
这一步应在商户服务端完成,商户服务端直接将组装和签名后的请求串 orderString 传给客户端,客户端直接传给 SDK 发起请求。支付宝官方文档和 Demo 是为了示例效果在客户端实现。
4、配置返回 url 处理方法-支付结果回调

在AppDelegate.m中,引入头文件

import <AlipaySDK/AlipaySDK.h>

在 @implementation AppDelegate 中将以下代码中的 NSLog 改为实际业务处理代码:

- (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) {

            NSLog(@"result = %@",resultDic);

        }];

    }

    return YES;

}

// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{

    if ([url.host isEqualToString:@"safepay"]) {

        //跳转支付宝钱包进行支付,处理支付结果

        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

            NSLog(@"result = %@",resultDic);

        }];

    }

    return YES;

}
注意:以上方法在AppDelegate中,只能实现一次,不可以在AppDelegate分类中重复实现以上回调方法,笔者就曾在一个AppDelegate(um)分类中已经实现过这个方法,导致这里不走这个回调,而走了分类里面的回调。
5、唤起支付宝支付

在唤起支付宝之前,还要在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“你的app标识”。在后面payOrder:orderString fromScheme:@"tcyclingapp" callback:^(NSDictionary *resultDic) {}]方法中,fromscheme里面输入“你的app标识”字符串。

配置好以后,就可以去请求服务端接口,服务端会返回一个拼接好的字符串,然后实现以下方法

    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

        NSLog(@"reslut = %@",resultDic);

    }];

说明:orderString 为服务端返回的一串字符串,appScheme为你在URL Schemes中输入的标识字符串。

注意:(重点)经官方确认,实现这个方法唤起支付宝钱包app支付的时候,是不会走callback这个回调的,会走AppDelegate里面实现的回调方法。只有在调起h5网页支付的时候,才会走callback这个回调方法。这也是我踩的坑之一。

6、回调结果处理举例

// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options

{

    if ([url.host isEqualToString:@"safepay"]) { //支付宝支付的回调

        //跳转支付宝钱包进行支付,处理支付结果

        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

            QDLog(@"支付结果 = %@",resultDic);

            NSIntegerresCode = [resultDic[@"resultStatus"]integerValue];

            if(resCode ==9000) {//支付成功

                //发送支付成功的通知

                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePaySuccess object:nil];

            }elseif(resCode ==6001){//用户中途取消

                //发送支付取消的通知

                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayCancel object:nil];

            }else{

                 [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayFailure object:nil];

            }

        }];

    }

    return YES;

}
TIPS:因为之前已经集成了友盟分享,在集成支付宝支付时,提示了utdid冲突的错误,原因可能是友盟和支付宝两个库里面有重复的文件,查找了一下资料,把友盟的pod ‘UMCSecurityPlugins’ 安全组件这个库移除掉,就可以解决这个冲突了。

至此,支付宝支付的集成就完成了。

相关文章

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • ios支付宝签名

    支付宝: iOS 支付功能概述 - 简书 1.iOS集成支付宝 - 简书 2.iOS 集成支付宝 - 简书 3.i...

  • 文章汇总

    ios iOS 网络篇 网络基础总结 支付宝集成 iOS支付宝支付集成 - demo例子集 - 博客园 理解 iO...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • 集成支付、第三方登录知识总结

    1、玩转iOS开发:集成 WeChat SDK - 支付篇2、玩转iOS开发:集成 AliPay - 支付宝

  • iOS&Android集成支付宝-server篇(PHP

    iOS&Android集成支付宝-server篇(PHP) 在上一篇文章《iOS集成支付宝-Swift版》中,我介...

  • iOS 支付宝集成流程

    iOS 集成支付宝支付 SDK下载 集成支付宝首先是去官网下载SDK https://doc.open.alipa...

网友评论

      本文标题:iOS 集成支付宝支付

      本文链接:https://www.haomeiwen.com/subject/fbxyfctx.html