0

我正在寻找更新产品上的自定义字段。

我在指南中找到了如何通过管理界面手动操作

API 文档建议您不能直接修改产品上的自定义字段,只能访问它们:

我的下一个想法是更新产品

这是产品上现有的 custom_field。

{
  "url"=> "https://storename.mybigcommerce.com/api/v2/products/32/customfields.json",
  "resource"=>"/products/32/customfields"
}

当我尝试修改 url/resource 并将哈希发送回更新时,我收到了一个400 Bad Request:(

new_custom_fields = { 
"url" => "https://storename.mybigcommerce.com/api/v2/products/75/customfields.json", 
"resource" => "/products/75/customfields"
}

api.update_products(75, {"custom_fields" => new_custom_fields})
RuntimeError: Failed to parse Bigcommerce response: 400 Bad Request

想法?

4

3 回答 3

2

这似乎是 Bigcommerce API 中的一个错误。目前仅支持自定义字段上的 GET 请求。

http://developer.bigcommerce.com/api/products/customfields

这可能是你达到400的原因。

于 2013-05-09T18:05:17.350 回答
0

不确定这是否对 Ruby 有帮助,但它可能对那些使用 PHP 的人有所帮助......我能够使用 php 在产品上创建自定义字段。只需要产品 ID 和自定义字段的值,“名称”和“文本”。

$data_array = array('name' => 'gender', 'text' => 'male');
BigCommerce::createProductCustomField('17', $data_array);

我没有尝试更新自定义字段,但如果创建一个有效,那么以下内容也应该可以更新当前的自定义字段:

BigCommerce::updateProductCustomField($product_id, $id, $object);

您将需要要更新的产品的 $product_id、要更新的自定义字段的 $id,并且 $object 应该是类似于上面的 $data_array 的数组。

有关 BC 的 PHP 客户端的更多信息:https ://github.com/bigcommerce/bigcommerce-api-php

祝你好运!

于 2013-11-22T17:31:03.447 回答
0

试试这个代码:

$headers = array(
"Content-type: application/json",
//"Authorization: Basic " . base64_encode($credentials)
);
$name='Bullet Point ';
$data_array = array('name'=>'Bullet Point','text'=>'Bullet Point value');
$body=json_encode($data_array);
//Get the current url and split it at the '?'
$ch = curl_init('https://www.abc.mybigcommerce.com/api/v2/products/1122/customfields.json'); //open connection
curl_setopt($ch, CURLOPT_TIMEOUT, 60); //set to 60 seconds from BC API Guide v1 PDF example
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //load all header data
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); //comment out this PUT line to change to a POST statement
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_USERPWD, "admin:api-key");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec($ch); //execute post
curl_close($ch);

于 2013-12-11T10:04:57.870 回答