gpt4 book ai didi

javascript - Angular POST 路由未连接到 Nodejs 以进行 Stripe 集成

转载 作者:行者123 更新时间:2023-12-03 04:18:08 24 4
gpt4 key购买 nike

我正在将 Stripe 结帐集成到我的网络应用程序中。我已经在 Angular 前端实现了 Stripe checkout,并且还创建了一个后端,该后端应该接收 stripe checkout 传递的 token 。提交 strip 结帐表单后,我的 POST http 请求不会将数据传递到后端。尽管我从 Stripe 获得了 200 状态,但我的 Nodejs 没有得到任何响应。

这是我通过表单调用的结帐方法。

 openCheckout() {
let total = (this.donation * 100);
let handler = (<any>window).StripeCheckout.configure({
key: 'key_test',
locale: 'auto',
token: (token: any) => {
const transaction = new Charge(total, token.id);
console.log('From navbar nonObject ' + token.id + ' ' + total);
console.log(transaction + ' From navbar');
this.keyService.charge(transaction);
}
});
handler.open({
name: 'Delaware March for Jesus',
description: 'Donation',
amount: total
});
this.donation = 0;
this.donationEmail = '';
}

这是我的服务代码,用于实现收费并将 token 传递到后端。

charge(transaction: Charge) {
const body = JSON.stringify(transaction);
const headers = new Headers({'Content-type': 'application/json'});
return this.http.post(this.keysUrlDev + '/charge', body, { headers: headers })
.map((response: Response) => response.json())
.catch((error: Response) => Observable.throw(error.json()));
}

我为交易构建的简单 Angular 模型。

export class Charge {
constructor(public amount: number,
public token: string) {}
}

我在 nodejs 上的 POST 路由获取 token 并将其通过 stripe 库 charge.create 方法传递。

router.post('/charge', function(req, res, next) {
var amount = req.body.amount;
var token = req.body.token;
stripe.charges.create({
amount: amount,
currency: 'usd',
description: 'Delaware March For Jesus Donation',
source: token
}, function(err, charge) {
if (err) {
console.log(req.body.amount + ' From POST' + req.body.token);
return res.status(500).json({
title: 'An error occured',
error: err
});
}
res.status(201).json({
message: 'Charged successfully',
obj: charge
});
});
});

我已从前端获取 token 并通过 Postman 成功发送 POST 请求。它记录了成功的交易并将其显示在我的 Stripe 帐户中。但是,通过 Angular 发送请求时,这些都不会发生。

我使用 console.log 来跟踪代码停止的位置,并且可以在 keyService 收费方法中检索 token 和金额。所以肯定是http.post没有正常工作。

最佳答案

我遇到了几乎完全相同的相同类型的问题,而使这项工作对我有用的更改是删除 InMemoryWebApiModule.forRoot(InMemoryDataService),并将 API 作为简单的剪切和粘贴构建到我的 Express 后端中。 (我最初使用 Angular 'Heroes' 教程,内存中 API 就是在那里实现的。)

如果我广泛地理解这个问题,那就是这个内存中的 API 接管了 Angular 的 HTTP 的常规功能。一旦发布,它就再次正常运行 - 尽管我无法在技术上更具体。

我希望它也适合你。

关于javascript - Angular POST 路由未连接到 Nodejs 以进行 Stripe 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44059252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com