ISO最新集成支付宝详解

本文介绍了iOS快速集成支付宝支付的方法,本文中介绍的方法是经过一次封装,因此配置完成之后调用仅需一行代码即可支付宝支付,非常的方便,希望大家喜欢。

我只是根据官方的文档,对支付宝的SDK做了进一步封装,其中密钥的生成很简单,需要看官方的文档,官方的文档我在工程附件目录里也有一份,如果需要马上集成,没工夫研究的话,可以大致看一下密钥的生成即可,其他的配置我会在下面进行讨论

要在iOS应用里集成支付宝支付,需要公司和支付宝签约,然后生成相应的密钥。密钥的生成支付宝的开发文档里已经说的非常清楚了,这里就不再讨论

以上是作者原文。

附上作者自己封装的支付宝支付SDK在git链接点击打开链接

将工程中的IntegratedAlipay文件夹导入工程中,记得选copy

点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search” 搜索,对“Header Search Paths”增加头文件路径:“$(SRCROOT)/项目名称/IntegratedAlipay/AlipayFiles”(注意:不包括引号,如果不是放到项目根目录下,请在项目名称后面加上相应的目录名)

然后不包括引号是这样的如图(小细节)

导入支付宝依赖的库

附上一段官方文档的话:

步骤2:在需要调用AlipaySDK的文件中,增加头文件引用。


1

#import<AlipaySDK/AlipaySDK.h>

步骤3:如果你的app基于9.0编译,那么为了适配iOS9.0中的App Transport Security(ATS)对http的限制,这里需要对支付宝的请求地址alipay.com、alipayobjects.com做例外,在app对应的info.list中添加如下配置(文中以XML格式描述)。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<key>NSAppTransportSecurity</key>

    <dict>

        <key>NSExceptionDomains</key>

        <dict>

            <key>alipay.com</key>

            <dict>

                <key>NSIncludesSubdomains</key>

                <true/>

                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>

                <true/>

                <key>NSTemporaryExceptionMinimumTLSVersion</key>

                <string>TLSv1.0</string>

                <key>NSTemporaryExceptionRequiresForwardSecrecy</key>

                <false/>

            </dict>

            <key>alipayobjects.com</key>

            <dict>

                <key>NSIncludesSubdomains</key>

                <true/>

                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>

                <true/>

                <key>NSTemporaryExceptionMinimumTLSVersion</key>

                <string>TLSv1.0</string>

                <key>NSTemporaryExceptionRequiresForwardSecrecy</key>

                <false/>

            </dict>

        </dict>

    </dict>

说明:

如果商户配置了如下的配置:


1

2

3

4

<key>NSAppTransportSecurity</key>

    <dict>   

        <key>NSAllowsArbitraryLoads</key><true/>

    </dict>

则上述的NSAppTransportSecurity可以不配置。

对于网络配置。

接下来

导入SDK  导入库之后 command + B 编译一下。 如果没错误最好。 如果有错误参照如下可能出现的问题

1.

问题详情:

(null): URGENT: all bitcode will be dropped because ‘xxxx’ was built without bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. Note: This will be
an error in the future.

问题分析:

从上述的错误中应该可以看出,这是因为一个第三方的库不兼容,我的工程中开启了 ENABLE_BITCODE (应该是升级之后自动转换的),而这个第三方的库在编译的时候没有 enable bitcode,所以导致上诉问题。

解决方法:

应该是有两种吧,一种就是换成 enable bitcode 的第三方库,再有一种就是将工程的 ENABLE_BITCODE 设置为 false 就可以了。

因为我这里不太方便换库,所以,就把工程的设置给改了一下。

具体操作方法如下:

2.在openssl中他定义的一些东西。不能与你项目中自己定义的宏有同名的

原来我项目中就有STORE    后来我改成了   STORe

如上图

3. SDK中  Order.m 文件是用MRC内存管理模式写的。 会有release

所以 不愿意手动删的  可以改成ARC

如图

(微信支付同理, 不过是有2个文件要改。支付宝是1个)

其他问题待遇到。运行成功

接下来

找到文件

在AlipayHeader.h中修改你需要的内容 例如

kPartnerID、

kSellerAccount、

kNotifyURL、

kAppScheme等。

对于这个scheme是回调时需要的要在APP中设置

如图

图中圈内内容  要和头文件中一样

只需在需要跳转支付的地方调用此方法即可

在App delegate中添加回调方法,以下是官方文档内的描述

步骤5:配置支付宝客户端返回url处理方法。

(外部存在支付包钱包,支付宝钱包将处理结果通过url返回。)

如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代码:


1

#import<AlipaySDK/AlipaySDK.h>

在@implementation AppDelegate中增加如下代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

        }];

    }

    returnYES;

}

