Ошибка плагина nativescript-stripe: ошибка при отображении страницы оплаты в виде кредитной карты в виде полосы

Я разрабатываю приложение NativeScript (чистый Typescript, а не Angular или React) и хочу отобразить страницу с CreditCardView, импортированным из nativescript-stripe. Это терпит неудачу каждый раз, когда он пытается представить страницу XML с формой кредитной карты. Возможность создания этой страницы является для меня критической проблемой "шоу-стоппера". У меня работает то же приложение, что и приложение Cordova, и я надеюсь перейти на NativeScript.

За одну неделю я смог выучить NativeScript с нуля и продублировать то, что занимало более месяца с Cordova, но мне требуется возможность обрабатывать платежи через Stripe, и я не хочу обрабатывать детали платежа напрямую. Я бы предпочел использовать форму Stripe, чтобы не отвечать за вопросы конфиденциальности и безопасности, которые возникнут у меня, если я соберу информацию в приложении. Я установил плагин nativescript-stripe версии 5.0.6 и использую tns версии 5.1.0.

Кто-нибудь знает, есть ли обязательный плагин, который я должен установить перед установкой плагина nativescript-stripe? Я знаю, что другие люди используют этот плагин, и я предполагаю, что не сталкивался с этой проблемой, поэтому я думаю, что это должно быть что-то уникальное для моей установки. Код, который я пробую, почти полностью взят из демонстрационного кода плагина.

В Cordova мне удалось встроить форму кредитной карты Stripe в мои html-страницы, и после получения авторизации мое приложение передавало информацию в написанный мной серверный веб-сервис Java, который отправлял ее в Stripe. Таким образом, я не использую и не раскрываю свой личный ключ Stripe для приложения, и мне также не потребуются никакие плагины. Поскольку NativeScript не использует html-формы, мне нужен плагин, позволяющий использовать форму кредитной карты. Я все еще ожидаю использовать свой внутренний веб-сервис для обработки оставшейся части транзакции. Все, что мне нужно сделать, это получить авторизованный платеж Stripe. Я использую Windows 10 для разработки приложения (так же, как мое приложение Cordova) и отправляю информацию в веб-службу Java, работающую на другом ПК с Windows в моей сети. Веб-служба Java работает на Tomcat 9, хотя этот сбой происходит до того, как я дохожу до этого.

Here's my xml file:
<Page xmlns:stripe="nativescript-stripe" loaded="pageLoaded" 
class="page">
 <StackLayout>
    <stripe:CreditCardView id="card"/>
     <Button text="Create Token" tap="createToken" 
         class="btn btn-primary"> 
     </Button>
     <Label text="{{ token }}" textWrap="true"></Label>
  </StackLayout>

and this is the js file behind it:
import { EventData, fromObject } from "data/observable";
import * as app from "tns-core-modules/application";
import { Page } from "tns-core-modules/ui/page";
import { Button } from "ui/button";

let stripe: Stripe;
const tokenSource = fromObject({ token: "" });

export function pageLoaded(args: EventData) {
    stripe = new Stripe("my test key is here");
    tokenSource.set("token", "");

    const page = <Page> args.object;
    page.bindingContext = tokenSource;
}

export function createToken(args: EventData) {
    tokenSource.set("token", "Fetching token...");
    const page = (<Button>args.object).page;
    const ccView: CreditCardView = page.getViewById("card");
    stripe.createToken(ccView.card, (error, token) => {
      const value = error ? error.message : formatToken(token);
      tokenSource.set("token", value);
    });
}

function formatToken(token: Token): string {
    return `ID: ${token.id}\nCard: ${token.card.brand} 
(...${token.card.last4})`;
}

Here's the stack trace that I get when the page is invoked:

01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.callJSMethodNative(Native Method)
01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1120)
01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.callJSMethodImpl(Runtime.java:1000)
01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.callJSMethod(Runtime.java:987)
01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.callJSMethod(Runtime.java:967)
01-07 18:31:35.520  4070  4070 E AndroidRuntime:
      at com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err: com.tns.NativeScriptException: 
System.err: Calling js method onCreateView failed
System.err: 
System.err: TypeError:
       Cannot read property 'CardInputWidget' of undefined System.err:
       File:
"file:///data/data/<my package name>/files/app/tns_modules/nativescript- 
 stripe/stripe.js, line: 226, column: 52

Когда я нажимаю на ссылку на имя файла, упомянутую в конце, мне говорят, что файл не может быть найден.

ОБНОВИТЬ!!! - НАЙДЕН ОТВЕТ: Я нашел ответ на эту проблему, которая оказалась проблемой сборки. Ответ на: [ https://github.com/triniwiz/nativescript-stripe/issues/38][1]

В основном мне пришлось удалить мой файл package-lock.json, а также мои node_modules, hooks и папки платформы. Тогда я побежал нпм я. В моем случае npm предупредил меня, что мой файл webpack.config.js и мой файл tsconfig.tns.json в корневой папке рабочей области отличаются от файлов в новом каталоге node-modules. У них были корректирующие меры, но я просто снова удалил все, включая эти два файла, и перезапустил npm i. После добавления моей платформы Android и перестройки плагин работает, как и ожидалось, и форма отображается правильно. Так что эта проблема была решена.

0 ответов

Другие вопросы по тегам