임시 값을 서버로 전달하고 Braintree SDK로 다시 전달

제롬

다음보기는 자바 스크립트 코드의 경고에서 알 수있는 적절한 임시 값을 생성합니다.

<div class='row'>
  <div class='small-12 columns text-center'>
    <h4><%= t('proceed_to_payment') %> <%= number_to_currency(@clientorder.payment_amount) %></h4>
    <% if [email protected]? %>
      <%= form_tag transacted_clientorders_path(id: @clientorder.id), id: 'checkout' do %>
        <input type="hidden" id="nonce" name="payment_method_nonce" />
        <div id='dropin-container'></div>
        <%= submit_tag t('submit'), id: 'submit-button' %>
      <% end %>
      <script>
        $.ajax({
          method: "POST",
          url: "/transacted?id=<%= @clientorder.id %>&locale=<%= I18n.locale %>",
          data: { payment_method_nonce: payload.nonce }
        })
      </script>
      <script>
        var button = document.querySelector('#submit-button');
        braintree.dropin.create({
          authorization: "<%= @client_token %>",
          container: '#dropin-container'
          }, function (createErr, instance) {
            button.addEventListener('click', function () {
              instance.requestPaymentMethod(function (err, payload) {
                alert(payload.nonce);
                console.log(payload.nonce);
                console.log(err);
                if (err) {
                  console.log('Error', err);
                  return;
                }
             // Add the nonce to the form and submit
               document.querySelector('#nonce').value = payload.nonce;
               form.submit();
             });
            });
          });
      </script>
    <% end %>
  </div>
</div>

컨트롤러 액션

  def transacted
    @result = Braintree::Transaction.sale(
      amount:  @clientorder.payment_amount,
      payment_method_nonce: params[:payment_method_nonce], 
      options: {
        submit_for_settlement: true},
      )
    if @result.transaction.status == "submitted_for_settlement"
      [...]

그러나 추가 조치로 이어지지는 않습니다. @resultnonce가 제출되지 않았기 때문에 nil이며 실제로 다음을 위해 전달되지 않은 금액도 기록 된 요청 매개 변수입니다.

{"utf8"=>"✓",
 "authenticity_token"=>"qXjwFuI4mNRM+ZFoQ5TwvUBv58fLNVJyQVHJm/FfBdIaArbfhjJP0WirTe+7FnSl+/asJ+fY+d+JPA7xKNLP6Q==",
 "payment_method_nonce"=>"",
 "commit"=>"Submit",
 "id"=>"4",
 "locale"=>"en"}

이것이 적절한 경로에서 벗어난 곳은 어디입니까?

제롬

몇 가지 잘못된 점이 있습니다.

  1. 해당 위치의 ajax 호출은 nonce를 처리하지 못합니다.
  2. 이렇게 설정하면 서버에 대한 두 번의 호출이 있습니다 : ajax 호출과 폼 호출 자체
  3. 항목 2의 결과는 양식 호출에 빈 임시 값이 있으므로 생성 !result.success?되므로 해시 result.errors가 결국 처리되어야합니다.

그러므로,

<div class='row'>
<div class='small-12 columns text-center'>
  <div id="dropin-container"></div>
  <button id="submit-button" class='button success'><%= t('proceed_to_payment') %> <%= number_to_currency(@clientorder.payment_amount) %></button>
  <script>
    var button = document.querySelector('#submit-button');

    braintree.dropin.create({
      authorization: '<%= @client_token %>',
      container: '#dropin-container'
    }, function (createErr, instance) {
      button.addEventListener('click', function () {
        instance.requestPaymentMethod(function (err, payload) {
          // Submit payload.nonce to your server
        $.ajax({
          method: "POST",
          url: "<%= transacted_clientorders_path(id: @clientorder.id, locale: I18n.locale) %>",
          data: { payment_method_nonce: payload.nonce }
        })
        if (err) {
          console.log('Error', err);
          return;
        }
           // Add the nonce to the form and submit
                document.querySelector('#nonce').value = payload.nonce;
                form.submit();
        });
      });
    });
  </script>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

jqgrid에서 PHP로 값을 전달하고 전달 된 값에 따라 데이터를 표시합니다.

분류에서Dev

모달에 값을 전달하고 일반 텍스트로 표시

분류에서Dev

한 화면에서 다른 화면으로 값을 전달하고 값을 표시하는 Android / Java

분류에서Dev

Android 어댑터에서 값으로 전달하고 참조로 전달 하시겠습니까?

분류에서Dev

ViewController를 닫고 이전을 다시로드하거나 데이터를 다시 전달 하시겠습니까?

분류에서Dev

Xamarin Portable, 선택한 목록 항목에서 MainPage로 다시 탐색하고 값을 전달하는 방법

분류에서Dev

get 메소드로 값이 전달 된 URL을 다시 작성하고 다른 페이지로 전달하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 참조로 전달 : 목록을 전달하고 문자를 추가 하시겠습니까?

분류에서Dev

반응 : Child1 상태 값을 부모에게 전달하고 부모에서 Child2로 다시 전달

분류에서Dev

지시문의 값을 ng-model로 다시 전달

분류에서Dev

Perl에서 값을 다른 스크립트로 전달하고

