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

开发者社区> 支付宝开发者社区> 正文

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

简介: 一、下载DEMO和SDK。打开连接https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.YGttW9&treeId=54&articleId=104509&docType=1  解压DEMO文件。


解压DEMO文件。 WS_MOBILE_PAY_SDK_BASE\支付宝钱包支付接口开发包2.0标准版(201501215)\DEMO\客户端demo目录下有2个压缩文件。 IOS和Android
 二、 配置DEMO。1. 导入Import
 

选择Andorid程序。
 




2. 配置参数 找到 src/com.alipay.sdk.demo/PayDemoActivity.java文件打开。 需要配置 PARTNER:合作身份者ID,以2088开头由16位纯数字组成的字符串。即签约账号。请参考“PID和密钥管理”。 SELLER:一般情况下收款账号就是签约账号。 RSA_PUBLIC:支付宝RSA公钥。请参考 查看支付宝公钥。” RSA_PRIVATE:商户方RSA私钥。请参考 PID和密钥管理 复制上去的私钥字符串请使用pkcs8格式私钥,导入私钥路径请使用原始的私钥pem文件。


配置完成后,已经可以正常运行且支付成功。运行接口代码示例: 


点击支付:
 

3. 配置业务参数 找到src/com.alipay.sdk.demo/PayDemoActivity.java文件打开 里面有一个  pay 方法。如下图,这就是DEMO运行中点击支付所触发的方法。 在这里我们可以看到订单的信息来自于getOrderInfo这个方法。 


在这里就可以把你所需要的参数添加到响应字符串中,根据文档参数规范添加。 


拼接成的待请求参数如下:
 

使用alipay.pay方法接收支付结果。
 

