gpt4 book ai didi

angular - Paypal - 从服务器发送金额

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:17 27 4
gpt4 key购买 nike

这是我第一次尝试在我的网站上实现支付,使用 paypal 时我发现几乎没有什么难以掌握的。

在我的应用程序中,用户可以上传他想翻译的任意数量的视频。每个视频都可以翻译成多种语言。总价根据视频持续时间和用户选择的请求语言计算得出。

我以最简单的方式将此代码添加到我的网站

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="myFakeBusinees">
<input type="hidden" name="item_name" [value]="transactionId">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="amount" [value]="totalPrice">
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" name="submit" (click)="submit()">
<input type="submit" value="Paypal"/>
</form>

在 paypal 中,我为我的服务器配置了一个 returnUrl,并在付款后向用户显示一个摘要。

我对这种方法的问题是用户可以从客户端更改金额隐藏字段。虽然我可以在调用 returnUrl 后在我的服务器中检查支付金额,但我不想启用这种情况。

我试图读取服务器 api,但我不确定它是否符合我的要求。我想到了下面的流程,不知道是否正确,paypal是否支持。

流程:

  • 用户在客户端创建订单。每个订单都有一个transactionId
  • 当用户点击支付按钮时,客户端向服务器发送带有transactionId的请求。
  • 服务器计算总价,并发送 payapel 为该金额创建一个 token 。服务器返回 token 给客户端。
  • 客户端收到 token 并被导航到 paypal。
  • 在 Paypal 网站上,用户选择他的付款方式并付款。 Paypal 服务器随后向 myserver 返回对此 token 的确认。
  • 我的服务器根据 transactionId 检查 token ,如果一切正常,则向用户显示“您的订单已创建”页面。

任何帮助将不胜感激。从文档中找出流程对我来说有点困难。

最佳答案

基本上你想要做的是在用户点击支付按钮并获取 return_url取消网址从前端使用 window.location 例如: window.location.origin + '/success-url' 这样在本地服务器上测试时就没有问题,舞台和制作。然后当用户被重定向到https://example.com/success-url时,paymentIdPayerID将被传递payapal 在 URL 本身中,然后从该页面您可以在后端调用 executeOrder

这是 documentation 的链接

下面是一个示例 nodejs 代码:

exports.createOrder = (data, callback) => {
/* First step when user clicks 'Pay with paypal' on place-order screen */
var create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": data.return_url,
"cancel_url": data.cancel_url
},
"transactions": [{
"amount": {
"total": getAmountFromNoOFVideos(),
"currency": "USD"
},
"description": "Video Translation"
}]
};

paypal.payment.create(create_payment_json, function (error, payment) {
if (error) {
callback(error);
} else {
if(payment.payer.payment_method === 'paypal') {
for(var i=0; i < payment.links.length; i++) {
var link = payment.links[i];
if (link.method === 'REDIRECT') {
redirectUrl = link.href;
}
}
}
callback(null, redirectUrl, payment.id)
}
});
}

exports.executeOrder = (data, callback) => {
/* Second and final step in place-order screen */
let paymentId = data.paymentId;
let PayerID = data.PayerID;

var details = { "payer_id": PayerID };
paypal.payment.execute(paymentId, details, function (error, payment) {
if (error) {
console.log("\x1b[31m", "PAYPAL ERROR: ", error)
callback(error);
} else {
callback(null, true);
}
});
}

Paypal 流程:- 假设您的网站链接是 www.videotranslate.com

  1. 用户点击您网站上的支付按钮 www.videotranslate.com
  2. 您对 API www.videotranslate.com/api/createOrder 进行 AJAX 调用来自您的 Angular 组件/服务(取决于您的设计)
  3. 在 AJAX 调用的成功函数中,您获得 redirectUrl来自后端的 createOrder 函数。
  4. 当用户通过 paypal 成功付款时,paypal 将将用户重定向到 www.videotranslate.com/success-callback
  5. 现在,您可以在此页面上对 API 进行 AJAX 调用www.videotranslate.com/api/executeOrder 来自 Angular
  6. 如果用户在 paypal 上取消付款,paypal 会将用户重定向到www.videotranslate.com/cancel-callback,这里可以显示错误 toast 并要求用户再次付款。

关于angular - Paypal - 从服务器发送金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164810/

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