Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP贝宝目录REST API将不会显示新产品_Php_Api_Curl_Paypal_Catalog - Fatal编程技术网

PHP贝宝目录REST 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()

由于使用带有PHP curl对象的Catalog API添加了两个新的沙盒产品,因此发生了以下情况:

  • 使用RESTAPI可以看到这两个产品
  • 但我只能用补丁编辑第二个。更新另一个的调用不会出错,它们只是不做任何事情
  • 我可以使用API添加新产品,同样没有错误,但它们不会出现在列表API响应中
  • 当尝试添加一个与我之前添加的产品ID相同但不可见的新产品时,响应数组中出现重复的资源标识符错误,确认它在其中的某个位置
  • 到底发生了什么事

    代码如下:

    添加产品

            $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文档中并不明显,在进行替换之前,您必须先进行添加。逻辑上,但不明显。明白了,这是沙盒测试代码,我必须承认,我只是懒得让那个部分成为动态的。然而,就这一点而言,实时版本肯定不会这样做