电子商务,成功支付重定向

时间:2014-06-19 08:30:12

标签: php

在为朋友构建电子商务模块时,我遇到了一些问题。 整个过程如下:

  • 用户进入网站并点击产品
  • 用户将产品存储到购物车并点击“转到结帐”
  • 用户填写个人详细信息,如姓名,地址,电话号码或电子邮件,然后单击“下一步”
  • 此时会话包含cutomer和cart内容的所有个人详细信息
  • 用户点击其中一个支付网关,如paypal和支付他的产品

每个支付网关都可以通过以下方式之一重定向客户:

  • 错误路径
  • 中止路径
  • 成功之路

因此,如果用户成功付款,他将被重定向到https://mydomain/payment_status?success 它会使用整个交易详情和成功状态插入到数据库中,以便可以发送产品。

问题在于每个人都可以将某些东西放到购物车上并直接进入https://mydomain/payment_status?success

我们可以制定一些安全措施,例如https://mydomain/payment_status?success&transaction_code=2783j4238942j4k2m

然而它仍然是硬编码的,并且在一次付款之后用户将知道散列,据我所知,像paypal这样的网关不能自己生成能够确定交易成功的事情。

任何人都知道如何处理这个问题?

--- --- EDIT

Paypal表格:

echo '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">';
echo '<input type="hidden" name="cmd" value="_cart">';
echo '<input type="hidden" name="upload" value="1">';
echo '<input type="hidden" name="business" value="' . Config::Details('email') . '">';

//Products details

echo '<input type="hidden" name="currency_code" value="' . Languages::lang_item('code') . '">';
echo '<input type="hidden" name="amount" value="' . $this->_total . '">';
echo '<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but03.gif" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure!">';
echo '</form>';

Sofort表格:

echo '<form method="post" action="https://www.sofort.com/payment/start">';
    echo '<input name="amount" type="hidden" value="' . $this->_total . '"/>';
    echo '<input name="currency_id" type="hidden" value="' . Languages::lang_item('code') . '"/>';
    echo '<input name="reason_1" type="hidden" value="' . Config::Details('reason_1') . '"/>';
    echo '<input name="reason_2" type="hidden" value="' . Config::Details('reason_2') . '"/>';
    echo '<input name="user_id" type="hidden" value="' . Config::Details('user_id') . '"/>';
    echo '<input name="project_id" type="hidden" value="' . Config::Details('project_id') . '"/>';
    echo '<input type="submit" value="Odesłać"/>';
echo '</form>';

这些是我们的支付网关,一旦成功,重定向就像我在上面展示的那样。 我还检查了重定向后是否提供了$_POST个详细信息,但没有

1 个答案:

答案 0 :(得分:1)

听起来PayPal的IPN(即时付款通知)对您有用。看看https://developer.paypal.com/webapps/developer/docs/classic/products/instant-payment-notification/ - 基本上,您设置了一个页面来收听来自PayPal的回复。成功付款后,PayPal会安全地与您的收听者页面进行通信,以便您可以将订单标记为付款并完成。