博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
支付服务集成-支付宝
阅读量:4042 次
发布时间:2019-05-24

本文共 2469 字,大约阅读时间需要 8 分钟。

http://www.alliedjeep.com/124363.htm

http://www.2cto.com/kf/201607/528748.html
http://blog.csdn.net/gulaer/article/details/8475980
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.uWfJBz&treeId=193&articleId=105297&docType=1

1.  数据交互流程

支付宝支付的业务数据交互流程图如下。

image

 

图 1 支付宝支付SDK数据交互流程图

  1. 构造订单数据并签名
    商户客户端根据手机支付宝支付开发包的接口规则,通过程序生成得到签名结果及要传输给手机支付宝支付开发包的数据集合。
  2. 发送请求数据
    把构造完成的数据集合传递给手机支付宝支付开发包。
  3. 手机支付宝支付开发包对请求数据进行处理
    手机支付宝支付开发包将请求数据根据业务规则包装后传递给支付宝服务端,服务端得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。
  4. 返回处理的结果数据
    对于处理完成的交易,支付宝会以两种方式把数据分别反馈给商户应用和商户服务器。

1)         在手机客户端上,开发包客户端直接把处理的数据结果反馈给商户客户端;

2)         支付宝服务器主动发起通知,调用商户在请求时设定好的页面路径(参数notify_url,如果商户没设定,则不会进行该操作)

     5. 对获取的返回结果数据进行处理

商户在客户端同步通知接收模块或服务端异步通知接收模块获取支付宝返回的结果数据后,可以结合商户自身业务逻辑进行数据处理(如:订单更新、自动充值到会员账号中等)。同步通知结果仅用于结果展示,入库数据需以异步通知为准。

对于同步返回和异步通知的说明

支付结果必须以异步通知为准,通知结果仅供参考。一般来说,异步通知快于同步返回,但异步返回的时间并不确定,也有可能出现异步通知延迟的情况。如商户提供了异步通知地址,支付宝服务器端没有收到商户的确认响应(上图第9步),那么支付宝服务器端会一直重发异步通知结果。

2.  集成支付宝SDK步骤

步骤1

在xcode中添加AlipaySDK.framework和文件夹alipayFiles

步骤2

#import <AlipaySDK/AlipaySDK.h>

步骤3

适配iOS9.0中的App Transport Security(ATS)对http的限制,在info.plist中添加

<key>NSAppTransportSecurity</key>

    <dict>   

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

    </dict>

步骤4

在AppDelegate的

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

方法中增加处理客户端支付返回结果的代码,代码参加DEMO程序或支付宝示例程序。

步骤5

在Xcode里的header search paths 里添加支付宝SDK文件路径(包含了openssl);格式如下 $(PROJECT_DIR)/文件夹名。

 

图 2 Xcode里添加支付宝SDK header search paths

路径如,$(SRCROOT)/UniPayRedPacketDEMO/alipayFile

 

图 3 集成支付宝文件示意图

步骤6

点击项目名称,点击“Build Phases”选项卡,在“Link Binary with Librarles”选项中,新增

系统库文件:AlipaySDK.framework,SystemConfiguration.framework

静态库:libcrypto.a,libssl.a

 

图 4 Xcode添加Lib库

步骤7

点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“MYALIPAY”。“MYALIPAY”代表APP标识,用于支付宝客户端跳转回到具有该标识的APP。支付宝特别提示,

注意:实际商户的app中要填写独立的scheme,建议跟商户的app有一定的标示度,要做到和其他的商户app不重复,否则可能会导致支付宝返回的结果无法正确跳回商户app。

 

图 5 Xcode设置URL Schemes

3.  支付宝支付接口

3.1.  快捷订单支付接口

方法名称

方法原型

方法描述

快捷订单支付接口

-(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;

支付并通过回调返回结果

快捷订单支付接口,接口及参数说明,请见支付宝官网链接(如上网址)。在其回调里处理的是WAP方式返回的结果。

3.2.  处理客户端支付返回结果接口

如要处理客户端(已安装情况下)返回的结果,则使用

方法名称

方法原型

方法描述

处理客户端支付返回结果接口

-(void)processOrderWithPaymentResult:(NSURL*)resultUrl  standbyCallback:(CompletionBlock)completionBlock

设备已安装支付宝客户端情况下,处理支付宝客户端返回的url

处理客户端支付返回结果接口,接口及参数说明,请见支付宝官网链接(如上网址)。支付宝特别提示,

注意:该方法必须实现,否则将会导致在安装手机支付宝的情况下,支付结果无法正常同步返回。

你可能感兴趣的文章
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>