1

간단한 사이트에서 Braintree를 설정하고 있습니다. Braintree는 지불 플래 타이 폼입니다. 서버를 통해 레일즈 내부에서 자바 스크립트 함수 호출하기 hidden_field_tag ​​

<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
    :redirect_url => confirm_payment_url, 
    :transaction => {:type => "sale", :amount => @amount } 
) %> 

지금, 내 경우에는 내가 단지 세 가지 옵션을 가지고 있기 때문에 자바 스크립트 함수를 통해 트랜잭션의 양을 설정할

, 그리고 다음과 같이 자신의 예에서 그들은 hiddel_field_tag를 사용합니다. 나는

<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
    :redirect_url => confirm_payment_url, 
    :transaction => {:type => "sale", :amount => "return amountFunction();" } 
) %> 

function amountFunction() 
{ 
    var amount = $('input[name=optionsRadios]:radio:checked').val(); 
    return amount; 
} 

처럼 많은 것들을 시도했지만 작동하지 않습니다. 나는 레일에서 학습 단계에있다. 볼 수 있듯이. 그래서 질문은 어떻게 변수를 변경하거나 함수를 hidden_field_tag에 추가합니까? 나는 또한 만들 수있다 : amount => "variable-set-by-javascript"하지만 그렇게 할 수는 없다.

답변

0

저는 Braintree에서 일합니다. 이 질문을 놓쳤 습니다만, support에 연락하거나 문제를 파악했기를 바랍니다.

Braintree::TransparentRedirect.transaction_data 메서드는 양식이 렌더링되기 전에 서버에서 실행되므로 나중에 평가되고 금액을 반환하는 문자열이 아닌 실제 금액이 필요합니다.

또한 고객은 일반적으로 클라이언트 측/외부 금액을 transaction_data으로 설정할 수 없으며 설정하지 않아야합니다. 그러면 누군가가 브라우저에서 금액을 변경하고 원하는 금액만큼 거래를 제출할 수 있습니다. 돈을 지불 할 수 있으므로 피하고 싶은 것입니다.

이 질문을 올린 후 Braintree.js을 시작했습니다. 그러면 서버에 전체 양식을 게시하고 금액이 유효한지 before submitting the form to Braintree으로 확인할 수 있습니다. 새 통합에 대해 통합 방법을 사용하거나 결제 흐름을 다른 방식으로 변경해야 할 경우 통합 방법으로 업그레이드하는 것이 좋습니다.

관련 문제