支付服务集成-支付宝
2016-11-30 22:37
211 查看
http://www.alliedjeep.com/124363.htm
http://www.2cto.com/kf/201607/528748.htmlhttp://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. 数据交互流程
支付宝支付的业务数据交互流程图如下。图 1 支付宝支付SDK数据交互流程图
构造订单数据并签名
商户客户端根据手机支付宝支付开发包的接口规则,通过程序生成得到签名结果及要传输给手机支付宝支付开发包的数据集合。
发送请求数据
把构造完成的数据集合传递给手机支付宝支付开发包。
手机支付宝支付开发包对请求数据进行处理
手机支付宝支付开发包将请求数据根据业务规则包装后传递给支付宝服务端,服务端得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。
返回处理的结果数据
对于处理完成的交易,支付宝会以两种方式把数据分别反馈给商户应用和商户服务器。
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. 支付宝支付接口
https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.eWwqbi&treeId=59&articleId=103660&docType=1
3.1. 快捷订单支付接口
方法名称 | 方法原型 | 方法描述 |
快捷订单支付接口 | -(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock; | 支付并通过回调返回结果 |
3.2. 处理客户端支付返回结果接口
如要处理客户端(已安装情况下)返回的结果,则使用方法名称 | 方法原型 | 方法描述 |
处理客户端支付返回结果接口 | -(void)processOrderWithPaymentResult:(NSURL*)resultUrl standbyCallback:(CompletionBlock)completionBlock | 设备已安装支付宝客户端情况下,处理支付宝客户端返回的url |
注意:该方法必须实现,否则将会导致在安装手机支付宝的情况下,支付结果无法正常同步返回。
相关文章推荐
- iOS集成支付宝开发“抱歉,该商户未开通支付宝服务,无法支付”
- 集成支付宝支付服务流程详解[面向 java c# php]
- iOS开发:2分钟快速集成支付宝快捷支付
- Android客户端5分钟集成支付宝支付
- [置顶] 实现APP支付QQ,微信,支付宝三方的后端服务------php实现微信APP支付
- iOS开发支付集成之支付宝支付
- 微信、支付宝支付集成--Ping++支付接入步骤-iOS版
- React Native (IOS和Android) 支付宝和微信支付集成实战(支付宝服务端篇)
- android 应用中加入支付功能(支付宝集成)
- j2ee服务端集成支付宝扫码支付功能
- 关于app集成支付宝应用内支付的问题总结
- IOS集成支付宝客户端支付,编译不过(1)
- 集成支付宝支付
- android 应用中加入支付功能(支付宝集成)
- IOS集成微信支付或者支付宝支付功能小结
- [置顶] 实现APP支付QQ,微信,支付宝三方的后端服务------php实现QQAPP支付
- Android 不集成支付宝sdk实现收款功能 通过Intent调起支付宝支付
- 安卓集成支付宝支付功能
- 集成支付宝支付
- 集成支付宝支付(AliPay)详解,防跳坑