2017-10-21 12 views
0

Je peux charger avec succès checkout.js dans Angular 4 app, rendre le bouton Paypal, la nouvelle fenêtre apparaît, je confirme le paiement, le paiement est traité mais je ne sais pas comment configurer onAuthorize rappel pour traiter la réponse dans angulaire 4 (comme pour montrer le succès et stocker un enregistrement de paiement à MongoDb). Voici mon code. Je peux voir le premier console.log contenant la réponse de paiement mais je ne peux pas accéder à la portée du composant, donc rien après ce premier console.log est exécuté. Je n'ai pas d'erreur dans la console. Même le fichier console.log ("successful!") N'est pas traité.Traitement Paypal onAuthorize rappel dans Angular 4

onAuthorize: (data, actions) => { 
      return actions.payment.execute().then(function(payment) { 
       console.log("response = " + JSON.stringify(payment)); 
       this._alertService.success("The extension of subscription was succesfull!"); 
       this.user.contracts.push({ 
         "acquired": new Date(payment.create_time), 
         "price": payment.transactions[0].amount.total, 
         "expires": new Date(this.user.expires.getFullYear()+this.selectedAccountExtensionOption.addedYears, this.user.expires.getMonth(), this.user.expires.getDate()) 
         }); 
       console.log("successful!");  

      }); 
     }, 
+0

Vous vous souciez de partager votre intégration? –

Répondre

0

Le problème est que le contexte (this) n'est pas disponible dans le rappel. La meilleure solution serait de lier this comme expliqué dans answer to this question

solution alternative consiste à émettre événement personnalisé dans callback PayPal (documentation here)

let event = new CustomEvent('dosomething', { data: "some data" });

puis attraper cet événement dans votre composant. Documentation here.

@HostListener('dosomething') onDoSomething() { // do what you need }

+0

Un événement personnalisé a résolu le problème! –