Ioni c 4 Stripe. js Интеграция - PullRequest
       13

Ioni c 4 Stripe. js Интеграция

0 голосов
/ 25 марта 2020

Я интегрировал полосу. js в свой проект ioni c через индекс. html.

Это прекрасно работает, но я не могу сохранить полосу. js результаты в локальной переменной.

Сначала код индекса. html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>Ionic App</title>

  <base href="/" />

  <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <meta name="format-detection" content="telephone=no" />
  <meta name="msapplication-tap-highlight" content="no" />

  <link rel="icon" type="image/png" href="assets/icon/favicon.png" />

  <script src="https://js.stripe.com/v3/" async></script>

  <!-- add to homescreen for ios -->
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>

<body>
  <app-root></app-root>
</body>

</html>

И home.page.ts

import { Component } from '@angular/core';
declare var Stripe;

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})


export class HomePage {

  stripe = Stripe('my_public_key', {stripeAccount: "connected_stripe_account_key"});
  obj:any;

  constructor() 
  {}

  doCheck()
  {
    this.stripe
    .confirmCardPayment('someIntentID')
    .then(function(result) 
    {
      console.log(result.paymentIntent);
      this.obj = result.paymentIntent;
    });
  }
}

Код Stripe работает окончательно, я получать данные, и я могу видеть это в консоли. Но я не могу сохранить его в переменной obj. Я получаю сообщение об ошибке: Uncaught (в обещании): TypeError: Невозможно установить свойство 'obj' из неопределенного TypeError: Невозможно установить свойство 'obj' из неопределенного

Как я думаю, Проблема в том, что я не могу получить доступ к объекту в функции полосы. Есть ли возможность решить эту проблему?

Спасибо!

1 Ответ

2 голосов
/ 25 марта 2020

У вас проблема с этим, поскольку она не указывает на ваш класс в анонимной функции. Используйте функцию стрелки, чтобы избежать этого:

this.stripe
    .confirmCardPayment('someIntentID')
    .then((result) =>
    {
      console.log(result.paymentIntent);
      this.obj = result.paymentIntent;
    });
...