2017-02-01 5 views
0

스트라이프 요금 청구를 처리하는 내 서버에 의존하는 클라이언트가 여러 개 있습니다. 청구가 처리되면 고객에게 청구가 성공적으로 생성되었는지 여부와 발생한 이유에 대한 JSON을 보내려합니다.레일 : 서버에서 스트라이프 응답의 JSON 반환

내 서버는 here으로 볼 수 있습니다. 나는 일부에 접근 할 필요가

curl -XPOST https://murmuring-wave-13313.herokuapp.com/charges.json?stripeToken=tok_*****************&[email protected] 

내가 있으리라 믿고있어 : 나는 다음과 같은 URL 내 편안하고 API를 호출하는 것을 시도하고있다

class ChargesController < ApplicationController 
    protect_from_forgery 
    skip_before_action :verify_authenticity_token 

    def new 
    end 

    def create 
     # Amount in cents 
     @amount = 500 

     customer = Stripe::Customer.create(
     :email => params[:stripeEmail], 
     :source => params[:stripeToken] 
    ) 

     charge = Stripe::Charge.create(
     :customer => customer.id, 
     :amount  => @amount, 
     :description => 'Rails Stripe customer', 
     :currency => 'usd' 
    ) 

     #*WHAT I TRIED DOING THAT DIDN'T WORK* 
     # respond_to do |format| 
     # msg = { :status => "ok", :message => "Success!"} 
     # format.json { render :json => msg } 
     # end 

    rescue Stripe::CardError => e 
     flash[:error] = e.message 
     redirect_to new_charge_path 
    end 
end 

:

내 컨트롤러에 대한 코드는 다음과 같다 metadata하지만 어떻게해야할지 확신이 서지 않습니다. 내가 제대로 스트라이프의 응답의 JSON을 반환하기 위해 내 요금 컨트롤러를 구성 할 수 있습니다 어떻게 500 Response

결과

?

답변

0

그래서 나는 자신을 때리고 있습니다. 내가 실현 한 것은 Stripe::Charge 개체를 만든 후 JSON으로 serialize 된 Charge 개체가 할당 된 것입니다.

Charge 인스턴스의 모든 메타 데이터에 액세스하려면 charge.attribute_name을 호출하면됩니다. 예를 들어 유효 청구 금액 인 경우 charge.status은 "succeeded"을 반환합니다. 청구 할 배정 된 항목은 JSON이므로 요청한 형식이 JSON 인 경우 render charge을 간단하게 반환 할 수 있습니다. 이 상태에서`{템플릿 => "요금을 생성 /"렌더링} 내가 왕으로 망쳐과`format.html를 저지하는 것을 잊었다 실현

class ChargesController < ApplicationController 
    protect_from_forgery 
    skip_before_action :verify_authenticity_token 

    def new 
    end 

    def create 
     # Amount in cents 
     @amount = 500 

     customer = Stripe::Customer.create(
     :email => params[:stripeEmail], 
     :source => params[:stripeToken] 
    ) 

     charge = Stripe::Charge.create(
     :customer => customer.id, 
     :amount  => @amount, 
     :description => 'Rails Stripe customer', 
     :currency => 'usd' 
    ) 

     # If in test mode, you can stick this here to inspect `charge` 
     # as long as you've imported byebug in your Gemfile 
     byebug 

     respond_to do |format| 
     format.json { render :json => charge } 
     format.html { render :template => "charges/create"} 
     end 

    rescue Stripe::CardError => e 
     flash[:error] = e.message 
     redirect_to new_charge_path 
    end 
end 
0

왜이 작동하지 않니?

#*WHAT I TRIED DOING THAT DIDN'T WORK* 
respond_to do |format| 
    msg = { :status => "ok", :message => "Success!"} 
    format.json { render :json => msg } # don't do msg.to_json 
    format.html { render :template => "charges/create"} 
end 

로그의 오류는 무엇입니까?

+0

:

근로 충전 컨트롤러는 다음과 같습니다 heroku, 그래서 내가 얻은 오류는 내 원래 질문 (나는 적어도 생각하지 않는다)에 적절하지 않을 것이다. 혼란스러워서 죄송합니다. – beckah

관련 문제