我正试图建立一个电子商务应用程序,卖家可以张贴他们的项目,并出售给买家在我的平台。移动应用程序是用颤振构建的,我正在使用Firestore和Storage来处理数据,Stripe作为我的支付处理选择。
我遇到了这个指南的媒体(https://medium.com/flutter-community/build-a-marketplace-in-your-flutter-app-and-accept-payments-using-stripe-and-firebase-72f3f7228625),做了一个伟大的工作,让我的脚湿在网上支付处理。
然而,他在书中提到的一件事似乎并不是一种安全的付款方式。
他在指南中所做的是,在客户端应用程序中,他提出了https帖子请求。
final http.Response response = await http.post(‘$urlamount=$amount¤cy=GBP&paym=${paymentMethod.id}’);然后,在云函数中,他接着说:
exports.StripePI = functions.https.onRequest(async (req, res) => {
const stripeVendorAccount = 'acct_someAccountIdHere';
stripe.paymentMethods.create(
{
payment_method: req.query.paym,
}, {
stripeAccount: stripeVendorAccount
},
function(err, clonedPaymentMethod){
if(err != null) {
console.log(err);
} else {
stripe.paymentIntents.create(
{
**amount = req.query.amount**, // Security concern??
currency = req.query.currency,
...etc
}
)
}
}
);必须从客户端传递总金额似乎不是一个好的安全实践?我可以想象,也许有足够的知识的人可以反向工程应用程序,并编辑这个量变量?
,那么,设置金额的正确方法是什么?
不过,我已经看过并阅读了谷歌消防团队的视频和帖子中的所有官方指南,但当涉及到它的数量时:
const amount = snap.data().amount;我曾经想过使用云函数以某种方式将所有商品的价格和数量相加/汇总,从而生成数量,但是,这真的是解决这个问题的最有效的方法吗?如果有N个卖家从买家那里订购了M个商品,那岂不是造成了云函数的大量不必要的计算吗?
我是新的移动和在线支付,所以首先感谢您的耐心。
发布于 2020-08-24 05:04:21
您销售的任何东西的数量都应该在您的服务器上设置,最好是从数据库中获取。
而不是从你的客户发送金额,你应该发送一个数量代替。
假设你卖的是每件10美元的T恤衫,一个用户想买2件,而不是把amount=20发送到你的服务器上,而是发送quantity=2。然后,在您的服务器上,您应该查找一件T恤衫的成本,并将其乘以该数量(在确保该数量大于零之后)。
设置数量而不是数量意味着恶意用户可以反向工程您的端点,并指示您的服务器,例如,他们想要购买100件T恤衫的价格为0美元。
在不必要的计算方面,我不会太担心,因为所有这些都会深入到检索项目单位成本,并将其乘以量化。
https://stackoverflow.com/questions/63550469
复制相似问题