移动支付demo接入流程指南(ios版)-阿里云开发者社区

开发者社区> 扬朋> 正文

移动支付demo接入流程指南(ios版)

简介: 解压下载到的接口资料压缩文件(文件名是WS_MOBILE_PAY_SDK_BASE.zip),里面包括客户端demo与服务端demo。客户端demo文件夹中Android与IOS都需要接入开发,服务端demo文件夹中可根据商户自身情况选择开发语言(JAVA、PHP、C#)与编码格式(UTF-8、GBK)六选一即可。
+关注继续查看

解压下载到的接口资料压缩文件(文件名是WS_MOBILE_PAY_SDK_BASE.zip),里面包括客户端demo与服务端demo。客户端demo文件夹中Android与IOS都需要接入开发,服务端demo文件夹中可根据商户自身情况选择开发语言(JAVA、PHP、C#)与编码格式(UTF-8、GBK)六选一即可。 

  一、接口demo配置与运行


声明:账号信息的配置、签名机制逻辑代码请务必放入服务端中管理与运行,不要在客户端中,以下步骤仅适用于demo配置运行,若出现资金风险请自行承担。实际项目开发过程中,如何接入支付宝SDK请参考“开放平台文档中心”。 

步骤1:配置环境 点击IOS客户端demo文件夹中的AliSDKDemo.xcodeproj文件,唤起XCODE开发软件。

 



    
 配置证书

 

找到选项卡【Build Settings】,展开Code Signing Identity项,并在右侧输入框中选择当前环境对应的证书,软件会自动同步以下5个下拉框内容。 配置支持bitcode 在选择项【Enable Bitcode】中,选择【Yes】。 配置依赖库 



找到选项卡【Build Phases】→【Link Binary With Libraries】,按照以上截图添加库。需要注意的是:如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)。

 

步骤2:配置基本信息 在XCODE发环境中,打开“APViewController.m”文件,配置partner(合作身份者ID)、seller(收款账号,这里注意必须与partner对应)、privateKey(商户私钥)、等基本信息参数。

 

步骤3:编写同步通知业务逻辑 在XCODE发环境中,打开“APAppDelegate.m”文件,在 



中,写入商户的业务逻辑代码。请注意,与资金变动有关等重要代码请务必不要在此处编写。

 

步骤4:编写异步通知业务逻辑 打开服务端demo文件夹中的已经确认好开发语言和编码格式的文件夹,找到notify_url文件(notify_url文件需保证无任何HTML代码)。在注释指定位置“//请根据您的业务逻辑来编写程序”写入商户的业务逻辑代码。请参考“业务逻辑处理”。 

步骤5:运行接口代码示例 运行项目,可使用模拟器或连接手机或生成app等方式,打开项目APP, 



选择一个商品,跳转到支付宝收银台进行付款。 

二、接口demo运行逻辑详解


步骤1:对接口请求参数配置好数据后,组装进对象orderSpec中,并且对该对象进行拼接,使其成为待签名字符串,无需做排序、过滤空值的动作。


partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"

步骤2:对该字符串做签名(调用signString函数)。

lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D

步骤3:把签名结果赋值给参数sign,并把sign加入之前的待签名字符串中, 



此时得到的便是要请求给支付宝的全部数据。

partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"¬ify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&sign="lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D"&sign_type="RSA"

步骤4:建立请求,提交数据到支付宝, 



唤起支付宝收银台。

 





按照支付宝收银台上的指示完成付款操作。 

步骤5:买家支付成功后支付宝收银台上显示该笔交易成功,根据客户端“APAppDelegate.m”文件设置的代码信息,来控制返回商户APP、展示交易成功信息等动作。 

步骤6:买家对一笔交易付款完成的同时,除了商户客户端会有同步通知动作,商户的服务端也会收到支付宝主动发来的服务器通知,该通知信息由商户的notify_url页面文件接收(商户设置参数notify_url的值)。

http://suiding.guoyunnet.cn:81/alipay/notify_url.php?discount=0.00&payment_type=1&subject=凤冈茶海之心景区&trade_no=2016040821001003450209263008&buyer_email=***&gmt_create=2016-04-08 09:36:20?ify_type=trade_status_sync&quantity=1&out_trade_no=C705C30A421000016D498640118015E1&seller_id=2088111064746422?ify_time=2016-04-08 09:40:35&body=凤冈茶海之心景区&trade_status=WAIT_BUYER_PAY&is_total_fee_adjust=Y&total_fee=0.01&seller_email=***&price=0.01&buyer_id=2088702386258454?ify_id=f48384c71e319df62239abb57803872jh2&use_coupon=N&sign_type=RSA&sign=***

步骤7:用POST方式获得这些返回数据,对其做空值过滤、参数名首字母升序的排序、待签名数组转变成待签名字符串。 

对该字符串做RSA签名验证(

JAVA:AlipayNotify类中的getSignVeryfy函数;

PHP:lib/alipay_notify.function.php中的getSignVeryfy函数;

C#:app_code/AlipayNotify.cs中的GetSignVeryfy函数),

得到布尔类型的验证结果。 

步骤8:根据获得的参数notify_id,来验证是否是支付宝发来的请求(

JAVA:AlipayNotify类中的verifyResponse函数;

PHP:lib/alipay_notify.function.php中的getResponse函数;

C#:app_code/AlipayNotify.cs中的GetResponseTxt函数)。 

先拼接完整的验证请求链接:[code ]https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg[/code] 再用远程模拟HTTP请求的方式请求到支付宝,此时支付宝返回的信息是纯HTML文本“true”,页面上再也无其他任何字符。具体请参见“验证是否是支付宝发来的通知”。 

步骤9:根据签名验证结果、是否是支付宝发来的通知的验证结果,二者全部为true的情况下,则验证通过(

JAVA:AlipayNotify类中的verify函数;

PHP:ib/alipay_notify.function.php中的verifyReturn函数;

C#:app_code/AlipayNotify.cs中的Verify函数)。 

步骤10:二者验证通过后,再验证请求时的total_fee(订单金额)、seller_id(卖家账号)与通知返回时的数据是否一致。 

步骤11:验证通过后,方可执行对资金相关的业务逻辑代码。需要注意的是:已经对同一笔交易做过业务处理后,不要再做重复处理,避免资损。

 步骤12:商户的业务代码正常且成功执行后,需在notify_url的当前页面中输出纯文字“success”,让支付宝通知服务器知晓已执行完毕。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【云吞铺子】CDN域名接入流程
好玩有趣的云计算知识系列视频!
2385 0
Glide 简单流程分析
转载请标明地址 QuincySx: http://www.jianshu.com/p/cf8f8f90f621 这篇文章是这个系列的第一篇文章,我第一次写这样连续系列的文章,我先一层一层的剥开 Glide ,如果谁有更好的想法欢迎提出。
833 0
微赞模块的加载流程
http://wz.xxxxx.com/app/index.php?i=3&c=entry&do=register&m=tb_service c=entry的意思,代表的是去加载addons下的模块,代码的跳转在app/index.php $init = IA_ROOT . "/app/source/{$controller}/__init.php"; if
997 0
Glide 资源加载流程分析
转载请标明地址 QuincySx: http://www.jianshu.com/p/eed7054e3722 这是 Glide 的第二篇,在上一篇中讲的都是大概流程,直接阅读起来可能比较困难,推荐结合源码浏览,在这一篇中就讲资源加载,所以贴上来的源码就会多一些。
837 0
AliOS Things 的 ESP32 应用开发流程
本文介绍 Windows 下基于 AliOS Things 的 ESP32 应用开发流程,包括环境搭建、程序编译、固件烧写。
7953 0
+关注
扬朋
支付宝小程序开发者运营专家
516
文章
69
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载