Android 外接sdk之支付宝
支付宝开放平台 最新sdk可以访问开放平台进行下载。
以下为流程和注意事项。
1.名词简介
请求 手机客户端以字符串形式把需要传输的数据发送给接收方的过程。
返回 支付宝以字符串形式直接把处理结果数据返回给手机客户端。
通知 服务器异步通知。支付宝根据得到的数据处理完成后,支付宝的服务器主动发起通知给商户
的网站,同时携带处理完成的结果信息反馈给商户网站。
敏感词 带有敏感政治倾向、暴力倾向、不健康色彩或不文明的词。
2.准备工作
商户签约和密钥配置。
3.SDK集成流程
解压alipay_lib.zip,将解压出来alipay_lib拷贝到Eclipse workspace,通过Eclipse
import 该工程,并在此工程的Properties->Android中选中为library 工程。
将alipay.jar复制至商户应用工程的libs目录下,通过Java Build Path导入进工程。
4.修改Manifest
<activity
android:name="com.alipay.android.app.sdk.WapPayActivity"
android:screenOrientation="portrait">
</activity>
5.订单数据生成
在调用快捷支付SDK时,需要提交订单信息info,其中参数以key=”value”形式呈
现,参数之间以“&”分割,所有参数不可缺。
6.接口调用
获取Alipay支付对象调用支付,此接口方法实现为同步调用,将阻塞商户应用UI
线程,所以调用此接口需启动新线程,并使用looper 为main looper的Handler
对象与UI线程传递消息。
7.支付结果获取和处理
调用pay方法支付后,将通过2种途径获得支付结果:
同步返回
商户应用客户端获取pay( )返回的字符串信息,在应用内直接处理支付结果。
异步通知
商户需要提供一个http协议的接口,包含在参数里传递给快捷支付,即notify_url。
支付宝服务器在支付完成后,会以POST方式调用notify_url,以xml数据格式传
输支付结果。
8.如何获得PID与密钥
使用签约支付宝账号登录“商家服务”平台中的“我的商家服务”,点击“查询PID、Key”,即可查看到签约支付宝账号、合作者身份ID(PID)的信息。输入支付密码,查询key。
9.RSA密钥生成与使用
打开openssl文件夹下的bin文件夹,执行openssl.exe文件,输入“genrsa -out rsa_private_key.pem 1024”命令,回车后,在当前bin文件目录中会新增一个rsa_private_key.pem文件,其文件为原始的商户私钥(请妥善保
存该文件,PHP开发语言中需要使用该文件)
10.生成RSA公钥
输入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回车
后,在当前bin文件目录中会新增一个rsa_public_key.pem 文件,其文件为原始
的商户公钥(请妥善保存该文件,PHP开发语言中需要使用该文件)
11.生成PKCS8编码的私钥
输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM
-nocrypt”并回车,保存到一个文本文件,可随意命名,只要知道这个是PKCS8格式的私钥即可(请
妥善保存该文件)
12.RSA密钥使用逻辑:
商户在使用RSA签名方式的支付宝接口时,真正会用到的密钥是商户私钥与支付
宝公钥。商户上传公钥给支付宝,支付宝把公钥给商户,是公钥互换的操作。这就
使得商户使用自己的私钥做签名时,支付宝端会根据商户上传的公钥做验证签名。
商户使用支付宝公钥做验证签名时,同理,也是因为支付宝用支付宝私钥做了签名。
13.业务数据传递
支付宝提供的业务参数为支付宝需要商户传递过来的数据要求。商户只需要根据自
己的业务需求,在业务逻辑代码运行时把这些动态数据以赋值给变量的形式,再通
过支付宝接口本身的接口逻辑,传递给支付宝系统,让支付宝系统可识别。
举例说明,商户要把某笔订单的数据传递给支付宝。那么商户需要先根据支付宝的
参数要求,从自己的下单系统中拿到付款总金额(total_fee)、商户的订单号
(out_trade_no)、订单名称(subject)等数据,再把这些数据一个一个以值的形
式赋给对应的变量。再通过代码逻辑,把变量组合及加工成一次可以发送给支付宝
的请求。
注意事项:传递参数之前必须对参数进行签名,就是调用sign方法,再加一些参数进行传送,务必分清哪些参数应该签名。
如有问题请留言,转载注明出处。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。