Angular 7使用cardinity
我目前正在开发一个Angular 7项目,我真的需要使用支付服务Cardinity。我做了一些研究,并没有很多人看到我在Angular中实现它,但我需要使用这个服务。我为cardinity API找到了这个node.js'wrapper':我使用的是
npm install --save cardinity-js
它确实出现在我的node_modules中。
它说要在你的node.js项目中包含库,如:
const cardinity = require('cardinity-js');
我现在在Angular组件中使用它:
import * as cardinity from 'cardinity-js';
我还使用以下行将库放在angular.json文件的scripts部分中:
"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-payponent.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);
});
我的node_modules中的crypto-js文件夹附带了cardinity-js库,我做错了什么?谢谢。
回答如下:警告!危险!
我看了一下cardinity-js的存储库,并认识到这个库根本不适合在浏览器中使用 - 它只是一个支付服务提供商,只能在服务器上实现。
如果你真的发现有人用角度警告他们,这是一个非常糟糕的主意!!!!
从用法示例:
const client = new CardinityClient(
<your_key>,
<your_secret>
);
传递给CardinityClient的这些值是您的个人卡片注册数据,这些数据必须是客户端代码不可用的。否则有人可以找到并窃取他们,这将允许他们以你的名义进行交易。
实现此目的的正确方法是在服务器上创建一个支付路由,从客户端接收支付数据,例如“Payment-Methode”,“Card-Number”,然后使用这些值执行交易。
从这个问题我建议你应该把这个开发任务交给一个更有经验的开发人员,他知道自己在做什么 - 因为这些是正确的关键 - 否则会发生一些不好的事情,我保证......