开发前准备(目前使用支付宝沙箱测试环境)
应用id - Appid
商户私钥 – 发起支付时必须参数(可以用工具生成)
支付宝公钥 – 支付成功之后验签使用
开发流程
客户端(安卓):
1.客户端向服务器发起支付请求(必要参数-具体价格, 其他参数任意), 服务器返回包装好的参数(订单详情+sign), 客户端根据参数向支付宝发送请求(需要用到支付提供的sdk)
服务器(nodejs)
1. 接受客户端的支付请求,封装参数(组装参数+生成签名),返回客户端
2. 客户端支付成功之后,服务器接收支付宝发起的回调,服务器需要接收支支付宝的回调响文参数,并做一次验签(非常重要),验签成功后处理业务。
采坑总结:
1. 支付宝回调时的响应头与其他不一致,服务器需要做处理,不然无法得到回调参数。
2. 回调时的公钥是支付宝公钥,不是应用公钥,否则会导致验签失败
3. 支付宝可能会出现多次回调的问题,即使你已经通知他支付宝成功,所以在回调的时候,需要根据自己的业务逻辑的处理重复的问题。