作为一个支付宝新手,这里记录下网站接入支付宝收款的流程。
多看看支付宝官方文档,了解整个支付流程,看不懂的没关系,跳过。
步骤如下:
- 在支付宝开放平台创建网站应用
https://openhome.alipay.com/develop/manage
创建完,就有appid了,进入应用详情,做下一步密钥的设置 - 设置接口加签方式
- 密钥
- 证书
两种方式二选其一,这里我选密钥方式
- 开发代码
- 下载沙箱版支付宝app
https://open.alipay.com/develop/sandbox/tool/alipayclint - 沙箱版支付宝应用详情、买家和卖家信息
https://open.alipay.com/develop/sandbox/app
沙箱示例代码
- python版:https://opendocs.alipay.com/common/02np8q?pathHash=7847ca4f
- nodejs版:https://opendocs.alipay.com/common/02np8r?pathHash=14716568
- .net版:https://opendocs.alipay.com/common/02nk11?pathHash=62b67e79
- php版:https://opendocs.alipay.com/common/02nk10?pathHash=a7475006
- java版:https://opendocs.alipay.com/common/02kkv2?pathHash=358ff034
支付宝也提供了对应的demo代码:
https://opendocs.alipay.com/open/54/106682
调试
开发环境启动,访问开发环境页面,用沙箱版支付宝app扫描,确认支付,跳转到return_url解释
- notify_url,异步通知,即支付宝服务器主动通知商户网站里指定页面路径,返回订单信息。
- return_url,买家支付成功后的同步通知页面,即支付宝处理完成后,浏览器当前页面自动跳转回商户网站中指定页面的http路径,同时返回订单信息。
区别:
return_url用于接收同步通知,notify_url用于接收异步通知。
主要区别如下:
1、接收方法不同
同步通知是在同步返回的页面使用get方式来获取的,异步通知是使用post方式发送到异步地址上的,只能使用post方式来接收;
2、返回的参数不同
同步通知返回的参数比异步通知返回的参数是要少一些的,最明显的就是异步返回参数会返回trade_status(交易状态)参数 但是同步返回的参数是没有的,所以建议使用异步返回的参数来确认交易是否成功 如果trade_status=TRADE_SUCCESS 表示就是交易成功了;
3、发送的时间不同
一般情况下,异步通知比同步通知稍慢(几乎无感知)。同步和异步通知的发送和网络环境、服务器处理速度等因素关系较大,具体是先接收到同步通知还是异步通知,建议以实际接收到的为准。
4、参数返回的逻辑不一样
(1)同步通知是在支付成功后的页面跳转,一般是用于展示给用户的;
付款成功后会跳转到商户请求参数中传入的return_url地址页面。
(2)异步通知参数是直接由支付宝服务器发送到商户的异步地址上的,不存在页面跳转是直接的服务器交互。
注:同步验签和异步验签方式相同。
注意:
- return_url 必须是 http 或 https 开头的完整的 url 地址。
- return_url 地址后不可带自定义参数。
- 设置 return_url 时不要进行转义、urlencode 等数据处理。
- 当面付和APP支付不支持 return_url 参数,即使设置了也没有任何效果。
- 同步通知参数只可参考,不能作为判断是否支付成功的依据。
特别注意:
同步通知只有支付宝才会发送给你,所以基本不用验证。
异步通知,记得验证签名,这里有支付宝提供的验签方式:https://opendocs.alipay.com/open/04ij9t
还没写完,后面继续写。
欢迎关注微信公众号,你的资源可变现:【乐知付加密平台】
一起学习,一起进步。
