我计划为WooCommerce商店开发原生移动Android应用程序。
我在这里查看了他们的REST API文档:http://docs.woocommercev2.apiary.io/ 我已经开始测试了,但是当我做不同的电话时
GET /orders
让我们说它会退回商店的所有订单。
有谁知道如何使用他们的API开发最终用户应用程序。
例如:
GET /products
PUT /order
(为登录用户创建订单)
GET /order
(获取登录用户的订单)
任何想法都表示赞赏:)
提前致谢。
答案 0 :(得分:1)
对于http
(而非ssl协议,例如https
)请求,您必须使用 OAthu 1.0a 身份验证框架。
java中有很多 oauth 1.0a 的库,
我使用 scribeJava
因此,请执行以下步骤:
在依赖scop的 app/build.gradle
中添加以下内容:
compile 'org.scribe:scribe:1.3.5'
OAuth服务提供商的 WoocommerceApi 新课程。
重要。你必须使用
DefaultApi10a中的public
类用于实现oauth提供程序
public static class WooCommerceApi extends org.scribe.builder.api.DefaultApi10a {
@Override
public org.scribe.model.Verb getRequestTokenVerb()
{
return org.scribe.model.Verb.POST;
}
@Override
public String getRequestTokenEndpoint() {
return "http://www.your-domain.com/wc-auth/authorize";
}
@Override
public String getAccessTokenEndpoint() {
return "none";
}
@Override
public String getAuthorizationUrl(org.scribe.model.Token requestToken) {
return "none";
}
}
您必须在Thread
或AsyncTask
String restURL = "http://www.your-domain.com/wp-json/wc/v1/products/";
OAuthService service = new ServiceBuilder()
.provider(WooCommerceApi.class)
.apiKey(CONSUMER_KEY) //Your Consumer key
.apiSecret(CONSUMER_SECRET) //Your Consumer secret
.scope("API.Public") //fixed
.signatureType(SignatureType.QueryString)
.build();
OAuthRequest request = new OAuthRequest(Verb.GET, restURL);
// for POST requests
// OAuthRequest request = new OAuthRequest(Verb.POST, restURL);
// request.addBodyParameter(YOUR_PARAM_KEY, YOUR_VALUE);
// or
// request.addPayload(YOUR_JSON);
Token accessToken = new Token("", ""); //not required for context.io
service.signRequest(accessToken, request);
Response response = request.send();
Log.d("OAuthTask",response.getBody());
答案 1 :(得分:0)
根据文档,预期的数据格式仅为JSON(与之前的XML或Json形成对比),但遗憾的是没有进一步说明每个端点的数据结构。
以下是当前创建优惠券文档中POST请求格式的唯一示例:
REST请求URI
POST http://private-anon-0fe404a22-woocommercev2.apiary-mock.com/coupons?fields=id,code&filter=filter[limit]=100&page=2
Java代码(从文档中粘贴)
Client client = ClientBuilder.newClient();
Entity payload = Entity.json("{ 'coupon': { 'code': 'autumn-is-coming', 'type': 'fixed_cart', 'amount': '4.00', 'individual_use': true, 'description': '' }}");
Response response = client.target("http://private-anon-0fe404a22-woocommercev2.apiary-mock.com")
.path("/coupons{?fields,filter,page}")
.request(MediaType.APPLICATION_JSON_TYPE)
.post(payload);
System.out.println("status: " + response.getStatus());
System.out.println("headers: " + response.getHeaders());
System.out.println("body:" + response.readEntity(String.class));
Json回应
{
"coupon": {
"id": 21548,
"code": "augustheat",
"type": "fixed_cart",
"created_at": "2014-08-30T19:25:48Z",
"updated_at": "2014-08-30T19:25:48Z",
"amount": "5.00",
"individual_use": false,
"product_ids": [],
"exclude_product_ids": [],
"usage_limit": null,
"usage_limit_per_user": null,
"limit_usage_to_x_items": 0,
"usage_count": 0,
"expiry_date": "2014-08-30T21:22:13Z",
"apply_before_tax": true,
"enable_free_shipping": false,
"product_category_ids": [],
"exclude_product_category_ids": [],
"exclude_sale_items": false,
"minimum_amount": "0.00",
"maximum_amount": "0.00",
"customer_emails": [],
"description": "Beat the August heat with $5 off your purchase!"
}
}
http://docs.woocommercev2.apiary.io/#reference/coupons/coupons-collection/create-a-coupon
考虑到声称API接受所有相关端点的POST请求,这应该可以通过购物订单。
答案 2 :(得分:0)
我会建议这个步骤
首先,您可以从后端启用针对woocommerce的Api - http://docs.woothemes.com/document/woocommerce-rest-api/
https://www.npmjs.com/package/woocommerce使用此链接,其中包含与woocommerce交互的所有方法。否则使用轻量级中间件,它有助于连接woocommerce服务器和&将JSON数据返回到您的应用。
使用离子框架编写服务并与您的瘦中间件客户端交谈。不要忘记缓存数据(使用本地存储),这样就不会一直打到服务器。 - Contus M Comm
答案 3 :(得分:0)
一个人可以使用即插即用解决方案AKA应用构建器(例如Appmaker.xyz)来创建最终用户应用。