支付宝支付开发要点记录

完整的走完一个支付业务流程后,发现还是有不少需要注意的地方,为了避免时间长了忘记一些细节,这里先对一些流程和要点进行记录。


整体业务流程

支付宝支付分很多种支付方式,例如wap、web、app、当面付(扫码和条码)等,细节上有区别,但是大的流程其实都差不多,尤其是各个支付方式的前期准备工作都差不多,整理后大致如下:

  1. 创建支付宝账号并登陆;
  2. 创建应用;
  3. 添加相应支付功能并签约,需要营业执照;
  4. 根据相应支付功能api说明进行开发,而大致的开发流程又基本如下:

    1.封装请求支付信息content

  5. 封装待签名请求信息
  6. 待签名参数排序
  7. 根据文档说明下载私钥RSA签名验签工具生成私钥并与公钥验证
  8. 使用私钥对上边排序过的参数rsa2签名加密
  9. 发起支付请求
  10. 选择性同步结果(wap前台表单提交就没有)
  11. 异步结果通知

要点

知之不若行之,支付api看起来比较简单,但是真正的从头到尾来一遍,直到最终成功支付,还是会遇到各种各种的问题,以下是目前觉得有必要注意并记录的一些要点:

  1. 不同的支付方式,一定注意method参数不要填错,例如wap就是alipay.trade.wap.pay,app就是alipay.trade.app.pay。更多具体的参数值,都可以参考开放平台的文档说明:
    https://docs.open.alipay.com/api

2.wap支付有两种方式,一种是页面跳转,一种是系统调用,可以根据需要选择。
更多内容可以参考开放平台文档:
https://docs.open.alipay.com/203/105285/
需要注意的是,页面跳转的方式需要请求后跳转到到支付宝支付的H5界面,开放平台api文档说需要前台form表单方式提交支付请求到支付宝。前台提交就需要后台封装好数据签名加密后返回前台然后前台使用表单方式提交到支付宝。
而实际使用时发现其实直接后台提交也是可以的,使用httpclient的form表单方式提交到支付宝一样可以正常跳转支付。

3.待签名参数排序时,一定要是根据参数首字母排序,并且过滤掉空值的参数,否则签名不通过。
而签名加密实际是先签名后还要进行base64编码,详细步骤可以参考开放平台的文档:
https://docs.open.alipay.com/291/106118
我自己实现的过程中更,签名这一块实际是抄的别人代码,签名加解密这一部分还是我急需补充的技术点。

4.支付宝支付有新旧接口区分,接口地址、数据格式、参数多少等都有一定区别,也需要注意。不过,现在接入支付宝支付应该都会是使用新接口了。

5.支付宝有提供沙箱环境,但是实际测试发现似乎有些问题,同样的代码,只是把参数值以及接口等改为沙箱环境所需要的,结果却不能成功支付。

6.开放平台api中的参数说明与实际接口似乎有些不配套,也可能并没有严格校验。有些说了必选的参数,实际是可以不选,例如下边这个,我在wap支付的时候就没有设置,但是依然成功的支付。
quiturl


参考代码

涂宗勋的个人聚合支付demo

推荐文章