분류에서Dev

배열을 다시 본체로 전달

분류에서Dev

값을 동적으로 전달하는 PL / SQL 프로 시저

분류에서Dev

Flask에서 페이지 새로 고침시 라디오 버튼 값 전달

분류에서Dev

fgets는 무시되고 구조 배열로 값을 전달하는 데 문제가 있습니다.

분류에서Dev

전달 된 값을 합산하고 동일한 이름 mysql로받은 값에서 빼십시오.

분류에서Dev

값으로 반환하고 const 참조로 전달할 때 임시 생성 방지

분류에서Dev

버튼 클릭시 한 입력에서 다른 입력으로 값 전달

분류에서Dev

선택한 값을 콤보 상자에서 함수로 동시에 가져오고 전달하는 방법

분류에서Dev

자식 구성 요소에 prop 값을 설정하고 값을 app.js 상태로 다시 전달하고 반응

분류에서Dev

Asp.Net은 버튼 클릭시 GridView에서 Modal TextBox로 값을 전달합니다.

분류에서Dev

CLI에서 네이티브로 네이티브 문자열 유형을 전달하고 다시 반환

분류에서Dev

표현식을 전달하고 Python 인터프리터에서 결과를 Django로 다시 가져 오나요?

분류에서Dev

MVC 4 드롭 다운 목록 버튼으로 값을 전달 하시겠습니까?

분류에서Dev

C # MVC 버튼 값을 컨트롤러로 다시 전달하는 방법은 무엇입니까?

분류에서Dev

Meteor.js : 서버에서 CSV를 구문 분석하고 node-csv-string을 사용하여 클라이언트로 다시 전달

분류에서Dev

Meteor.js : 서버에서 CSV를 구문 분석하고 node-csv-string을 사용하여 클라이언트로 다시 전달

분류에서Dev

nginx에서 다른 서버로 연결을 전달하는 방법 (역방향 프록시?)

분류에서Dev

webform에서 jquery 호출로 문자열 값을 전달 하시겠습니까?

Related 관련 기사

  1. 1

    jqgrid에서 PHP로 값을 전달하고 전달 된 값에 따라 데이터를 표시합니다.

  2. 2

    모달에 값을 전달하고 일반 텍스트로 표시

  3. 3

    한 화면에서 다른 화면으로 값을 전달하고 값을 표시하는 Android / Java

  4. 4

    Android 어댑터에서 값으로 전달하고 참조로 전달 하시겠습니까?

  5. 5

    ViewController를 닫고 이전을 다시로드하거나 데이터를 다시 전달 하시겠습니까?

  6. 6

    Xamarin Portable, 선택한 목록 항목에서 MainPage로 다시 탐색하고 값을 전달하는 방법

  7. 7

    get 메소드로 값이 전달 된 URL을 다시 작성하고 다른 페이지로 전달하는 방법은 무엇입니까?

  8. 8

    파이썬에서 참조로 전달 : 목록을 전달하고 문자를 추가 하시겠습니까?

  9. 9

    반응 : Child1 상태 값을 부모에게 전달하고 부모에서 Child2로 다시 전달

  10. 10

    지시문의 값을 ng-model로 다시 전달

  11. 11

    Perl에서 값을 다른 스크립트로 전달하고

  12. 12

    배열을 다시 본체로 전달

  13. 13

    값을 동적으로 전달하는 PL / SQL 프로 시저

  14. 14

    Flask에서 페이지 새로 고침시 라디오 버튼 값 전달

  15. 15

    fgets는 무시되고 구조 배열로 값을 전달하는 데 문제가 있습니다.

  16. 16

    전달 된 값을 합산하고 동일한 이름 mysql로받은 값에서 빼십시오.

  17. 17

    값으로 반환하고 const 참조로 전달할 때 임시 생성 방지

  18. 18

    버튼 클릭시 한 입력에서 다른 입력으로 값 전달

  19. 19

    선택한 값을 콤보 상자에서 함수로 동시에 가져오고 전달하는 방법

  20. 20

    자식 구성 요소에 prop 값을 설정하고 값을 app.js 상태로 다시 전달하고 반응

  21. 21

    Asp.Net은 버튼 클릭시 GridView에서 Modal TextBox로 값을 전달합니다.

  22. 22

    CLI에서 네이티브로 네이티브 문자열 유형을 전달하고 다시 반환

  23. 23

    표현식을 전달하고 Python 인터프리터에서 결과를 Django로 다시 가져 오나요?

  24. 24

    MVC 4 드롭 다운 목록 버튼으로 값을 전달 하시겠습니까?

  25. 25

    C # MVC 버튼 값을 컨트롤러로 다시 전달하는 방법은 무엇입니까?

  26. 26

    Meteor.js : 서버에서 CSV를 구문 분석하고 node-csv-string을 사용하여 클라이언트로 다시 전달

  27. 27

    Meteor.js : 서버에서 CSV를 구문 분석하고 node-csv-string을 사용하여 클라이언트로 다시 전달

  28. 28

    nginx에서 다른 서버로 연결을 전달하는 방법 (역방향 프록시?)

  29. 29

    webform에서 jquery 호출로 문자열 값을 전달 하시겠습니까?

뜨겁다태그

보관