最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在NestJS中添加對Shopify的WebHook驗證詳解

 更新時間:2023年08月08日 10:26:17   作者:阿兵  
這篇文章主要為大家介紹了如何在NestJS中添加對Shopify的WebHook驗證詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景介紹

Shopify 是一家一站式SaaS 模式的電商服務(wù)平臺,總部位于加拿大首都渥太華,專注于為跨境電商用戶提供海外品牌建立及銷售渠道管理。

為電商賣家提供搭建網(wǎng)店的技術(shù)和模版,管理全渠道的營銷、售賣、支付、物流等服務(wù)。

代碼實現(xiàn)

Koa

如果你是想在Koa 中對接Shopify, 則可以參照下面的做法:

// 這是你從Shopify 上得到的接口校驗密鑰
const secret = 'xxxx';
const app = new Koa();
async function run() {
  // 其他的中間件的使用 / app.use...
  app.use(async (ctx, next) => {
    const isShopify = ctx.request.path.startsWith('設(shè)置在Shopify 上的WebHook url');
    if (!isShopify) {
      return koaBody({
        multipart: true,
        formidable: {
          maxFileSize: 2000 * 1024 * 1024, // 設(shè)置上傳文件大小最大限制,默認(rèn)2M
        },
      })(ctx, next);
    } else {
      let str = '';
      await new Promise((resolve, reject) => {
        try {
          ctx.req.on('data', function(data: string) {
            str += data;
          });
          ctx.req.on('end', function(chunk: string) {
            resolve(str);
          });
        } catch (e) {
          str = '{}';
          reject(e);
        }
      });
      const buf = Buffer.from(str);
      const hash = crypto.createHmac('sha256', secret).update(buf).digest('base64');
      const isOK = hash === ctx.request.headers['x-shopify-hmac-sha256'];
      ctx.request.body = JSON.parse(str);
      if (!isOK) {
        ctx.status = 403;
        ctx.body = 'Forbidden';
        return;
      }
      return await next();
    }
  })

Nest

如果你是想在Nest 中對接Shopify, 則可以參照下面這篇文章進(jìn)行前期設(shè)置:

我前面寫過一篇在NestJS 中添加對Stripe 的WebHook 驗證。因為前期的基本流程和步驟是完全一樣的,我在這篇中就不再贅述了。前期如何截獲Response raw body 相關(guān)的內(nèi)容及怎么寫一個Interceptor 在這就不再重復(fù)了。參照另外一篇的內(nèi)容照做就可以了。下面重點講怎么處理加密內(nèi)容。

// 這是你從Shopify 上得到的接口校驗密鑰
const secret = 'xxxx';
// 這是Shopify 響應(yīng)返回的Buffer 體
const buf = '....'
// 這是從響應(yīng)頭里取出來的單次校驗哈希
const hash = request.headers['x-shopify-hmac-sha256'];
const isOK = hash === crypto.createHmac('sha256', secret).update(buf).digest('base64')
// 如果isOK === false 則不對,如果是正常的Shopify 通知則為true.
// crypto 是原生Node 自帶的庫 import * as crypto from 'crypto'

以上就是如何在NestJS中添加對Shopify的WebHook驗證詳解的詳細(xì)內(nèi)容,更多關(guān)于NestJS添加Shopify WebHook的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

左贡县| 临沂市| 隆回县| 普陀区| 建德市| 嵩明县| 泽州县| 仁化县| 镇安县| 馆陶县| 潍坊市| 吉水县| 陵水| 武强县| 澄江县| 韩城市| 莒南县| 华容县| 肇州县| 榆林市| 辽中县| 靖江市| 略阳县| 道真| 克山县| 普宁市| 商都县| 清新县| 手机| 崇阳县| 舒城县| 吴忠市| 铜陵市| 张北县| 昌图县| 潞城市| 蓬溪县| 华亭县| 乌什县| 潢川县| 洛川县|