无法使用WooCommerce API创建订单
android代码(okhttp)是
RequestBody formBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(oauthConsumerKeyString, oauthConsumerKeyStringValue)
.addFormDataPart(oauthNonceKeyString, oauthNonceKeyValue)
.addFormDataPart(oauthSignatureMethodKey, oauthSignatureMethodKeyValue)
.addFormDataPart(oauthTimestampKeyString, oauthTimeStampKeyStringValue)
.addFormDataPart("oauth_signature", signature)
.addFormDataPart("orders", postDataString)
.build();
Request request = new Request.Builder()
.url(urlOrders)
.post(formBody)
.build();注意…的部分
addFormDataPart("orders", postDataString).如果这个部分被删除,那么订单就会被创建,没有地址、用户信息、价格、产品id等细节。所以所有参数都正常工作。
现在,如果不省略上面的部分,则不会创建订单,错误将显示为:
Invalid signature - provided signature does not match.变量postDataString包含以下JSON数据
{
"payment_method": "bacs",
"payment_method_title": "Direct Bank Transfer",
"set_paid": true,
"billing": {
"first_name": "John",
"last_name": "Doe",
"address_1": "969 Market",
"address_2": "",
"city": "San Francisco",
"state": "CA",
"postcode": "94103",
"country": "US",
"email": "john.doe@example.com",
"phone": "(555) 555-5555"
},
"shipping": {
"first_name": "John",
"last_name": "Doe",
"address_1": "969 Market",
"address_2": "",
"city": "San Francisco",
"state": "CA",
"postcode": "94103",
"country": "US"
},
"line_items": [
{
"product_id": "341",
"quantity": "1"
},
{
"product_id": "339",
"quantity": "1"
}
],
"shipping_lines": {
"method_id": "flat_rate",
"method_title": "Flat Rate",
"total": 10
}
}这个代码有什么问题。耽误您时间,实在对不起。如有任何疑问,请评论。
发布于 2017-04-14 07:22:07
我在写这个答案。
注意:-到目前为止,已经看到许多类似的问题都在堆栈溢出中,没有答案是provided.Many赢得了翻滚杂草。
让我们创建一个优惠券资源。
下面的方法是相同的,无论是创建优惠券还是orders.Taking优惠券,因为它有一个短的json参数。
将张贴的优惠券是
{"code":"asdfas"}创建优惠券资源的最小参数是“代码”parameter.Other参数是optional.So am,使用最小的json创建优惠券。
网址应该是
signature=FC1lJ8Vzw.....B86UGlAoWA=
您中许多能够列出资源的人也可以创建正确的signatures.So,而不是记录签名创建的here.Can,看外面的许多其他资源。
现在使用json媒体类型
MediaType JSON = MediaType.parse("application/json; charset=utf-8");现在是最后的代码(Am使用okhttp3)
okhttp3.RequestBody body = RequestBody.create(JSON, dataCouponJsonObject.toString());
okhttp3.Request request = new okhttp3.Request.Builder().url(the url given above)
.post(body)
.build();
response = client.newCall(request).execute();然后瞧!创建资源:)
注:两天过去了,然后得到了这个答案。如有任何疑问,请评论。
https://stackoverflow.com/questions/43348471
复制相似问题