Woocommerce API реализует Oauth1 с ключом / секретом потребителя.
Вот мой код для доступа к WordPress API с Flutter
Future<String> getData() async {
var response = await http.get(
Uri.encodeFull( "http://jalania.com/wp-json/wp/v2/posts" ),
headers: {"Accept": "application/json"});
this.setState(() {
data = JSON.decode(response.body);
});
}
Я изменил URL-адрес API на Woocommerce API, http://jalania.com/wp-json/wc/v2/products и получил пустые ответы.
Кто-нибудь знает, как получить доступ к Woocommerce API с флаттером?






Необходимо добавить авторизацию в WooCommerce API. Не знаю, как добавить во Flutter параметр авторизации. Но вам нужно добавить что-то вроде кода ниже.
Future<String> getData() async {
var response = await http.get(
Uri.encodeFull( "http://jalania.com/wp-json/wp/v2/posts" ),
authorization:{"consumer_key": "XXXXXXXX1212","consumer_secret":"XXXXX1212"},
headers: {"Accept": "application/json"});
this.setState(() {
data = JSON.decode(response.body);
});
}
Вы можете использовать это: https://github.com/lakexyde/dart-woocommerce-api. Хотя все еще нужна чистка, но она работает.
Map<String,dynamic> params = {
"url": 'https://example.com',
"consumerKey": "ck_XXXXXXXXXXXXXXXXXXXXXXXXX",
"consumerSecret": "cs_XXXXXXXXXXXXXXXXXXXXXXXX",
"wpAPI": true,
"version": 'wc/v2'
}
А потом:
WooCommerceAPI wooAPI = new WooCommerceAPI(params);
Надеюсь, поможет.
List<Widget> products = [];
Future getProducts() async {
/// Initialize the API
WooCommerceAPI wc_api = new WooCommerceAPI(
"https://www.yourwebsite.com",
"ck_your_consumer_key",
"cs_your_consumer_secret"
);
/// Get data using the endpoint
var p = await wc_api.getAsync("products");
return p;
}
Вам может помочь: https://pub.dev/packages/woocommerce_api#-installing-tab-
Вот что я использую: https://pub.dev/packages/woosignal
Он также возвращает объектные модели, вот некоторая документация - https://woosignal.com/docs/api/1.0/installing-flutter-sdk
Packages get
dependencies:
woosignal: ^1.0.2
// CONFIG FOR WOOSIGNAL
var wsConfig = {
"appKey":"your app key",
"debugMode":true
};
// CREATING AN INSTANCE
WooSignal.getInstance(config: wsConfig).then( (wcStore) {
wcStore.getProducts().then( (products) {
print(products[0].name);
});
});
Если вам нужен полноценный Woocommerce Sdk с функцией Plug and Play, который обрабатывает для вас аутентификацию, продукты, клиентов, доставку и т. д., Вы можете использовать библиотеку Woo Commerce SDK для флаттера на https://pub.dev/packages/woocommerce
Woocommerce myWoocommerce = WooCommerce(baseUrl: yourBaseUrl, consumerKey: yourConsumerKey, consumerSecret: consumerSecret);
Затем просто зарегистрируйте своего нового клиента.
WooCustomer newCustomer = WooCustomer(id: id, firstName:firstName, etc);
myWoocommerce.createCustomer(newCustomer); //Returns the created Woocommerce customer.
Я пытался использовать документ api flutter wooCommerce https://pub.dev/packages/woocommerce_api#-readme-tab-
Но в моем случае это не сработало, там есть consumerKey и consumerSecret с URL-адресом. В Postman он возвращает значение но не в коде Flutter. В моем проекте работают следующие шаги
Future<dynamic> getData() async {
var response = await http.get("URL",
headers: {
"Authorization": "AuthorizationToken"},
).catchError(
(error) {
return false;
},
);
return json.decode(response.body);
}
Где «Авторизация» можно получить с помощью Почтальона. После попадания по URL-адресу с помощью consumerKey и consumerSecret, Postman генерирует AuthorizationToken, после чего вы можете использовать AuthorizationTokenin таким образом.
Это мое решение, если вам нужны пользовательские данные:
Сначала я установил пакет https://pub.dev/packages/woocommerce, но их api woocommerce.getProducts() не дал необходимой мне информации (пользовательские данные внутри acf), поэтому я сделал следующее:
Сделал форк проекта github: https://github.com/RayOkaah/woocommerce
Я клонировал разветвленный проект с помощью терминала git clone [FORKED PROJECT URL] (пример git clone https://github.com/MireilleKhalifeh/woocommerce.git)
Я внес свои изменения в файл products.dart (расположенный внутри / wocommerce / lib / models /): я создал класс Acf, а затем добавил переменную Acf в класс WooProduct, как и остальные переменные.
Протолкнул мои изменения.
В моем проекте flutter в pubspec.yaml я добавил в разделе зависимостей:
dependencies:
woocommerce:
git: [FORKED PROJECT URL] #for example https://github.com/MireilleKhalifeh/woocommerce.git
Теперь я могу получить доступ к данным внутри класса Acf из их класса Product.
Future getProducts() async {
WooCommerce woocommerce = WooCommerce(
baseUrl: '[url]',
consumerKey: '[consumerKey]',
consumerSecret: '[consumerSecret]',
isDebug: false);
Machine.products = await woocommerce.getProducts();
return Future.value(MyHomePage());
}
И я получаю к нему доступ так:
Machine.products[0].acf.model
Я надеюсь, что это поможет.
Официальный пакет уже вышел. pub.dartlang.org/packages/woocommerce_api