我们有一个PHP系统,我们正在使用Micah Carrick的“PHP Paypal IPN集成类”(http://www.micahcarrick.com/php-paypal-ipn-integration-class.html).
在他的示例代码中,他建议我们在将POST变量传递给PayPal之前验证它们
switch ($_GET['action']) {
case 'process': // Process and order...
...
// This is where you would have your form validation and all that jazz.
// You would take your POST vars and load them into the class like below,
// only using the POST values instead of constant string expressions.
// For example, after ensureing all the POST variables from your custom
// order form are valid, you might have:
//
// $p->add_field('first_name', $_POST['first_name']);
// $p->add_field('last_name', $_POST['last_name']);
...
$custom=$_SESSION['sess_user_id']."~".$_POST['promo_code'];
$p->add_field('user_id', $_SESSION['sess_user_id']);
$p->add_field('custom', $custom);
$p->add_field('amount', $_POST['amount']);
...
$p->submit_paypal_post(); // submit the fields to paypal
break;
但是,对于上面提到的变量,我们并没有这样做。
我们是否应该在(a)此阶段或在PayPal(b)返回数据或两者都返回的阶段进行验证?
我们应该如何验证数据呢?
答案 0 :(得分:1)
您应该在将它们发送到PayPal之前验证它们。您应检查空变量,类型是否正确(数量不应包含字母),字符数(如果适用)是正确的。基本上这些字段应该反映出你期望在那里找到的东西。
答案 1 :(得分:1)
我的猜测是两种情况。
必须在发送数据之前进行验证。
在回应时,我认为这是一件好事。
答案 2 :(得分:1)
您应该在将用户发送到PayPal之前以及当您收到确认付款的PayPal IPN消息时,在两端验证并验证您的数据。
验证在确保用户支付正确的金额之前,他们被发送到正确的PayPal帐户,并且您有一个针对转换的标识符(在“自定义”变量中)以允许您结婚付款PayPal确认后的正确用户/购买。
验证确保再次支付了正确的金额后,交易标识符就会出现,有效且正确,并且用户/购买会更新以反映转换结果。