Angular 7 использовать Cardinity-JS - PullRequest
0 голосов
/ 12 февраля 2019

В настоящее время я работаю над проектом Angular 7, и мне действительно нужно использовать платежный сервис Cardinity.Я провел некоторое исследование, и я видел мало людей, которые внедрили его в Angular, но мне нужно использовать этот сервис.Я нашел этот «обертку» для node.js для API Cardinity: https://www.npmjs.com/package/cardinity-js Я использовал

npm install --save cardinity-js

И он появился в моих node_modules.

В нем сказано включитьбиблиотека в вашем проекте node.js, например:

const cardinity = require('cardinity-js');

Теперь я использую это в своем компоненте Angular:

import * as cardinity from 'cardinity-js';

Я также поместил библиотеку в раздел сценариев в моем angular.json файл с этой строкой:

"scripts": [
              "node_modules/cardinity-js/index.js"
            ]

Я думал, что все в порядке, но я получаю эту ошибку:

ERROR Error: Uncaught (in promise): TypeError: crypto.randomBytes is not a function
TypeError: crypto.randomBytes is not a function
    at push../node_modules/crypto-random-string/index.js.module.exports.len (index.js:9)
    at push../node_modules/unique-string/index.js.module.exports (index.js:4)
    at CardinityClient.createHeader (cardinityclient.js:29)
    at CardinityClient.createRequestObjectForNewPayment (cardinityclient.js:50)
    at CardinityClient.createPayment (cardinityclient.js:71)
    at FollowersCheckoutPayComponent.<anonymous> (followers-checkout-pay.component.ts:42)
    at step (main.js:1079)
    at Object.next (main.js:1060)
    at main.js:1054
    at new ZoneAwarePromise (zone.js:891)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14051)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at drainMicroTaskQueue (zone.js:595)

Что касается кода, я использую именно то, что в документации сказано, что я долженделаю, единственное отличие состоит в том, что я выполняю обещание, которое вы получаете от функции makePayment (), чтобы получить такие данные:

 promises.push(
        makePayment().then((data) => {
          return data;
        })
    );
    Promise
        .all(promises)
        .then((data) => {
          console.log(data);
        });

Папка crypto-js в моих node_modules поставляется с cardinity-jsбиблиотека, что я делаю не так?Спасибо.

1 Ответ

0 голосов
/ 12 февраля 2019

ВНИМАНИЕ!ОПАСНО!

Я взглянул на репозиторий cardinity-js и обнаружил, что эта библиотека вообще не предназначена для использования в браузере - это платежный провайдер, предназначенный для реализации только на сервере.

Если вы действительно нашли кого-то, кто реализует это в угловом формате, предупредите его, что это очень очень плохая идея !!!!

Из примера использования:

   const client = new CardinityClient(
     <your_key>,
     <your_secret>
   );

Эти значения, передаваемые в CardinityClient, являются вашими личными регистрационными данными, которые не должны быть доступны на стороне клиента.В противном случае кто-то может найти и украсть их, что позволит им выполнять транзакции от вашего имени.

Правильный способ реализовать это - создать маршрут оплаты на вашем сервере, который получает данные оплаты от клиентаНапример, «Payment-Methode», «Card-Number», а затем использует эти значения для выполнения транзакции.

Из этого вопроса я рекомендую передать эту задачу разработки более опытному разработчику, которыйзнает, что он делает - так как это важно, чтобы получить право - иначе случится что-то плохое, я обещаю вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...