首页 > 解决方案 > 无法使用 PHP+cURL 发布到 Shopify Private App

问题描述

在我的 PHP 代码中似乎找不到错误。我正在尝试通过 Shopify API 添加客户,下面是我的代码。我使用 Postman 尝试了相同的 URL,它起作用了——当我添加相同的 JSON 字符串时,用户被添加。所以我知道在 Shopify 中使用正确的权限正确启用了 API。

$API_KEY = '****';
$PASS = '****';
$STORE_URL = '****';
$DATE = "2021-07";
$USER_EMAIL = 'test@test.com';
$baseUrl = 'https://'.$API_KEY.':'.$PASS.'@'.$STORE_URL.'/admin/api/'.$DATE.'/customers.json';
              // post to: POST /admin/api/2021-07/customers.json
$data = array('customer' =>
                    array(
                        'first_name' => 'Promo',
                        'last_name' => 'User',
                        'email' => $USER_EMAIL,
                        'accepts_marketing' => 'true',
                    ),
                );
    echo "test post data:";
    echo json_encode($data);
    $session = curl_init( $baseUrl );
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($session, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false);

    $response = curl_exec($session);
    curl_close($session);

    $json = json_decode( $response, true );
    echo "test return data:";
    var_dump($json);

代码打印以下内容,返回 NULL 并且没有添加客户:

test post data:{"customer":{"first_name":"Promo","last_name":"User","email":"test@test.com","accepts_marketing":"true"}}test return data:NULL

谁能发现我在这里做错了什么?

标签: phpshopifyphp-curlshopify-api

解决方案


没关系,我只是想通了。该行 curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'PUT'); 应该是 curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'POST');


推荐阅读