Xero API Webhook返回401仍报错:响应未被平台识别问题排查
Xero Webhook签名验证:响应401不生效问题解决
我按照Xero官方文档配置应用的Webhook,编写了如下签名验证代码:
function xero_payment_detected(){ $xero_wh_key = $_ENV['my_key']; $payload = @file_get_contents('php://input'); $payload_hash = base64_encode(hash_hmac('sha256', $payload, $xero_wh_key, true)); $headers = getallheaders(); $xero_validation_header = $headers['X-Xero-Signature']; $is_valid_payload = ($payload_hash === $xero_validation_header); if( $is_valid_payload ){ http_response_code(200); logging_function("test 1"); } else { http_response_code(401); logging_function("test 2"); } // end if else }// end fn
日志显示Xero发送的有效、无效请求均能触发对应分支,但Xero平台持续提示“对签名无效的payload响应不是401”。当前站点为HTTPS,响应时间远低于Xero要求的5秒。
已解决:http_response_code(401)未正确设置响应码,改用header("HTTP/1.1 401 Unauthorized")即可修复,原因可参考PHP官方文档相关说明。
内容的提问来源于stack exchange,提问作者Chenille 'Shay' Pottle
相关产品推荐
相关产品推荐