好了之后。

在AlipayRequestConfig.m中。可以看到支付宝返回的内容

以下是官方文档给出的错误码描述

到这里基本就结束了。

之后如果你的秘钥错误 可能会出现如下问题

用模拟器测试可能提示

用真机测试是这样的

等申请好秘钥填好所有信息之后运行一切正常

最后附上支付宝官方文档链接:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.3AADE5&treeId=59&articleId=104352&docType=1

时间: 2024-10-29 18:04:33

ISO最新集成支付宝详解的相关文章

安卓集成发布详解(二)gradle

转自:http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/ 安卓集成发布详解(二) 15 Jun 2015 上一篇主要讲了安卓版本编译版本发布的过程,本篇主要写版本编译脚本的实现,包括签名文件处理及多渠道版本编译.安卓集成发布详解(一) 一.签名部分编写 gradle本身支持直接签名,只需要在releas部分添加如下代码即可 signingConfigs { debug { } releas

最新Spinner用法详解

最新Spinner用法详解 Spinner组件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner 两者的区别在于v7内的Spinner是兼容低版本的,Spinner再高版本中才能使用的方法换了v7下的Spinner后可以一直兼容到2.1 (v7兼容到api7),初次之外两者的使用没有其他差别,推荐使用v7,保证效果在不同版本上都能显示. Spinner的使用步骤: 布局中设置数据源和主题,特点是方便快捷,缺点是不能动

支付宝集成过程详解——运行DEMO

前言,梦想是需要坚持的,在路上,一路前行.加油. 这两天软件需要集成支付宝了,第一次集成,过程还是挺简单的,不过由于支付宝官方文档写的不够清晰,也是走了一些弯路,下面把过程写出来分享给大家 一.申请移动支付权限 首先登录[支付宝开放平台]http://open.alipay.com/platform/home.htm,添加应用,申请移动支付权限.申请开通支付,是需要公司文件的,个人是不允许开始支付的.具体细节就不再详聊了,下面就讲讲如何将阿里给出的demo运行起来. 二.阿里支付DEMO 1.概

Android动画最新最全详解包含Material Design动画

以前写动画也是零零种种,需要的时候就查API或找现成的,不够系统.现在通过学习将Android整个动画体系勾勒出来,做到有的放矢. 安卓框架提供了2个动画系统:属性动画(Android 3.0)和View动画.这两种动画系统都是可行的,但是,在一般情况下,属性动画是首选的方法,因为它是更灵活,提供更多的功能.除了这两个系统,你可以利用Drawable动画,它允许你一帧一个的加载显示Drawable资源.所以总体来说Android API提供了三类的动画: - Tween动画或View动画(API

PHP与Java集成开发详解(一)

很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP. 时间一天天过去,这两个亮点也变得越来越亮,很快,它们受到了编程者的喜欢,于是有人有疑问了:要是它们两者相遇,会发生什么事情?有没有可能将它们的强项结合在一起呢? 尝试在PHP和Java之间搭建一座桥梁,利用这座桥梁在这两个实体之间建立起一个沟通渠道,在这座桥梁的帮助下,你可以在Java中开发类,然后在PHP中调用它们的方法,同样,在你的Java桌面或Web应

【Android界面实现】SlidingMenu最新版本使用详解

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在很久之前的一篇文章中,简单的介绍了一下开源项目SlidingMenu控件的使用,这一篇文章,将比较详细的介绍最新版本的SlidingMenu控件的使用方法. SlidingMenu的github地址:https://github.com/jfeinstein10/SlidingMenu 将SlidingMenu整合到自己的项目之中 我们在使用开源的项目之前,都需要先将项目作为资源引入到我们当前的项目之中

springboot集成redis详解

欢迎扫码加入Java高知群交流 springboot集成redis非常简单 1.引入maven依赖redis包 <!-- springboot整合 redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2.appli

Storm 系列(七)—— Storm 集成 Redis 详解

一.简介 Storm-Redis 提供了 Storm 与 Redis 的集成支持,你只需要引入对应的依赖即可使用: <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-redis</artifactId> <version>${storm.version}</version> <type>jar</type> <

SpringBoot—集成AOP详解(面向切面编程Aspect)

AOP介绍 AOP概述 ??AOP是Aspect-Oriented Programming,即为面向(切面)方面编程.在维基百科中的解释:Aspect是一种新的模块化机制,用来描述分散在对象.类或函数中的横切关注点.从关注点中分离出横切关注点是面向切面的程序设计核心概念.分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑代码不需要再包含针对特定领域问题代码的调用,比如一些公用模块的日志.安全等代码. ??代码通过切面抽离,更加整齐和清晰,将重复的代码抽取出来单独的进行维护,在需要