Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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发布到Shopify_Php_Json_Shopify - Fatal编程技术网

使用PHP发布到Shopify

使用PHP发布到Shopify,php,json,shopify,Php,Json,Shopify,我试图从一个PHP页面发布到Shopify,以表明订单项已经完成。我一定做得不对,因为我总是得到一个空结果。我是在一个被取消的测试订单上做这件事的,但是我希望如果这是问题的话,我至少会得到某种非空的响应。这是我的密码: $API_KEY = 'my-api-key'; $SECRET = 'my-shared-secret'; $PASS = 'my-shopify-password'; $STORE_URL = 'mydomain.myshopify.com'; $ITEM_ID = 'my-

我试图从一个PHP页面发布到Shopify,以表明订单项已经完成。我一定做得不对,因为我总是得到一个空结果。我是在一个被取消的测试订单上做这件事的,但是我希望如果这是问题的话,我至少会得到某种非空的响应。这是我的密码:

$API_KEY = 'my-api-key';
$SECRET = 'my-shared-secret';
$PASS = 'my-shopify-password';
$STORE_URL = 'mydomain.myshopify.com';
$ITEM_ID = 'my-item-id';
$ORDER_ID = 'my-order-number';
$TRACKING_NUMBER = '12345';
$TRACKING_URL = 'http:\/\/test.com\/testurl';

$baseUrl = 'https://'.$API_KEY.':'.$PASS.'@'.$STORE_URL.
           '/admin/orders/'.$ORDER_ID.'/fulfillments.json';

$data = array('fulfillment' =>
                array(
                    'tracking_number' => $TRACKING_NUMBER,
                    'tracking_company' => 'USPS',
                    'tracking_url' => $TRACKING_URL,
                    'line_items' =>
                        array(
                            'id'=>$ITEM_ID,
                            ),
                ),
            );
$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 );

var_dump($json);

您在POST部分发送了一个json,您确定这是您真正想要做的吗?post数据应该更像这样,发送
data1=test1&data2=test2


你不应该改用complete.json吗???我可能有点误解,但听起来你似乎在试图完成一项尚未完成的任务

/admin/orders/#{id}/fulfillments/#{id}/complete.json

我发现了这个问题。Shopify要求行项目具有额外的数组,因此:

'line_items' =>
                    array(
                        'id'=>$ITEM_ID,
                        )
应该是这样的:

'line_items' =>
                    array(
                       array(
                           'id'=>$ITEM_ID,
                        ) 
                    )

是的,Shopify使用JSON,除非有另一种我不知道的方法。对于新手来说,他们的文档不是最好的。由于$data变量是一个数组,而不是字符串,因此字符串长度参数的工作方式与您列出的不同。我不确定这是导致问题的原因,但我对任何事情都持开放态度。一旦json\u编码,您就可以
strlen($json\u string)
!谢谢亚历克西斯,这帮我了解了长度。但不幸的是,它没有改变我的结果:(仍然为null。如果响应为null,是否意味着它没有正确发布?如果使用此端点,是否会收到响应???/admin/orders/#{id}/fulfillments.json@Keri——它应该是所有完整填写的列表,这样您就不需要向它传递除我认为是ID之外的任何数据arbitrary@NotoriousPet0,我尝试直接访问该URL以查看其内容,因为在其他情况下,它会在屏幕上显示完整的响应,并且显示的响应是{“errors”:“notfound”}。找不到任何页面,这是它给出的响应。我将ID更改为我知道已完成的ID,但它给出了相同的响应。我尝试删除订单ID,以查看它是否会列出所有完成的内容,并给出相同的响应。你知道发生了什么吗?你使用什么进行身份验证?oauth还是legacy?@notriouspet0我不知道--这是我第一次尝试向Shopify发布任何内容,到目前为止,我只从Shopify中提取了数据。也许这就是问题所在?我还在一些文档中看到,我可能需要将write_shipping添加到我的“请求范围”中但是我看不到关于在何处查找请求范围的任何信息。如果我使用complete.json,它不允许我输入跟踪编号,除非我误解了。我正在使用Stamps.com来实现,并且希望能够为客户的装运添加跟踪编号。
'line_items' =>
                    array(
                        'id'=>$ITEM_ID,
                        )
'line_items' =>
                    array(
                       array(
                           'id'=>$ITEM_ID,
                        ) 
                    )