문제

나는 이것과 비슷한 존재하는 또 다른 질문이 있다는 것을 알고 있지만, 나는 그것이 물어 보거나 잘 대답되었다고 생각하지 않는다.

기본적으로 사용자가 내 가입에 가입 할 수있는 작업 레일 앱이 있으며, 모두 일하고있는 신용 카드 정보 등을 입력하십시오.그러나이 반복 구독 중에 어떤 시점에서 사용자 카드가 거부되는 상황을 처리해야합니다.

보내는 이벤트의 유형은 다음과 같습니다. 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
.

DEF 수신자는 스트라이프 인터페이스에서 웹 훅을 가리키는보기입니다.이보기는 JSON을 수신하고 지불이 실패하거나 성공하는 경우 사용자 프로필을 업데이트하는 데 사용합니다.

다른 팁

stripe_event Gem을 사용하여 훨씬 쉽습니다 :

https://github.com/integrallis/stripe_event

이것은 이상적인 테스트 상황보다 적습니다 ...

스트라이프는 테스트 목적으로 웹 호스를 "강제로"할 수있는 방법이 필요합니다.현재, 당신이 할 수있는 최단 구독은 1 주일 (테스트 모드에서)입니다.1 분, 1 시간 동안 설정할 수있는 경우 훨씬 더 도움이 될 것입니다.

로컬 테스트는 훌륭하지만, 실제, 라이브, 인터넷, 웹 훅 / 콜백을 대체하는 것은 아무 것도 없습니다.일주일을 기다려야합니다 (!) 심각하게 프로젝트가 늦어졌습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top