невозможно получить продукты с определенными атрибутами, используя остальные API WooCommerce - PullRequest
1 голос
/ 13 марта 2019

Я занимаюсь разработкой мобильного приложения для подключения к API плагинов WooCommerce WordPress rest api с использованием платформы ionic cordova.но я сталкиваюсь с ошибкой при попытке получить продукты с определенными атрибутами.мой запрос: http://myurl.com/wc-api/v3/products?filter[pa_color]=red,black и я получаю woocommerce_api_authentication_error.все остальные запросы, которые я отправляю на тот же сервер, работают нормально, включая http://myurl.com/wc-api/v3/products?filter[pa_color]=black, то есть тот же запрос, но с передачей только одного атрибута.Я использую woocommerce версии 3.5.3 cordova 8.0.0. Я очень ценю любую помощь!

Я делюсь своим исходным кодом на случай, если это поможет:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { URLSearchParams } from '@angular/http';
import {HttpClient} from "@angular/common/http";

@Injectable()
export class CategoryService {

constructor(private http: Http, private config: Config,private HttpClient: HttpClient) {

}

load() {
    var params ['filter[pa_color]'] = new Array('red,black');

    return new Promise(resolve => {
        this.http.get(this.config.setUrl('GET', '/wc-api/v3/products?', params), this.config.options).map(res => res.json())
            .subscribe(data => {
                resolve(data);
            },
                error=>{
                console.log(error);
                });
    });
}


import { Injectable } from '@angular/core';
import { URLSearchParams } from '@angular/http';
import { Headers } from '@angular/http';
declare var oauthSignature: any;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-            urlencoded; charset=UTF-8');

@Injectable()
export class Config {

url: any = 'https://myurl.com';
consumerKey: any = 'ck_myUrlCK';
consumerSecret: any = 'cs_ck_myUrlSK';



oauth: any;
signedUrl: any;
randomString: any;
oauth_nonce: any;
oauth_signature_method: any;
encodedSignature: any;
searchParams: any;
customer_id: any;
params: any;
options: any = {};
constructor() {
    this.options.withCredentials = true;
    this.options.headers = headers;
    this.oauth = oauthSignature;
    this.oauth_signature_method = 'HMAC-SHA1';
    this.searchParams = new URLSearchParams();
    this.params = {};
    this.params.oauth_consumer_key = this.consumerKey;
    this.params.oauth_signature_method = 'HMAC-SHA1';
    this.params.oauth_version = '1.0';
}
setOauthNonce(length, chars) {
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
    return result;
}
setUrl(method, endpoint, filter) {
    var key;
    var unordered = {};
    var ordered = {};
    if (this.url.indexOf('https') >= 0) {
        unordered = {};
        if (filter) {
            for (key in filter) {
                unordered[key] = filter[key];
            }
        }
        unordered['consumer_key'] = this.consumerKey;
        unordered['consumer_secret'] = this.consumerSecret;
        Object.keys(unordered).sort().forEach(function(key) {
            ordered[key] = unordered[key];
        });
        this.searchParams = new URLSearchParams();
        for (key in ordered) {
            this.searchParams.set(key, ordered[key]);
        }
        return this.url + endpoint + this.searchParams.toString();
    }
    else {
        var url = this.url + endpoint;
        this.params['oauth_consumer_key'] = this.consumerKey;
        this.params['oauth_nonce'] = this.setOauthNonce(32, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
        this.params['oauth_timestamp'] = new Date().getTime() / 1000;
        for (key in this.params) {
            unordered[key] = this.params[key];
        }
        if (filter) {
            for (key in filter) {
                unordered[key] = filter[key];
            }
        }
        Object.keys(unordered).sort().forEach(function(key) {
            ordered[key] = unordered[key];
        });
        this.searchParams = new URLSearchParams();
        for (key in ordered) {
            this.searchParams.set(key, ordered[key]);
        }
        this.encodedSignature = this.oauth.generate(method, url, this.searchParams.toString(), this.consumerSecret);
        return this.url + endpoint + this.searchParams.toString() + '&oauth_signature=' + this.encodedSignature;
    }
}
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...