同步返回:
resultStatus={9000};memo={处理成功};result={partner="2088501624560335"&seller_id="***"&out_trade_no="1229010038-1111"&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"&success="true"&sign_type="RSA"&sign="SqxvaqGNpkfGqbyNUlc8a9CCFwQvEN9KUc+rU0Pf6wV5c6K5IRN3SKsOBReDzhNvM4SAPOeiKjiLs0LqJDUYVMadxrasawKcM70fm9OsqbqYXoLaESI/8WPtkcd/uz03b9DpR1pGneVmrEUfUnothAgoKvWnbq4cxA0/irl7cMM="}
此时用resultStatus做业务逻辑如图
 

三、运行逻辑详解1、拼接订单信息orderInfo(按指定格式把所需参数拼接起来) 


2、对订单信息orderInfo 进行RSA签名,使用SignUtils.java中的sign方法。得到的sign需要URL编码。 


3、拼接成完整的支付宝请求参数。
 

   4、调用SDK支付接口,且获取支付同步返回信息。
 

四、异步通知1. .NET开发异步通知逻辑
(1)打开“notify_url.aspx.cs”文件(notify_url.aspx需保证无任何HTML代码)。在注释指定位置“//请根据您的业务逻辑来编写程序”写入商户的业务逻辑代码。请参考“业务逻辑处理”。 
(2)用POST方式获得这些通知返回数据。对这些数据做签名验证、是否是支付宝发来的请求的验证。得到组做空值过滤、参数名首字母升序的排序、待签名数组转变成待签名字符串。对该字符串做RSA签名验证(这一系列动作为调用app_code/AlipayNotify.cs文件中的GetSignVeryfy函数完成),得到布尔类型的验证结果。 


(3)根据获得的参数notify_id,来验证是否是支付宝发来的请求(调用app_code/AlipayNotify.cs文件中的GetResponseTxt函数)。先拼接完整的验证请求链接,
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
(4)再用远程模拟HTTP请求的方式请求到支付宝,此时支付宝返回的信息是纯HTML文本“true”,页面上再也无其他任何字符。具体请参见“验证是否是支付宝发来的通知”。 
(5) 根据签名验证结果、是否是支付宝发来的通知的验证结果,二者全部为true的情况下,则验证通过(调用app_code/AlipayNotify.cs文件中的Verify函数)。此时商户可做些简单的业务逻辑,但请务必不要在当前页面做资金相关变动的业务逻辑处理。 
(6) 验证通过后,方可执行对资金相关的业务逻辑代码。需要注意的是:已经对同一笔 交易做过业务处理后,不要再做重复处理,避免资损。
(7) 商户的业务代码正常且成功执行后,需在notify_url的当前页面中输出纯文字“success”,让支付宝通知服务器知晓已执行完毕。 
2. JAVA开发异步通知逻辑
(1)打开“notify_url.jsp”文件(notify_url.jsp需保证无任何HTML代码)。在注释指定位置“//请根据您的业务逻辑来编写程序”写入商户的业务逻辑代码。请参考“业务逻辑处理”。
(2)用POST方式获得这些通知返回数据。对这些数据做签名验证、是否是支付宝发来的请求的验证。得到组做空值过滤、参数名首字母升序的排序、待签名数组转变成待签名字符串。对该字符串做RSA签名验证(这一系列动作为调用AlipayNotify.java文件中的getRSASignVerify函数完成),得到布尔类型的验证结果。
 

(3)根据获得的参数notify_id,来验证是否是支付宝发来的请求(调用AlipayNotify.java文件中的verifyResponse函数)。先拼接完整的验证请求链接,
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
(4)再用远程模拟HTTP请求的方式请求到支付宝,此时支付宝返回的信息是纯HTML文本“true”,页面上再也无其他任何字符。具体请参见“验证是否是支付宝发来的通知”。
(5) 根据签名验证结果、是否是支付宝发来的通知的验证结果,二者全部为true的情况下,则验证通过(调用AlipayNotify.java文件中的Verify函数)。此时商户可做些简单的业务逻辑,但请务必不要在当前页面做资金相关变动的业务逻辑处理。 (6) 验证通过后,方可执行对资金相关的业务逻辑代码。需要注意的是:已经对同一笔交易做过业务处理后,不要再做重复处理,避免资损。
 (7)商户的业务代码正常且成功执行后,需在notify_url的当前页面中输出纯文字“success”,让支付宝通知服务器知晓已执行完毕。  
3. PHP 开发异步通知
(1) 打开“notify_url.php”文件(notify_url.php需保证无任何HTML代码)。在注释指定位置“//请根据您的业务逻辑来编写程序”写入商户的业务逻辑代码。请参考“业务逻辑处理”。
(2)用POST方式获得这些通知返回数据。对这些数据做签名验证、是否是支付宝发来的请求的验证。空值过滤、参数名首字母升序的排序、待签名数组转变成待签名字符串。对该字符串做RSA签名验证(这一系列动作为调用lib/alipay_notify.class.php文件中的rsaVerify函数完成),得到布尔类型的验证结果。 


(3)根据获得的参数notify_id,来验证是否是支付宝发来的请求(调用lib/alipay_notify.class.php文件中的getResponse函数)。先拼接完整的验证请求链接,
https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396712354¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8jwyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
(4)再用远程模拟HTTP请求的方式请求到支付宝,此时支付宝返回的信息是纯HTML文本“true”,页面上再也无其他任何字符。具体请参见“验证是否是支付宝发来的通知”。 
(5)根据签名验证结果、是否是支付宝发来的通知的验证结果,二者全部为true的情况下,则验证通过(调用lib/alipay_notify.class.php文件中的verifyNotify方法)。此时商户可做些简单的业务逻辑,但请务必不要在当前页面做资金相关变动的业务逻辑处理。
(6)验证通过后,方可执行对资金相关的业务逻辑代码。需要注意的是:已经对同一笔交易做过业务处理后,不要再做重复处理,避免资损。 
(7)商户的业务代码正常且成功执行后,需在notify_url的当前页面中输出纯文字“success”,让支付宝通知服务器知晓已执行完毕。    
五、商户开发。商户根据自己的业务需求做相应的业务逻辑。
注:请将签名放在服务端。

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

分享:

支付宝开发者社区已全面迁移至https://forum.alipay.com/mini-app

官方博客
常用链接