前置条件

你得有一个实名认证的支付宝账号,企业号个人号都行,但个人号额度低很多。还得有个已备案的域名,没备案的话支付宝那边审核会卡住。之前写过一篇关于备案重要性的文章——支付平台ICP备案到底有多重要?没备案的三个真实后果,你可以看看,不备案连接口申请页面都提交不了。

第一步:去支付宝开放平台注册开发者

做什么:打开open.alipay.com,用你的支付宝账号登录,点"成为开发者"。怎么做:填一堆基本信息,公司或个人选一下,然后进入控制台。为什么这样做:支付宝的所有支付接口都在这个平台里申请和管理,不走商户平台那套流程。常见坑:很多人跑到商户平台去找"免签约接口",那里只有签约商户才能用,个人开发者入口在开放平台。

我上个月有个朋友,在商户平台找了半天没找到,跑来问我是不是接口关了。我说你走错门了。

第二步:创建应用并开通当面付

做什么:在控制台里点"创建应用",选"网页应用"或"移动应用"都行,看你的场景。怎么做:应用创建好后,在"功能列表"里找到"当面付",点开通。它会让你填一些应用的信息,比如应用名称、应用图标、应用简介。为什么这样做:当面付是支付宝目前对个人开发者最友好的支付接口,不需要营业执照也能申请,而且费率相对低。常见坑:应用审核需要几个工作日,期间别闲着,先去准备下一步的配置。

第三步:配置密钥和回调地址

做什么:生成RSA密钥对,把公钥上传到支付宝开放平台,私钥保存在服务器上。怎么做:支付宝官方有密钥生成工具,下载下来点几下就生成了。然后把公钥复制粘贴到"应用公钥"那里。回调地址填你的域名+/notify,比如https://你的域名.com/notify。为什么这样做:密钥是你和支付宝之间通信的凭证,回调地址是支付宝通知你支付结果的通道,两个缺一不可。常见坑:回调地址必须用HTTPS,而且不能带参数。有人喜欢在地址后面加?source=xxx,那样支付宝会直接忽略掉整个回调。

验证方法

怎么确认你做对了:用沙箱环境测一下。支付宝开放平台提供沙箱账号和沙箱钱包,在沙箱里发起一笔支付,金额随便填一分钱都行。支付成功后,去看你的服务器日志,确认有没有收到支付宝发来的异步通知。如果沙箱里都收不到,那就别上生产环境了。

如果出问题

最常碰到的坑是签名验签失败。支付宝那边报"签名错误",通常是你上传的公钥和服务器上用的私钥不匹配,或者你在代码里拼接参数的时候顺序搞错了。快速解法:用支付宝官方的SDK,别自己手写签名逻辑,官方SDK已经处理好了拼接顺序和编码问题。

还有个坑是回调地址配置后不生效。这个我在之前那篇关于易支付回调地址设置不生效的文章里详细写过,情况其实差不多——检查一下你有没有在多个地方配置了回调地址,或者路径里有没有少写斜杠。支付宝那边对回调地址格式要求很严格,多一个字符少一个字符都不行。