PayPal Payments Advanced - 验证发送的参数以确认和取消页面

时间:2013-04-20 15:56:23

标签: paypal

我正在使用带有TEMPLATE = TEMPLATEC的PayPal Payments Advanced。我已经想出了如何创建IFRAME并从PayPal接收确认/取消/ silent_post响应。但我发现无法验证我的确认/取消/ silent_post页面接收的参数。有没有办法确保这些参数来自PayPal,而不仅仅是由任意用户发送?

2 个答案:

答案 0 :(得分:4)

关于最佳选择,您需要针对安全令牌运行查询交易(TRXTYPE=I),并在显示iframe之前从PayPal收到安全令牌ID。如果运行了一个事务,该调用将为您提供事务中的事务ID(PNREF)。 (根据您的情况,PNREF可能就是您所需要的。)如果匹配买方发回给您的PNREF,那么其余数据很可能是真的。

例如:

请求: USER=****&VENDOR=****&PARTNER=****&PWD=****&TRXTYPE=I&SECURETOKEN=7tGDq6ILZeEmATCwTXrSRkwjz&SECURETOKENID=76ac5819ee01475daf15b2af038da977&VERBOSITY=HIGH

响应: RESULT=0&PNREF=E79P4ABEC9DE&TRANSSTATE=8&ORIGRESULT=0&ORIGPNREF=E19P4BFB14B2&RESPMSG=Approved&AUTHCODE=111111&AVSADDR=Y&AVSZIP=Y&CVV2MATCH=Y&ORIGPPREF=1XR06058R58346646&CORRELATIONID=bdd79cb3c7fb6&PROCAVS=X&PROCCVV2=M&SETTLE_DATE=2013-04-23 07:22:06&TRANSTIME=2013-04-23 07:22:06&LASTNAME=NotProvided&AMT=24.99&ACCT=3698&EXPDATE=1214&CARDTYPE=0&IAVS=N

ORIGRESULT是原始交易的结果(0成功;其他任何事情都失败。)

ORIGPNREF是原始交易中的PNREF。

答案 1 :(得分:1)

您还可以在无声帖子网址中添加一个长而独特的“令牌”参数。像

这样的东西
  

“http:// www.my-web-site.com/confirm-payment?token=2348349u21034ms39n899”

并将其与服务器端脚本所期望的相同令牌进行匹配。由于无声帖子URL存储在您的PayPal经理帐户中,因此该令牌是保密的,甚至整个URL都是保密的。此外,交易信息也会传递到此静默帖子URL,以便您在结帐时将信息与您保存在数据库中的交易进行匹配。这是一种确保正确付款的安全方法。这个无声的帖子适用于支付高级iframe(a.k.a.托管结账页面)的“pay with paypal”和“直接信用卡支付”方法。此外,您还可以再多检查一次,看看PayPal是否为$_SERVER['HTTP_REFERER'];(当然这不能单独信任)。