我一直在尝试使用 Stripe 设置我的第一个 webhook。我找到了一篇看起来像正确的方法的文章,但 2 岁了。我认为它已经过时了。
到目前为止,这是我的控制器。
class StripewebhooksController < ApplicationController
# Set your secret key: remember to change this to your live secret key in production
# See your keys here https://manage.stripe.com/account
Stripe.api_key = "mytestapikey"
require 'json'
post '/stripewebhooks' do
data = JSON.parse request.body.read, :symbolize_names => true
p data
puts "Received event with ID: #{data[:id]} Type: #{data[:type]}"
# Retrieving the event from the Stripe API guarantees its authenticity
event = Stripe::Event.retrieve(data[:id])
# This will send …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试从 Stripe 接收 JSON webhooks。
我读过了:
https://stripe.com/docs/webhooks
他们需要 200 状态响应才能确认收到。
我想在继续处理 JSON 之前解决这个问题。
路线
post 'webhook' => 'web_hook#webhook'
Run Code Online (Sandbox Code Playgroud)
控制器
Stripe.api_key = "sk_test_whatsupbuttercup"
class WebHookController < ApplicationController
protect_from_forgery :except => :webhook
def webhook
render status: 200
end
end
Run Code Online (Sandbox Code Playgroud)
使用此设置,当我测试 webhook 时,Stripe 收到 500 错误。
我在YAML文件中有一堆哈希(它用于某些服务器的基于Puppet/Hiera的配置),如下所示:
---
apache_vhosts:
'webuser.co.uk':
ip: '*'
port: '80'
serveraliases: ['www.webuser.co.uk',]
add_listen: false
docroot: '/home/webuser/public_html'
docroot_owner: 'webuser'
docroot_group: 'apache'
serveradmin: 'webmaster@webuser.co.uk'
scriptalias: '/home/webuser/public_html/cgi-bin/'
access_log_format: '\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"'
override: 'all'
users:
'webuser':
ensure: 'present'
gid: '500'
managehome: true
home: '/home/webuser'
password: '$6$zix5AzRheEzQwadthjvLNh.8maO6o4DU4Y0POTaS6xfgjfdvihP2O/UQN6eVDHjG2hTCT6VTLk5HsXeB9FF0xMlYiYY9W1'
password_max_age: '99999'
password_min_age: '0'
shell: '/sbin/nologin'
uid: '500'
Run Code Online (Sandbox Code Playgroud)
我需要以自动方式在Ruby中附加这些哈希值.这个想法是一个请求进来并命中一个运行ruby脚本的webhook,该脚本添加了一个新的Apache VHost和随附的用户.从操作YAML的角度来看,Ruby文档非常不合适,谷歌搜索没有提出任何相关的东西.也许有人可以指出我正确的方向?
我在Meteor中有一个ReSTFul API.我使用Mandrill,Stripe和其他库中的钩子来更新集合.
Router.route('/mandrill/message_rejected', { where: 'server' })
.post(function () {
var request = EJSON.parse(this.request.body.mandrill_events);
var rejects = _.map(_.where(request, {
event: 'reject'
}, {
return object.msg.email;
});
Meteor.users.update({
emails: {
$elemMatch: {
"address": {
$in: rejects
}
}
}
}, {
$set: { status: 'rejected' }
});
this.response.end();
});
Run Code Online (Sandbox Code Playgroud)
我的问题是; 我该如何自动化测试呢?该请求应该来自Mandrill.有没有办法以一致的方式测试webhook消息?
当我(4个月前)将Eventbrite API集成到我的应用程序中时,我得到了响应以及订单请求的与会者详细信息(即https://www.eventbriteapi.com/v3/orders/454268667/?token = SXXXX ..... XXX).
但今天,我检查了订单请求的响应,但我没有收到与会者的详细信息和ticket_class_id.他们是否更改了API响应格式?如何获取订单的与会者详细信息和ticket_class_id?
我需要在生产服务器中解决这个问题.
现在我得到这样的回复(没有与会者详细信息和ticket_class_id).
{
"resource_uri": "https://www.eventbriteapi.com/v3/orders/454268667/",
"id": "454268667",
"changed": "2015-09-11T09:34:03Z",
"created": "2015-09-11T09:34:02Z",
"costs": {
"payment_fee": {
"currency": "USD",
"display": "$0.00",
"value": 0
},
"gross": {
"currency": "USD",
"display": "$0.00",
"value": 0
},
"eventbrite_fee": {
"currency": "USD",
"display": "$0.00",
"value": 0
},
"tax": {
"currency": "USD",
"display": "$0.00",
"value": 0
},
"base_price": {
"currency": "USD",
"display": "$0.00",
"value": 0
}
},
"name": "Breen Ho",
"first_name": "Breen",
"last_name": "Ho",
"email": "breenXXX@gmail.com",
"status": "placed",
"time_remaining": …Run Code Online (Sandbox Code Playgroud) GitBook允许content传输到不同的格式,但有一个选项可以下载文件和目录(如文本)?
例如,GitHub code也存储在服务器上,也存储在贡献者的PC上.
我已经使用 Trello 的 API(Node JS 包)添加了 webhooks 。如何获取当前的 webhook 或如何获取现有的 webhook ID?
无法通过 API 找到方法:https : //developers.trello.com/advanced-reference/webhook
这里说:
有三种方法可以删除 webhook。
- 在 webhooks 上使用 DELETE 路由 DELETE https://api.trello.com/1/webhooks/[WEBHOOK_ID]?key=[APPLICATION_KEY]&token=[USER_TOKEN]
- 如果来自 Trello 的 webhook 请求在 POST 到 callbackURL 时收到 HTTP 410 Gone 响应,则 webhook 将被删除。
- 如果 webhook 绑定的 token 被撤销或过期,那么 webhook 将被删除
第一种方法需要 ID,第二种方法需要我每次要删除 webhook 时都关闭服务器,第三种方法也不好。知道如何获取 ID 吗?
我正在为我们的解决方案评估 Twilio Webhooks。它很有魅力。我想检测并验证它是真正的 TWILIO 调用而不是 BOT/FAKE,它正在调用我们的 EndPoint(IPN 侦听器,我们为 Twilio WebHook 侦听器指定的 URL)。
我不喜欢检查 UserAgent 值包含“TwilioProxy”的想法。你推荐更好的方法吗?
我想为某些用户输入设置电报的 webhook,以便电报自动回复预定义的问题,并且我能够编写运行良好的程序,但是当我尝试为该程序设置 webhook 时,它显示错误:
{
"ok": false,"error_code": 400,"description": "Bad Request: bad webhook: Ip is reserved"
}
Run Code Online (Sandbox Code Playgroud)
我试图这样设置 webhook:
https://api.telegram.org/bot<token>/setwebhook?url=https://localhost/Manisha/bot.php
Run Code Online (Sandbox Code Playgroud) 星期一早上我们遇到了一个奇怪的问题,我们的CI管道工作是从Bitbucket webhooks触发的.
在12月1日TLSv1和TLSv1.1弃用之前,我怀疑我们只有来自这些IP地址的webhook:

我们所有的管道运行正常,我们的kibana日志显示很少的错误.
周一早上,当人们开始制作PR(触发构建,检查和测试)时,人们抱怨他们的管道工作没有触发.我打开设置来记录webhook请求,发现从上游服务器返回的403个数:
.
无论如何,我必须为我们的CI的白名单规则添加一堆IP地址.这为我们解决了403s.
我希望能够分享这一经验,看看是否有其他人在周末发生了TLS弃用问题.