应该比较一个秘密哈希足以验证PayPal IPN消息吗?

时间:2016-09-19 14:41:48

标签: php paypal paypal-ipn

当用户启动结帐流程时,我会在数据库中存储付款条目,并将该付款分配为payment_hash。付款哈希在PayPal的API中作为custom参数传递。

当IPN发送到我的服务器时,我会检查payment_hash字段中的custom是否与我的数据库中的付款匹配,然后处理该付款(更新状态,履行订单等)

问题。我是以正确的方式做到的吗?或者我应该还要比较金额,用户电子邮件或其他字段?

我的哈希值是随机生成的字母数字字符串(64个字符),每次付款尝试/输入时都是唯一的。

基本上是我目前正在使用的代码逻辑(考虑到我得到了$ _POST响应,并使用Paypal服务器验证了它)

$payment_hash = $_POST['custom']; // We will use to find the payment in our database.
$payment_id = $this->get_payment_id_by_hash( $payment_hash );
if ( $payment_id && $payment_id > 0 ) {

    $payment = new MC_Payment( $payment_id );
    $payment->update_payment( $_POST );

}

添加付款条目时,我会生成这样的哈希:

$this->params['PAYMENTREQUEST_0_CUSTOM'] = 'pt_' . mc_rand_hash();

感谢您的投入。

0 个答案:

没有答案