php - PHP PayPal Catalog REST API 不会显示新产品
问题描述
自从使用带有 PHP curl 对象的 Catalog API 添加了几个新的沙盒产品后,发生了这样的事情:
- 使用 REST API 可以看到这两个产品。
- 但我只能使用 PATCH 编辑第二个。更新另一个的调用不会出错,它们只是不做任何事情。
- 我可以使用 API 添加新产品,同样没有错误,但之后它们不会出现在列表 API 响应中。
- 当尝试添加与我之前明显添加但不可见的 ID 相同的新产品时,响应数组中有一个 DUPLICATE_RESOURCE_IDENTIFIER 错误,确认它在某处。
到底是怎么回事?
这是代码:
添加产品
$ch = curl_init();
$authorization="Authorization: Bearer ".$authorization;
$url=$sbx=='1'?$url='https://api.sandbox.paypal.com/v1/catalogs/products':'https://api.paypal.com/v1/catalogs/products';
echo $url."<br><br>";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"name": "xxxxxx","description": "App 005", "type": "SERVICE", "category": "SOFTWARE", "id": "RBW00005"}');
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = $authorization;
$headers[] = 'Paypal-Request-Id: FGAS005';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
$response = json_decode($result);
print_r($response);
echo "<br><br>";
print_r(curl_getinfo($ch));
$response="";
curl_close($ch);
列出产品
$ch = curl_init();
$authorization="Authorization: Bearer ".$authorization;
$url=$sbx=='1'?$url='https://api.sandbox.paypal.com/v1/catalogs/products?page_size=2&page=1&total_required=true':
'https://api.paypal.com/v1/catalogs/products?page_size=2&page=1&total_required=true';
echo $url."<br><br>";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = $authorization;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
$response = json_decode($result);
print_r($response);
echo "<br><br>";
print_r(curl_getinfo($ch));
$response="";
curl_close($ch);
并且它不会丢失帖子字符串周围的方括号。
如果我把它们放进去,我会收到一个“格式错误的请求”错误。没有方括号,没有错误,但也没有可见的产品。
谢谢阅读。
解决方案
刚刚注意到您似乎在硬编码请求 ID 标头:
$headers[] = 'Paypal-Request-Id: FGAS005';
确保你永远不会这样做;对于每个独立的请求,该标头的值应该是唯一的,或者更简单地说根本没有设置(注释掉这一行)
推荐阅读
- reactjs - 由于有时会在我的 UI 中加载数据,因此我对初始结果进行了硬编码以避免出现空白屏幕,我们是否有适当的解决方案?
- android - 错误:包路径无效。有效的系统映像路径是:ository... null
- c++ - 如何关闭每个文件或每个功能的检查?
- huawei-mobile-services - 使用伪类进行卡片开发的案例研究
- mongodb - 在 MongoDb 中存储 IOT 数据
- algorithm - 这个问题是否可以使用多项式时间算法,还是 NP-hard 问题?如果是,有人可以帮我吗?
- firebase - 为什么我从 Firebase 中提取数据时只有 1 个数据?
- reactjs - Elastic Beanstalk - 上传时更改 package.json 中的代理地址
- azure-ad-b2c - Azure AD B2C 登录页面很慢
- javascript - 延迟添加背景颜色到文本一秒钟