Skip to content
赞助

接收支付宝回调 ​

方法名参数返回值
callback无/array/ServerRequestInterfaceCollection

支付宝 trade 异步通知为 form 参数格式(无论触发通知的接口走 V2 还是 V3 管道,报文格式相同),SDK 统一自动完成验签——除去 sign/sign_type 后按字典序组串、RSA2 验签,使用租户配置的支付宝公钥证书,且验签强制执行、无法关闭。

验签通过后返回 Collection,内容为完整的通知参数(含 sign/sign_type);应答为字面量 success(与 V2 相同)。

例子 ​

推荐使用 ServerRequestInterface 传参(swoole 等常驻内存环境必须使用该方式):

php
use Psr\Http\Message\ServerRequestInterface;

Pay::config($this->config);

// $request 为 PSR-7 ServerRequestInterface实例
// 是的,你没有看错,就是这么简单!验签已自动完成
$result = Pay::alipay()->callback($request);

return Pay::alipay()->success();

第一个参数 ​

null ​

如果没有传参,或传 null,则 SDK 会自动识别当前的回调请求并处理(ServerRequest::fromGlobals())。

WARNING

建议仅在 php-fpm 下使用,swoole 方式请使用 ServerRequestInterface 参数传递方式

ServerRequestInterface ​

推荐传递此参数,传递后 SDK 会自动进行后续处理。

array ​

也可以自行解析请求参数后传递一个 array(form 参数键值对),SDK 会将其作为通知参数进行后续处理;此外还支持 { 'body': '...', 'headers': [...] } 形态(webhook 转发场景),SDK 会自动解析 form 串。

第二个参数 ​

第二个参数主要用来传递相关自定义变量,例如在回调时切换租户:Pay::alipay()->callback($request, ['_config' => 'page']) 会切换为 page 租户的配置进行验签。

TIP

多租户场景下,不同租户的 notify_url 建议按业务分开配置;共用回调入口时,可按通知参数(如 app_id)自行分流后,通过 callback($request, ['_config' => 'xxx']) 指定对应租户验签。

事件 ​

CallbackReceived 事件携带的 $contents 参数为解析后的通知参数数组(V2/V3 统一)。事件的使用方式请参考 事件。

应用回调 ​

应用回调(appCallback())为 APP 支付(V2 管道)专属,用法与 V2 一致,请参考 确认回调。

Released under the MIT License.