移动支付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”,让支付宝通知服务器知晓已执行完毕。

目录
相关文章
|
27天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
83 3
|
2月前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
2月前
|
安全 数据安全/隐私保护 iOS开发
iOS App 上架流程图文教学
在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。
|
25天前
|
数据安全/隐私保护 iOS开发 开发者
uniapp IOS从打包到上架流程(详细简单) 原创
uniapp IOS从打包到上架流程(详细简单) 原创
14 1
|
1月前
|
机器学习/深度学习 测试技术 API
iOS系统下轻松构建自动化数据收集流程
iOS系统下轻松构建自动化数据收集流程
24 0
|
2月前
|
iOS开发 开发者 UED
2023年iOS App Store上架流程详解(上)
在2023年,随着苹果发布机制的微调,有些关于iOS App上架流程的资料已经过时。本文将根据最新的要求和经验,详细介绍iOS App上架的流程。
|
2月前
|
存储 数据安全/隐私保护 开发者
图文详解丨iOS App上架全流程及审核避坑指南
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。
|
2月前
|
安全 网络安全 数据安全/隐私保护
iOS App的打包和上架流程
iOS App的打包和上架流程
|
2月前
|
Linux 数据安全/隐私保护 虚拟化
IOS上架流程详解,包含审核避坑指南!(下)
.在Profile Name栏里输入一个名字(这个是PP文件的名字,可随便输入,在这里我用工程名字,便于分别),然后点击Generate
|
2月前
|
存储 iOS开发 开发者
IOS上架流程详解,包含审核避坑指南!
IOS上架流程详解,包含审核避坑指南!