一、下载DEMO和SDK。打开连接https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.YGttW9&treeId=54&articleId=104509&docType=1
解压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”,让支付宝通知服务器知晓已执行完毕。
五、商户开发。商户根据自己的业务需求做相应的业务逻辑。
注:请将签名放在服务端。