2017-01-06 2 views
2

내 angular2 앱에서 braintrees 드롭을 포함시키는 솔루션을 찾으려고했지만 적절한 앱을 찾을 수 없습니다. 나는 this angular2/braintree solution을 보았지만 더 이상 유지되지 않으며 방문자가 braintree 웹 사이트를 참조한다고 맨 위에 말합니다. 신용 카드 양식을 초기화하는 데 문제가 없지만 payment_nonce를 서버에 보내면 값은 null입니다.angle2 앱에서 braintree의 드롭 인 UI를 사용하는 방법은 무엇입니까?

아무도 제안을하거나 angular2 앱에서 braintrees를 UI에 포함시키는 방법에 대한 예가 있습니까? 감사!

+0

전체 공개 : 나는 브레인 트리에서 작동합니다. Braintree의 Javascript SDK와 Angular 2 사이에는 근본적인 비 호환성이 없습니다. 그러나 Angular 2를 사용하는 유지 보수 된 예제가 없으므로 여기서 정보는 해결책을 제공하기에 충분하지 않습니다. 더 많은 지원을 받으려면 코드와 웹 사이트에 대한 자세한 내용과 함께 [Braintree Support] (https://support.braintreepayments.com/)에 문의하십시오. – jake

+0

같은 것을 찾으십시오. 브레인 트리 사람들이 대답 했습니까? –

+0

응답을 받았습니다. 그들은 angular2가 공식적으로 지원되지 않지만 braintree API에는 각도 2와 호환되지 않는 근본적인 것이 아무것도 없다고 말했다. 나는 규칙적인 javascript/angular2의 추악한 혼합과 함께 작동하도록했다. – Dan

답변

0

의견에서 언급했듯이 이것은 추악한 해결책이었습니다. 하지만 onPaymentMethodReceived를 사용하여 토큰을 얻을 수 있었고 그 값을 숨겨진 입력에 추가하고 양식을 서버에 보냈습니다. 내 양식에는 특별한 요구 사항이 있으므로 ngNoForm 특성을 사용해야했습니다.

... 
     <input id="nonce" type="text" hidden [(ngModel)]="nonce" name="nonce"> 

... 

</form> 

ngOnInit() { 

    var url = window.location.href; 
    var id = this.getEmployeeUserId(url); 
    this.employeeId = id; 

    this.ghttp.getEmployeeByuserId(id) 
     .then((data)=>{ 
     this.day30Price = data._addAmount; 
     this.day60Price = data._add2month; 
     this.day90Price = data._add3month; 
     }); 

    this.splashhttp.getToken() 
     .then((res)=>{ 
     var id = res._body; 

     braintree.setup(id, 'dropin', { 
      container: 'dropin-container', 
      onPaymentMethodReceived: function (obj) { 

      document.getElementById("nonce").value = obj.nonce; 

      var myForm = document.getElementById("myForm"); 

      myForm.submit(); 
      } 
     }); 
     }); 

    }