验证条带付款金额

时间:2017-12-08 05:53:09

标签: php laravel stripe-payments

对于我的购物网站,我在前端有一个简单的条纹实现,用户点击“通过条带付费”按钮在弹出窗口中填写CC细节并点击继续。如果一切顺利,我会获得一个$_POST['stripeToken']的令牌,我将按照以下方式处理(用于网络付款)

try
{

  $stripe = new Stripe();
  $stripe = Stripe::make();

  $customer = $stripe->customers()->create([
   'email' => $_POST['email_id'],
   'source'  => $_POST['stripeToken']
  ]);

  $charge =  $stripe->charges()->create([
  'customer' => $customer['id'],
  'amount'   => $total_amount, // note this is calculated again on server to prevent fraud
  'currency' => 'sgd'
  ]);


}
catch (\Cartalyst\Stripe\Exception\CardErrorException $e)
{
  return view('front.payment_error')->with('message', $e->getMessage());
}

我们不能依赖来自前端表单提交的$total_amount,因为用户可以轻松欺骗这个金额,只需支付$ 1条纹并获得一个令牌并欺骗$total_amount1因此以他想要的任何价格获得产品,这就是为什么我需要在服务器上(从他的购物车)再次计算他的`$ total_amount,并使用它来处理服务器上的条带。如果该数量与令牌所代表的数量不匹配, stripe会自动引发异常并防止欺诈。

到目前为止很好......但问题出在处理API时,移动应用程序将使用自己的库处理条带。在客户端,他们只会发送最终版(用于在db中录制),但显然我不能用它来收费,因为已经在移动设备上完成了。因为这些天很容易改变应用行为(通过修补apks)或工艺自定义HTTP请求(邮递员),在付款的情况下必须进行服务器检查。

所以我的问题是如何从令牌中验证用户支付的实际金额

即。反向转换stripeToken => actual paid amount

更新 这是我在Stripe的情况下看到的 https://developer.paypal.com/docs/integration/mobile/verify-mobile-payment/

0 个答案:

没有答案