Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法从条带webhook应用更改_Ruby On Rails - Fatal编程技术网

Ruby on rails 无法从条带webhook应用更改

Ruby on rails 无法从条带webhook应用更改,ruby-on-rails,Ruby On Rails,我已经在hooks\u控制器中设置了我的webhook,并且我正在成功地接收webhook 但是,由于某些原因,“发票.付款成功”的更改不起作用 class HooksController < ApplicationController protect_from_forgery :except => :receiver require 'json' Stripe.api_key = "key" def receiver data_json = JSON.

我已经在hooks\u控制器中设置了我的webhook,并且我正在成功地接收webhook

但是,由于某些原因,“发票.付款成功”的更改不起作用

class HooksController < ApplicationController
  protect_from_forgery :except => :receiver
  require 'json'

  Stripe.api_key = "key"

  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)
    @user = User.find_by_stripe_customer_id(data['data']['object']['customer'])
    if @user.service_id.nil?
      @user.service_id = "test"
      @user.save!
    end
  end
end
我还在rails控制台中重新创建了make_active方法,在这里输入User.find_by_stripe_customer_id(“value”)并成功保存

响应日志: 2015年1月13日16:47:39-0800,127.0.0.1开始张贴“/挂钩/接收器” HooksController#receiver作为XML进行处理 参数:{“id”=>“evt”{15KFJRKSH0PJIOYJ1MSTQXDI”,“创建”=>1421196456,“livemode”=>false,“键入”=>“发票.付款成功”,“数据”=>{“对象”=>{“日期”=>1421196455,“id”=>“在15KFJRKSH0PJIOYJKOB0P1F中”=>1421196455,“期间开始”=>1421196455,“期间结束”=>1421196455,“行”=>{“对象”=>“列表”,“总计数”=>1”,有假,“更多url”=>“/v1/invoices/in_15kfjrksh0pjioyjkob0p1f/lines”,“data”=>[{“id”=>“sub\u 5VghThK2pwN5kM”,“object”=>“line\u item”,“type”=>“subscription”,“livemode”=>false,“amount”=>500,“currency”=>“usd”,“proration”=>false,“period”=>“start”=>1421196455,“end”=>142387455},“subscription”=>nil”,“quantity”=>1,“plan”=>“interval”=>“month”=>“interval”=>“month”=>“monkey”、“month”=>“month”=>“monkey”=”J创建“=>1421185125”,金额“=>500”,货币“=>usd”,“id”=>“1”,“对象”=>“计划”,“生活模式”=>false,“间隔计数”=>1,“试用期”=>nil,“元数据”=>{},“报表描述符”=>“monkeywork-monkeyjr”},“说明”=>nil,“元数据”=>{}}}>,“小计”=>500,“总计”=>500,“客户”=>“客户”=>“客户”=>“客户”=>“发票”尝试“=>真”,“结束“=>真”,“原谅”=>假,“支付”=>真,“生活模式”=>假,“尝试计数”=>1,“到期金额”=>500,“货币”=>“美元”,“起始余额”=>0,“结束余额”=>0,“下一次支付尝试”=>零,“网络钩子”=>零,“收费”=>“CHU 15KfJrKSH0PjiOYJ03y6dXP1”,“折扣”=>零,“申请费”=>零,“订阅”sub_5VghThK2pwN5kM,“tax_percent”=>nil,“metadata”=>{},“statement_descriptor”=>nil,“description”=>nil,“receipt_number”=>nil},“object”=>“event”,“pending_webhooks”=>1,“request”=>“iar_5VghmqLO5Fy6Rt”,“api_version”=>“2014-12-22”,“hook”=>“id”=>“evt\u 15KfJSH0PjOYTQXDI”,“created”=>1426456,“livemode”=>发票.付款成功,“数据”=>{“对象”=>{“日期”=>1421196455,“id”=>“在15KFJRKSH0Pjioyjkob0P1F中”,“期间开始”=>1421196455,“期间结束”=>1421196455,“行”=>{“对象”=>“列表”,“总计数”=>1,“有更多的”=>错误,“url”=>“/v1/发票/在15KFJRKSH0Pjioyjkob0F中”=>“=>”订阅“=>”livemode“=>false”,“amount”=>500,“currency”=>“usd”,“proration”=>false,“period”=>“{”start”=>1421196455,“end”=>1423874855,“end”=>订阅“=>nil”,“quantity”=>1,“plan”=>“{”interval“=>“monkeyjr”,“created”=>1421185125,“amount”=>500,“currency”=>“usd”,“id”=>“1”,“object”=>“plan”,“livemode”=>false,“间隔计数”=>1,“试用期天数”=>0,“元数据”=>{},“声明描述符”=>“monkeywork-monkeyjr”},“描述”=>0,“元数据”=>{}}}>,“小计”=>500,“总计”=>500,“客户”=>“客户”=>“客户5VghMF74h7yUFG”,“对象”=>“发票”=>尝试的”=>true,“关闭的”=>true,“原谅的”=>false,“付费的”=>true,“生活模式的”=>false,“尝试计数”=>1,”“到期金额”=>500,“货币”=>usd”,“起始余额”=>0,“结束余额”=>0,“下一次付款尝试”=>nil,“网络钩子”=>nil,“收费”=>“CHU 15KfJrKSHPjiOYJ03y6dXP1”,“折扣”=>nil,“申请费”=>nil,“订阅”=>“sub 5VGHK2PWN5KM”,“税收百分比”=>nil,“元数据”=>,“声明描述符”=>nil,=>nil,”收据编号“=>nil}}”,对象“=>”事件,“挂起的webhooks”=>1,“请求”=>“iar_5VghmqLO5Fy6Rt”,“api_版本”=>“2014-12-22”} “cus_5VghMF74h7yUFG” 布局/应用程序中呈现的hook/receiver.html.erb(0.1ms) 渲染布局/nav/_default.html.erb(0.8ms) 渲染布局/_header.html.erb(12.2ms) 渲染布局/_alerts.html.erb(0.1ms) 渲染布局/_footer.html.erb(0.1ms)
在183ms内完成200 OK(视图:182.4ms | ActiveRecord:0.0ms)

1。在这里,您试图获取数据_json[:type]。而不是使用数据_json['type']。使用下面提到的接收器操作。

def receiver
    data_json = JSON.parse(request.body.read)
    data_event = 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
2:您试图在make\u active方法中使用数据散列(仅接收器本地)。只需将该值分配给变量data\u事件并将其传递给make\u active方法。请检查以下代码:

def make_active(data_event)
   user = User.find_by_stripe_customer_id(data_event)
  if user.service_id.nil?
    user.service_id = "test"
    user.save!
  end
end
检查我的控制台:

def make_active(data_event)
   user = User.find_by_stripe_customer_id(data_event)
  if user.service_id.nil?
    user.service_id = "test"
    user.save!
  end
end

我已经创建了示例应用程序并将其连接到stripe以测试webhook。
您可以在此引用我的代码。

当webhook点击您的公开URL时,您是否得到完整的响应?请将响应日志粘贴到此处!@Ajay添加。但是无法设置其样式,因此看起来更具可读性。抱歉:(由于某些原因,当我使用您的时,我得到500个错误,而使用我的时,我得到200个错误。即使我的没有应用更改。您从哪里得到错误?请告诉我!我从未使用过stripe,只是为您配置并检查了!请粘贴错误日志,我可以帮助:)
def make_active(data_event)
   user = User.find_by_stripe_customer_id(data_event)
  if user.service_id.nil?
    user.service_id = "test"
    user.save!
  end
end