公司最近准备在项目中添加购物车功能,说到购物车,支付宝是必须的,下面我们来讨论一下如何快速集成支付宝SDK。
支付宝SDK已更新至2.0版本,相较于上一版SDK,该SDK代码更加简洁,集成更加方便快捷。
摘要:准备工作
如果你是公司内部开发,可以让相关部门跟支付宝签约,申请卖家支付宝账号,审核可能需要3-5个工作日,审核通过后支付宝会邮件或者电话提醒,所以不用担心审核什么时候通过。
1:下载支付宝官方SDK
打开上面的链接,下载下面红线标注的SDK,不要下载错,下面是支付宝SDK支持的各种支付方式列表。
下载并解压后,会得到以下结构目录
打开移动支付接口SDK2.0标准版,在DEMO下找到客户端演示下的支付宝移动支付版本,解压后的目录结构如下
-sdk-里面包含了我们要用到的jar文件,也就是官方的demo(demo不能直接运行,需要自己重新配置一下)
2:在我们强大的里面创建一个新项目,然后在文件中添加如下授权
将上面-sdk-里面的三个jar文件复制到我们项目下的libs目录下之后,结构图如下
现在我们可以用代码来实现它
3:代码实现
这里我们直接使用官方的布局文件吧,(*^__^*)呵呵……
点击支付时我们会直接调用支付宝相关接口进行支付,点击查账时会检查当前环境中是否有可用的支付宝账户,可选。
上面贴出的代码是调用支付宝的核心代码,我们来依次看一下每个方法。
83 行
这个方法里有两个参数,这里需要解释一下,第一个是157行的合作伙伴身份ID(),这个参数是在支付宝账户审核通过后,登录支付宝点击PID/key获取的。
之后支付宝分配
如下图红色部分
第二个就是160行的卖家支付宝账号,这个没什么好多说的,就是我们申请的支付宝账号。
第三个是170行的服务端异步通知页面路径。首先我们用支付宝支付之后,支付宝会返回两个通知给我们。一个是同步的,就是我们点击支付之后支付宝直接反馈给我们客户端的信息。我们可以直接获取到,根据反馈的结果初步判断交易是否成功。第二个是服务端异步通知,这个异步通知是支付宝的服务端发送给我们服务端的信息,我们在客户端是无法直接获取到的。支付宝的服务端怎么知道我们服务端的路径呢?那就是这个参数的作用。我们给支付宝服务端一个路径,当订单状态发生变化的时候它就会给我们一个反馈给服务端,告诉服务端这笔交易的状态。 如果服务器判定交易成功,就必须返回一个给支付宝服务器,否则服务器会因为不知道交易是否完成而一直给我们异步通知(一般25小时内通知8次,频率为2m 10m 10m 1h 2h 6h 15h)。我们一般在收到异步通知的时候,才会更新订单的状态。
另一种方法是第 162 行,它生成唯一的订单号。
说完了这个方法中的参数,我们再回到我们的支付方法中,在支付方法的第 84 行,我们可以看到
符号=符号();
那么这个 sign 方法起什么作用呢?我们来看看。
可以看到这个方法很简单,只有一行代码。这个是什么?这是支付宝SDK给我们提供的一个工具类,在官方的demo里可以找到,这里就不贴代码了。
我们可以看到这个方法里面有一个叫这个的东西,这个东西就是我们生成的商户的私钥,我们来看看怎么生成的。
我们解压下载的SDK之后,会看到DEMO文件下面有一个文件夹,打开其目录下的bin文件夹,运行.exe文件,如下图
输入“-out .pem 1024”命令,回车,当前bin文件目录下会多出一个.pem文件,该文件即为原始商户私钥(PHP开发语言中需要该文件,请妥善保存),以下是命令正确执行截图:
输入命令“rsa -in .pem - -out .pem”回车后,当前bin文件目录下会多出一个.pem文件,该文件即为原始商户公钥(PHP开发语言中需要该文件,请妥善保存)。以下是命令正确执行截图:
输入命令“- -PEM -in .pem-PEM-”并回车,生成编码后的私钥
右键单击窗口顶部边缘,选择“编辑→标记”,选择需要复制的文本
上面白色的部分就是我们上面提到的参数的值,注意值里面不能有换行符或者空格,必须一行完整的显示出来。
接下来很重要的一步就是上传商户公钥,我们需要上传上面生成的商户公钥。
上传地址需要登录
点击查看密钥,因为我已经上传到这里了,所以可以查看,
然后点击保存,我这里是修改的,然后点击查看支付宝公钥,这里的公钥就是我们程序里的
上面两句可以直接在 中声明。
支付main方法86行方法如下
点击检查账户,执行以下逻辑
然后我们定义一个来处理请求
好了,连接支付宝就到这里,还有什么不清楚的可以一起讨论(好累啊)
)