条纹网络挂接on Rails的
我知道有存在类似这样的一个问题,但我不认为有人问/回答得很好。条纹网络挂接on Rails的
基本上我有一个工作轨道应用程序,用户可以注册我的订阅,输入信用卡信息等。这一切工作。但我需要处理情况,用户的卡本定期订阅期间的某个点下降的情况。
他们发送的事件类型在这里:https://stripe.com/docs/api?lang=ruby#event_types。
我无法访问我的应用程序中的charge.failed对象。
webhooks上的文档也在这里:https://stripe.com/docs/webhooks,任何帮助将不胜感激。
您需要创建一个控制器来基本接受和处理请求。这是非常简单的,尽管最初并不是那么简单。这里是我的hooks_controller.rb的例子:
class HooksController < ApplicationController
require 'json'
Stripe.api_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def receiver
data_json = JSON.parse request.body.read
p data_json['data']['object']['customer']
if data_json[:type] == "invoice.payment_succeeded"
make_active(data_event)
end
if data_json[:type] == "invoice.payment_failed"
make_inactive(data_event)
end
end
def make_active(data_event)
@profile = Profile.find(User.find_by_stripe_customer_token(data['data']['object']['customer']).profile)
if @profile.payment_received == false
@profile.payment_received = true
@profile.save!
end
end
def make_inactive(data_event)
@profile = Profile.find(User.find_by_stripe_customer_token(data['data']['object']['customer']).profile)
if @profile.payment_received == true
@profile.payment_received = false
@profile.save!
end
end
end
的高清接收机是,你必须给网络挂接指向条纹接口的视图。视图接收的JSON和我用它来更新用户在支付失败或成功的事件概貌。
不错!我认为你是对的,这是一个有点吓人最初但一旦我想通了这没什么大不了的。我的控制器实际上看起来有点像这样(虽然不是很漂亮)。谢谢! – Zach 2012-03-11 04:51:54
非常有帮助!仅供参考JSON解析的结果不是无关紧要的哈希,因此您可能需要改为使用event_json = JSON :: parse(request.body.read).with_indifferent_access。 – runako 2012-05-10 21:12:00
对于最好的[安全]实践,使用事件ID('data_json ['id']')来检索Stripe :: Event对象,然后从中获取数据,因为它肯定是合法的。 - 如[Stripe的webhooks参考页面](https://stripe.com/docs/webhooks)所述。 – anxiety 2012-07-13 20:28:40
这是一个不太理想的检测情况看...
条纹需要一种方式来“强制”网络挂接用于测试目的。目前,您可以制作的最短订阅时间为1周(在测试模式下);这将是大有帮助,如果你可以将其设置为1分钟,1个小时,甚至根本就导致实时出现回调,这样你就可以测试你的API响应系统。
本地测试非常棒,但是没有任何东西可以取代现实世界,通过互联网,webhooks /回调来生活。不得不等待一周(!)会严重影响项目进度。
现在,最低限度是1天,但仍然认同你。 – Francisco 2016-06-09 15:59:01
[使用条纹webhooks与Rails]可能的重复(http://*.com/questions/9371566/using-stripe-webhooks-with-rails) – Hauleth 2012-10-29 06:50:31