i've had my first Shopify store running for about a month now, using a PHP batch script to either create new products and variants, or to update as and when needed from an existing web-based product management system. All seems to have been running fine but i've just noticed that i'm getting an exception thrown when updating variants. I'm sure this has been working fine previously (been able to update a variant as needed) so I could do with a bit of help figuring out why this is failing now.
Here's an example:
ShopifyApiException Object
(
[method:protected] => PUT
[path:protected] => /admin/variants/4294967295.json
[params:protected] => Array
(
[variant] => Array
(
[price] => 8.00
[sku] => 2217
[id] => 2217
[product_id] => 21880
[inventory_management] => shopify
[inventory_policy] => deny
[inventory_quantity] => 1
[option1] => Plain \/ EX
[option2] => Strictly Rhythm
[option3] => SR12216
[weight] => 330
[weight_unit] => g
)
)
[response_headers:protected] => Array
(
[http_status_message] => Not Found
[http_status_code] => 404
[server] => nginx
[date] => Fri, 21 Aug 2015 14:27:03 GMT
[content-type] => application/json; charset=utf-8
[transfer-encoding] => chunked
[connection] => keep-alive
[vary] => Accept-Encoding
[x-sorting-hat-podid] => 3
[x-sorting-hat-shopid] => 2234339
[x-sorting-hat-podid-cached] => 1
[x-sorting-hat-shopid-cached] => 1
[status] => 404 Not Found
[x-frame-options] => DENY
[x-shopid] => 2234339
[x-shardid] => 3
[x-shopify-shop-api-call-limit] => 1/40
[http_x_shopify_shop_api_call_limit] => 1/40
[x-stats-userid] => 0
[x-stats-apiclientid] => 152673
[x-stats-apipermissionid] => 3265975
[x-xss-protection] => 1; mode=block; report=/xss-report/97471013-3a3c-4b82-a94d-868f9b7ac073?source%5Baction%5D=update&source%5Bcontroller%5D=admin%2Fproduct_variants&source%5Bsection%5D=admin
[set-cookie] => request_method=PUT; path=/
[x-request-id] => 97471013-3a3c-4b82-a94d-868f9b7ac073
)
[response:protected] => Array
(
[errors] => Not Found
)
[message:protected] => Not Found
[string:Exception:private] =>
[code:protected] => 404
[file:protected] => /var/www/MY-SERVER/httpdocs/shopify_tools/shopify.php
[line:protected] => 70
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /var/www/MY-SERVER/httpdocs/shopify_tools/batch_upload_items.php
[line] => 347
[function] => call
[class] => ShopifyClient
[type] => ->
[args] => Array
(
[0] => PUT
[1] => /admin/variants/4294967295.json
[2] => Array
(
[variant] => Array
(
[price] => 8.00
[sku] => 2217
[id] => 2217
[product_id] => 21880
[inventory_management] => shopify
[inventory_policy] => deny
[inventory_quantity] => 1
[option1] => Plain \/ EX
[option2] => Strictly Rhythm
[option3] => SR12216
[weight] => 330
[weight_unit] => g
)
)
)
)
)
[previous:Exception:private] =>
)
I've realised the problem - hopefully this may help someone else.
I was storing the Shopify Variant ID in an INT column in my database and Shopify Variant IDs have just recently passed the INT limit of 4294967295 - switching to BIGINT and reimporting all the Variant IDs solved the problem.
How on installation step I can get store url? Because store hash is not the thing I really need I guess, as then I can't access is somehow by link.
if you are using the bigcommerce api, you can get the store information: https://developer.bigcommerce.com/api/stores/v2/store_information according the documentation
the api response give you:
stdClass Object
(
[id] => [your-store-identifier]
[domain] => [youstore-domain-name].mybigcommerce.com
[name] => test
[address] =>
[phone] =>
[admin_email] => test#domain.com
[order_email] => test#domain.com
[language] => en
[currency] => USD
[currency_symbol] => $
[decimal_separator] => .
[thousands_separator] => ,
[decimal_places] => 2
[currency_symbol_location] => left
[weight_units] => LBS
[dimension_units] => Inches
[dimension_decimal_places] => 2
[dimension_decimal_token] => .
[dimension_thousands_token] => ,
[plan_name] => Professional Application Developer Store
[logo] => Array
(
)
[is_price_entered_with_tax] =>
[active_comparison_modules] => Array
(
)
)
Following the instructions for OutOfStockControlPreference, I've set it to true, and even verified using ShowOutOfStockControlPreference.
Next, my call is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>-- removed --</eBayAuthToken>
</RequesterCredentials>
<InventoryStatus>
<ItemID>**********</ItemID>
<Quantity>0</Quantity>
</InventoryStatus>
</ReviseInventoryStatusRequest>
eBay returns a 515 error:
Array(
[ReviseInventoryStatusResponse] => Array(
[Timestamp] => 2014-10-28T16:05:19.176Z
[Ack] => Failure
[Errors] => Array(
[ShortMessage] => Quantity is not valid.
[LongMessage] => The quantity must be a valid number greater than 0.
[ErrorCode] => 515
[SeverityCode] => Error
[ErrorParameters] => Array(
[0] => Array(
[Value] => **********
)
[1] => Array(
[Value] => Array(
)
)
)
[ErrorClassification] => RequestError
)
[Version] => 891
[Build] => E891_UNI_API5_17051033_R1
)
)
This is unsupported in the eBay sandbox, but it works for eBay live.
Hi I'm trying to get data from SugarCRM by REST api. It's fine with default module, but with custom module, I got a issue.
I used this example
And getting data from Contacts module which has last name = "abc" is ok with these code:
$get_entry_list_parameters = array(
'session' => $session_id,
'module_name' => 'Contacts',
'query' => "contacts.last_name='abc'",
'order_by' => "",
'offset' => '0',
'select_fields' => array(
'id'
),
'link_name_to_fields_array' => array(
),
'max_results' => '1',
'deleted' => '0',
'Favorites' => false,
);
When I tried to get data from our custom module (eg: Event Session inside Event package), so it's ok as well without Query param like these code
$get_entry_list_parameters = array(
'session' => $session_id,
'module_name' => 'event_event_session',
'order_by' => "",
'offset' => '0',
'select_fields' => array(
'id',
'name'
),
'link_name_to_fields_array' => array(
),
'max_results' => '3',
'deleted' => '0',
'Favorites' => false,
);
But after that I put Query param, I got no record
$get_entry_list_parameters = array(
'session' => $session_id,
'module_name' => 'event_event_session',
'query' => "event_event_session.name='def'",
'order_by' => "",
'offset' => '0',
'select_fields' => array(
'id',
'name'
),
'link_name_to_fields_array' => array(
),
'max_results' => '3',
'deleted' => '0',
'Favorites' => false,
);
I think the way I used to get data from custom module is not correct.
Anyone can help me resolve this issue. Thank you!
Johnny
Are you sure the table name for the custom module is "event_event_session"?
When we create any new custom module using module builder then it is asking for key name. So our module will become as key_modulename. So make sure you are passing the key name along with module name. So that way you can access the data of custom new module.
I have working on SANDBOX. I am getting error :
[0] => Array
(
[L_ERRORCODE] => 11502
[L_SHORTMESSAGE] => Invalid Token
[L_LONGMESSAGE] => The token is invalid
[L_SEVERITYCODE] => Error
)
This is what i passing in CreateRecurringProfile :
[REQUESTDATA] => Array
(
[USER] => "API_USER"
[PWD] => "API_PASS"
[VERSION] => 74.0
[BUTTONSOURCE] => AngellEYE_PHPClass
[SIGNATURE] => "API_SING"
[METHOD] => CreateRecurringPaymentsProfile
[TOKEN] => EC-8F723718H3002730R
[SUBSCRIBERNAME] => Tester Testerson
[PROFILESTARTDATE] => 2012-09-06T00:00:00\Z
[DESC] => Item 1 Name
[AUTOBILLAMT] => 1
[BILLINGPERIOD] => Month
[BILLINGFREQUENCY] => 1
[TOTALBILLINGCYCLES] => 0
[AMT] => 10.00
[CURRENCYCODE] => USD
[EMAIL] => hide#address.com
[BUSINESS] => Testers, LLC
[FIRSTNAME] => Tester
[LASTNAME] => Testerson
)
NOTE: I have removed SANDBOX API Credential. To show here.
Please give me solution what is missing here or what is fault in my posting request.
Thanks for advance
Did you include L_BILLINGTYPE0=RecurringPayments in your SetExpressCheckout and DoExpressCheckoutPayment API calls?