PHP贝宝目录REST API将不会显示新产品
由于使用带有PHP curl对象的Catalog API添加了两个新的沙盒产品,因此发生了以下情况:PHP贝宝目录REST API将不会显示新产品,php,api,curl,paypal,catalog,Php,Api,Curl,Paypal,Catalog,由于使用带有PHP curl对象的Catalog API添加了两个新的沙盒产品,因此发生了以下情况: 使用RESTAPI可以看到这两个产品 但我只能用补丁编辑第二个。更新另一个的调用不会出错,它们只是不做任何事情 我可以使用API添加新产品,同样没有错误,但它们不会出现在列表API响应中 当尝试添加一个与我之前添加的产品ID相同但不可见的新产品时,响应数组中出现重复的资源标识符错误,确认它在其中的某个位置 到底发生了什么事 代码如下: 添加产品 $ch = curl_init()
$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;
$url=$sbx=='1'?$url='https://api.sandbox.paypal.com/v1/catalogs/products':'https://api.paypal.com/v1/catalogs/products';
回显$url。“
”;
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”}”);
卷曲设置($ch,卷曲设置桩,1);
$headers=array();
$headers[]=“内容类型:application/json”;
$headers[]=$authorization;
$headers[]=“贝宝请求Id:FGAS005”;
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
$result=curl\u exec($ch);
if(旋度误差($ch)){
echo“Error:”.curl_Error($ch);
}
$response=json_decode($result);
打印(回复);
回声“
”;
打印(curl_getinfo($ch));
$response=“”;
卷曲关闭($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);
$ch=curl_init();
$authorization=“授权:持票人”。$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';
回显$url。“
”;
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$headers=array();
$headers[]=“内容类型:application/json”;
$headers[]=$authorization;
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
$result=curl\u exec($ch);
if(旋度误差($ch)){
echo“Error:”.curl_Error($ch);
}
$response=json_decode($result);
打印(回复);
回声“
”;
打印(curl_getinfo($ch));
$response=“”;
卷曲关闭($ch);
而且它没有从post字符串周围缺少方括号
如果我把它们放进去,我会得到一个“格式错误的请求”错误。没有方括号,没有错误,但也没有可见的产品
感谢阅读。刚刚注意到您似乎在硬编码请求ID头:
$headers[] = 'Paypal-Request-Id: FGAS005';
确保你永远不会这样做;对于每个独立的请求,该头的值应该是唯一的,或者更简单地说,根本不设置(注释这一行)这不是代码问题,您需要共享完整的请求和响应,也许还需要联系PayPal的支持部门。最简单的解决方案是创建具有不同标识符的新产品。谢谢您的回复。我会这么做,因为很明显,这不是你所说的代码。我删除了沙盒应用程序并创建了一个新的,但没有什么不同。我会在这里发布更新,以防其他开发人员也有同样的问题。老实说,我在这里复制和粘贴示例代码,而不通读它,也不知道它的作用,这从来不是一个好主意,但这就是我在这里所做的,所以为浪费任何人的时间表示歉意。正是页面大小和页面整数设置阻止了我查看所有产品。我使用的示例只列出了两个。此外,无法编辑描述值是因为添加此特定产品时未设置任何描述。一旦我使用了“添加”操作来添加描述,一切都正常了。在这个问题上,我确实有些懈怠,因为在catalogapi文档中并不明显,在进行替换之前,您必须先进行添加。逻辑上,但不明显。明白了,这是沙盒测试代码,我必须承认,我只是懒得让那个部分成为动态的。然而,就这一点而言,实时版本肯定不会这样做