2017-11-22 3 views
1

방금 ​​생성 한 새 Paypal 계정에 간단한 지불을 실행하기 위해 PayPal 버튼을 통합하려고합니다. 가이드를 따라 단추를 렌더링했지만 클릭하면 새 창이 나타납니다. 아무 일도 일어나지 않습니다. "로드 잠금"은 회전을 계속하지만 새 창이나 내 페이지에는 오류가 표시되지 않습니다. "onError()"함수를 호출하지 않습니다. 내가 뭘 잘못한 건지 모르겠다! 나는 가이드의 지시를 따랐다!페이팔 익스프레스 체크 아웃 창이 계속로드 됨

다른 웹 사이트를 탐색 할 때 새 창에서로드 /로드 중 일부가 가져 오기/실행되는 동안 내 케이스에서 아무 것도 실행되지 않습니다.

이 내 HTML 및 관련의 .js 파일 (그 아니라 일부)

//THIS FUNCTION IS CALLED TO DISPLAY A NEW ELEMENT CONTAINING THE BUTTON 
 
function payment(todelete) { 
 

 
    destroy(todelete); 
 
    $("#pay").delay(timeFade).fadeIn(timeFade); 
 
    
 
    paypal.Button.render({ 
 
     env: 'sandbox', 
 
     client: { 
 
      sandbox: 'MYKEY', 
 
      production: 'MYKEY' 
 
     }, 
 

 
     commit: true, 
 

 
     payment: function(data, actions) { 
 
      fetch("/getOldAmount").then(function(res){ 
 
       return (res.json()); 
 
      }).then(function(data){ 
 

 
       var old_amount = data[0].Donation; 
 
       var amount_tot = $("#amount").val(); 
 
       //BUILDING A RANDOM TEST JSON, NOT RELATED TO MY CODE 
 
       var payment_json = { 
 
         transactions: [ 
 
          { 
 
           amount: { 
 
            total: '1.00', 
 
            currency: 'USD' 
 
           } 
 
          } 
 
         ] 
 
        }; 
 
       if(amount_tot > old_amount){ 
 
       //WHEN CLICKING PAYPAL BUTTON I CAN SEE THIS LOG, SO EVERYTHING IS FINE HERE 
 
        console.log("EXECUTING PAYPAL POST"); 
 
        return actions.payment.create(payment_json); 
 
       } else { 
 
        console.log("Amount too low to execute transaction"); 
 
       } 
 

 
      }); 
 
     }, 
 

 
     onAuthorize: function(data, actions) { 
 
      return actions.payment.execute().then(function(payment) { 
 
       console.log("AUTHORIZED"); 
 
      }); 
 
     }, 
 
     onError: function(data, actions){ 
 
      console.log("ERRORRRRRR"); 
 
      console.log(data); 
 
     } 
 

 
    }, '#paypal-button'); 
 
    
 
}
<div class="container pagination-centered" style="display: block"> 
 
      <div class="form-group"> 
 
       <label class="richest_header" for="amount">ENTER AMOUNT</label> 
 
       <input type="text" class="form-control amount-field" id="amount" placeholder="Amount..." name="amountField"> 
 
      </div> 
 
      <div id="paypal-button"></div> 
 
</div> 
 

 
<!-- HEADER --> 
 
    [...] 
 
<script src="https://www.paypalobjects.com/api/checkout.js"> 
 
    <script type="text/javascript" src="assets/script/myscript.js"></script> 
 
    [...]

내가 더 일을해야합니까입니까? 코드를 추가해야합니까? 내가 잘못하고 있니? 왜 페이팔 문서가 열악합니까?

+0

'하지만 오류가 새 창에 표시되지 않으며, -이 브라우저 ** 개발자 ** 도구 콘솔을 참조합니까? 즉 오류가 없습니다. 여러 브라우저 (Firefox, Chrome, IE, Edge 등)를 사용해 보셨습니까? 모두 똑같은 행동을합니까? 'onAuthorize'에서 정의되지 않은 것으로 해결 된 약속 이외의 것을 반환해야합니까? –

+0

localhost에서 파일을 시작하거나 file : ///? –

+0

낮은 세부 사항을 위해 죄송합니다. 모든 페이지의 콘솔, 버튼을 설정 한 페이지 및 PayPal이 지불을 시작하기 위해 생성 한 새 창을 참조합니다. 버튼을 통해 실행 된 호출이 오류 (예 : "잘못된 요청")를 반환하지만 잘못된 결과 (예 : json이 올바르게 작성되지 않은 경우)를 수행하면 아무 것도 발생하지 않기 때문에이를 지정하고 있습니다. 나는 Firefox, Edge, Chrome 및 Internet Explorer가있는 모든 브라우저를 사용해 보았습니다. 언제나 같은 오래된 이야기. –

답변

0
당신은 payment()에 약속 반환해야

- 내 page`에 return fetch("/getOldAmount").then(...

+0

... 이것이 로딩 스피너를 보는 정확한 이유입니다. 그들은 약속을 되풀이하지 않으므로 팝업을 통해 언제 체크 아웃 경험을 보여줄지 알 수 없습니다. – bluepnume

+0

답변 해 주셔서 감사합니다! 나는 그것을하려고 노력할 것이다. 그리고 만일 그것이 문제라면 나는 당신에게 알릴 것이다;) –

+0

고맙다! 그것은 일했다 !!!! 왜 잘못되었는지 설명 할 수 있습니까? –

관련 문제