接收不到shopify webhook 发送post请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接收不到shopify webhook 发送post请求相关的知识,希望对你有一定的参考价值。
参考技术A 接收不到shopifywebhook发送post请求,解决方法如下:执行此操作的最佳方法是设置webhooknotification,该ojit_a向服务器发送HTTPPOST请求,然后让服务器捕获POST并将其解析为XML。然后,我将通过一个php脚本读取XML,该脚本将更新我的数据库。
我的php没问题,但是我似乎无法弄清楚是如何在服务器上捕获webhook的。Webhook询问我要发送POST请求的URL。发现可以通过html,php,Access-Control-Allow-Origin等多种方式捕获POST请求。真正了解如何做到这些。我尝试过使用HTML隐藏操作表单,但似乎无法捕获XML。
我要做的就是让Webhook发送POST请求,并将其捕获为.xml。这样我就可以在每天结束时阅读xml,并相应地更新数据库。
PayPal Webhook 不发送 POST 数据
【中文标题】PayPal Webhook 不发送 POST 数据【英文标题】:PayPal Webhook sends no POST data 【发布时间】:2020-06-23 23:18:36 【问题描述】:成功配置我的 PayPal webhook 以接收所有事件的通知。
当事件发生时,PayPal 会调用我的 webhook(一个简单的脚本)...但不会随它发送任何 POST 数据...
当然,除了 $_SERVER,所有 PHP 数组都是空的($_POST、$_GET、$_REQUEST)。
发生了什么事? webhook 模拟器说事件发送/排队成功...
$_SERVER 数组包含建议的 HTTP_PAYPAL_... 标头和所有内容......但 $_POST 数组为空。
我的webhook是这样写的……
<?php
require ('./ace-includes/ace_log.php');
ace_log(print_r($_POST, true));
ace_log(print_r($_REQUEST, true));
ace_log(print_r($_GET, true));
ace_log(print_r($_SERVER, true));
ace_sendlog("NOTIFY SCRIPT CALLED");
?>
【问题讨论】:
什么是$_SERVER['HTTP_CONTENT_TYPE']
?
【参考方案1】:
我想通了……
您不能使用 $_POST 来获取数据....
数据包含在发送到脚本的 HTTP 文件中。
在这种情况下,您必须使用
file_get_contents('php://input');
获取数据。
因此,对于 PayPal PHP webhook,您可以这样做......
$json = file_get_contents('php://input');
$data = json_decode($json);
这行得通,现在我正在获取所有数据。
这确实应该记录在某个地方......任何地方......但它不是......对于初级 PHP 程序员来说并不明显。
【讨论】:
好吧,如果您阅读了php.net/manual/en/reserved.variables.post.php 的 PHP 文档,关于 $_POST :“使用 application/x-www-form- 时通过 HTTP POST 方法传递给当前脚本的变量关联数组urlencoded 或 multipart/form-data 作为请求中的 HTTP Content-Type。” 但是 PayPal Webhook 不使用该内容类型;它发送 JSON 格式的数据。有很多地方都在讨论如何使用 PHP 通过 HTTP 读取 JSON;看来你找到了其中一个来解决这个问题。以上是关于接收不到shopify webhook 发送post请求的主要内容,如果未能解决你的问题,请参考以下文章
在NestJS 中添加对Shopify 的WebHook 验证
Shopify 在 Scala 中验证 webhook 调用
python 用于Shopify Webhook的HMAC验证的Python视图装饰器。
Google PubSub / Gmail Webhook:发送电子邮件时始终从 PubSub 接收多个 POST 请求