Shopify 创建订单

Posted

技术标签:

【中文标题】Shopify 创建订单【英文标题】:Shopify Create order 【发布时间】:2015-04-02 17:44:25 【问题描述】:

我正在尝试从我的 ios 应用到我的 Shopify 网站创建订单。

这是文档说我应该做的。

创建一个仅包含产品变体 ID 的简单订单。 POST /admin/orders.json "order": "line_items": [ "variant_id": 447654529, "quantity": 1 ]

不多说了。

这是我得到的。

<code>
NSMutableDictionary *lineItem1=[[NSMutableDictionary alloc]init];
[lineItem1 setObject:@"1125533997" forKeyedSubscript:@"variant_id"];
[lineItem1 setObject:@"1" forKeyedSubscript:@"quantity"];

NSMutableArray *lineItems=[[NSMutableArray alloc]init];
[lineItems addObject:lineItem1];


NSMutableDictionary *orders=[[NSMutableDictionary alloc]init];
[orders setObject:lineItems forKeyedSubscript:@"line_items"];


NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:orders options:NSJSONWritingPrettyPrinted error:&error];

NSString *myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

myString=[JuicyApi md5HexDigest:myString];


//Set parameter
NSMutableDictionary *params = [[NSMutableDictionary alloc]init];
[params setObject:myString forKeyedSubscript:@"order"];

//Generate the request with the give settings
NSMutableURLRequest *req = [self getRequestWithFunction:@"admin/orders.json" requestType:@"POST" params:params ssl:true];

</code>

服务器正在给我一个回复说。

<code>
"errors":"order":"expected String to be a Hash"
</code>

我尝试对所有内容进行哈希处理,但只有值(在此示例中所有内容都按顺序排列)无法使其正常工作。我是不是散列不正确?

我在这里错过了什么?

【问题讨论】:

我在寻找相同的解决方案时遇到了这个问题。我现在已经修好了。它与散列无关,该错误具有误导性。不要从您的 JSON 中创建哈希字符串。只需发布 JSON 并确保您的 JSON 有效并且没有任何额外的转义。该哈希字符串错误将消失并且它将起作用。从您的代码中,我建议创建一个包含“订单”的字典,然后仅将其转换为 JSON 字符串一次。如果您首先将字典的子部分转换为 JSON,然后再将父级转换为额外的转义,这将在我的情况下导致此问题。 【参考方案1】:

我也有同样的问题。在发出请求之前,我通过设置正确的标头来解决问题 setHeader("Content-Type", "application/json")

【讨论】:

以上是关于Shopify 创建订单的主要内容,如果未能解决你的问题,请参考以下文章

Shopify 订单网络挂钩

如何通过 Laravel 中的 API 从 Shopify 商店获取所有订单

Shopify - 使用 Shopify API 的新订单 - 如何了解税费和运费?

订单未出现在管理面板 shopify 中,但已在 Paypal 中注册

Shopify 自定义支付网关实施

Shopify DAWN 主题 - 在购物车页面中添加自定义字段并在订单管理面板中显示结果