当前位置: 首页 > 知识库问答 >
问题:

如何使用Wix http函数为条带创建Wix Webhookendpoint?

公冶高义
2023-03-14

我在以下章节中使用本指南:

“6:确认支付成功”从Stripe Dashboard测试webhook。

更新:我已经在Wix的包管理器中安装了条带、表达式和正文解析器。这是我最新的Wixhttp-function.js代码:

import {ok, badRequest, response} from 'wix-http-functions';
import stripe from 'stripe';
import express from 'express';
import wixData from 'wix-data';
import bodyparser from 'body-parser';

const key = require('stripe')('sk_test_XXXX'); //use your own Secret Key

const endpointSecret = 'whsec_XXXXXX'; //stripe webhook signing secret

const app = require('express')();

const bodyParser = require('body-parser');

let responseBody = {
          "status": 200,
        };

export function post_checkoutUpdate(request) {


//console.log("Running the function"); // this one works

    app.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => {
  const sig = request.headers['stripe-signature'];

  console('Inside app.post'); //the code doesn't reach here

  let event;

  try {
    event = key.webhooks.constructEvent(request.body, sig, endpointSecret);
  } catch (err) {
    return response.status(400).send(`Webhook Error: ${err.message}`);
  }


  // Handle the checkout.session.completed event
  if (event.type === 'checkout.session.completed') {
    const session = event.data.object;

   console('Checked'); //the code doesn't reach here too

  }

  // Return a response to acknowledge receipt of the event
  response.json({received: true});
});

app.listen(8000, () => console.log('Running on port 8000'));

return response(responseBody);

}

从Stripe Dashboard,我已经将一个测试事件发送到这个webook终结点:https://www

现在,测试网络钩子被成功发送,我可以从服务器收到HTTP状态代码: 200(确定)到Stripe。然而,代码不运行app.post我收到以下错误从Wix站点监控工具:

"jsonPayload":{
"message":"["(node:1) [DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead."]"
}

任何帮助都将不胜感激,谢谢!


共有2个答案

瞿文柏
2023-03-14

你不需要express,我就是这样做的:

import { ok, badRequest, response } from 'wix-http-functions';
import stripe from 'stripe';
import wixData from 'wix-data';

const key = require('stripe')('sk_test_XXXX'); //use your own Secret Key
const endpointSecret = 'whsec_XXXXXX'; //stripe webhook signing secret
let responseBody = {
   "status": 200,
};

export async function post_checkoutUpdate(request) {

    const sig = request.headers['stripe-signature'];
    let event;
    const rawBody = await request.body.text()

    try {
        event = key.webhooks.constructEvent(rawBody, sig, endpointSecret);
    } catch (err) {
        return response.status = 400
    }

   // Handle the checkout.session.completed event
   if (event.type === 'checkout.session.completed') {
      const session = event.data.object;
      console('Checked');
   }

   // Return a response to acknowledge receipt of the event
   response.status = 200
   return response(responseBody);
}
王豪
2023-03-14

您可以将try-catch合并到代码中,并打开站点监视以开始记录后端日志。一旦得到更详细的响应,我们就可以开始调试正在发生的事情。

 类似资料:
  • 问题内容: 我有一个带几个参数的Python函数。在某些情况下,可以忽略其中一些参数。 这些参数通过是字符串,每个都有不同的含义。我可以选择要以任何组合形式传递的可选参数,这一点很重要。例如,或,,或,或所有它们(这些是我的选择)。 如果我可以重载该函数,那就太好了-但我读到Python不支持重载。我试图在列表中插入一些必需的int参数-并收到参数不匹配错误。 现在,我正在发送空字符串来代替前几个

  • 问题内容: 我正在尝试在Swift中构建Promises的基本实现,并且我需要能够向数组中添加函数,但是我不确定如何使它起作用。 我发现,当我尝试执行以下操作时,Swift Playground不会建议您: 这很有道理-Swift无法推断出-的类型,但这就是我的问题所在。我不确定如何预定义函数数组。 是否可以在Swift中创建函数数组?我想是这样,职能是一等公民。 问题答案: 绝对有可能,只需将数

  • 我需要使用Java创建Azure函数BlobTrigger来监视我的存储容器中是否有新的和更新的blob。 使用以下代码尝试 执行时,它显示错误 存储绑定(blob/队列/表)必须具有非空连接。在方法上发现无效的存储绑定: 当添加连接字符串时,它正在工作 为什么我在使用blobtrigger时需要添加连接字符串? 在C#中,它在没有连接字符串的情况下工作: 我没有看到任何Azure函数的Java示

  • 使用此类型类将地图转换为case类: 此函数用于隐式获取正确的映射器 它可以用作 但我也希望能够将此函数与 Option[Map[]] 或 Future[Map[]] 或 List[Map[]] 一起使用。所以我使用这样的函子实现了一个泛型函数: 但是现在这个函数必须用作 。 但是,我希望能够将该功能用作 无需指定函子类型。这在某种程度上是可能的吗? Shapeless的懒惰可以用来解决这个问题吗

  • 我试图使用Java8实现管道设计模式,下面的文章供我参考: https://stackoverflow.com/a/58713936/4770397 但问题是,我不知道如何将声明为抽象方法。

  • 我想出的在方括号内的类名后面添加args的各种想法也都崩溃了。

  • 问题内容: 假设我要编写一个在切片中查找值的函数 我直观地想写: 但是我无法通过Go做到这一点。我可以与 这样就可以了,但是在我的真实代码中,事情变得更加复杂(我需要进行slices [from:end]等),append等…,如果我在接口中重新定义了所有这些代码,我最终会拥有很多代码。有没有更好的办法? 问题答案: 您可以使用反射。我为项目编写了此函数,请随时使用它:

  • 我想创建PHP SOAP服务器,但不明白如何正确地做到这一点。下面是server.php文件: client.php文件: wsdl文件: 日食图像 压缩所有文件 我用Eclipse Web服务XML编辑器创建了WSDL文件。现在我不知道如何创建功能。我得到以下错误: 致命错误:在C:\wamp\www\soap websiteservice wsdl\client中未找到未捕获的SoapFaul