如何跟踪从付费密钥请求到IPN响应的交易?

时间:2013-08-06 13:45:24

标签: paypal paypal-ipn paykey

我正在尝试实施这里描述的流程“设置网页以使用灯箱调用嵌入式支付流程https://developer.paypal.com/webapps/developer/docs/classic/adaptive-payments/integration-guide/APIntro/

我能够获得最初的支付方式,我得到的回答是这样的:

{u'responseEnvelope': {u'ack': u'Success', u'timestamp': u'2013-08-06T01:59:32.228-07:00', u'build': u'6941298', u'correlationId': u'3f9b3609b9069'}, u'paymentExecStatus': u'CREATED', u'payKey': u'AP-4C138527MX750433P'}

此时我们可以在我们的网站上显示“Pay with PayPal”按钮,按照付款等等......现在问题出现在IPN通知中。

我已经尝试过IPN模拟器,它发送的是带有这些值的POST(例如):

Key: last_name - Value: Smith
Key: txn_id - Value: 245929950
Key: receiver_email - Value: seller@paypalsandbox.com
Key: payment_status - Value: Completed
Key: tax - Value: 2.02
Key: residence_country - Value: US
Key: invoice - Value: abc1234
Key: address_state - Value: CA
Key: payer_status - Value: verified
Key: txn_type - Value: web_accept
Key: address_country - Value: United States
Key: payment_date - Value: 01:43:47 6 Aug 2013 PDT
Key: first_name - Value: John
Key: item_name - Value: something
Key: address_street - Value: 123, any street
Key: mc_gross1 - Value: 12.34
Key: custom - Value: xyz123
Key: notify_version - Value: 2.1
Key: address_name - Value: John Smith
Key: test_ipn - Value: 1
Key: item_number - Value: AK-1234
Key: receiver_id - Value: seller@paypalsandbox.com
Key: business - Value: seller@paypalsandbox.com
Key: payer_id - Value: TESTBUYERID01
Key: verify_sign - Value: AFcWxV21C7fd0v3bYYYRCpSSRl31A.8pFOgHmGMTg8Lj.JUvXyp3bu63
Key: address_zip - Value: 95131
Key: address_country_code - Value: US
Key: address_city - Value: San Jose
Key: address_status - Value: confirmed
Key: mc_fee - Value: 0.44
Key: mc_currency - Value: USD
Key: shipping - Value: 3.04
Key: payer_email - Value: buyer@paypalsandbox.com
Key: payment_type - Value: echeck
Key: mc_gross - Value: 12.34
Key: quantity - Value: 1

事实是我们接受IPN帖子的服务器必须能够接受任意数量的交易。所以,当我收到这样的消息时,我怎么知道哪个支付关键字与之相关?

1)我可以使用payer_email跟踪付款,但如果付款人想要登录并使用其他PayPal帐户付款会怎么样?

2)如果来自同一PayPal帐户的两笔待处理付款会怎样?

3)如果付款人不想创建PayPal帐户并想用信用卡付款怎么办?

在这三种情况下,我无法将收到的IPN邮件连接到我的初始交易(我用付款密钥识别)。

看起来我错过了什么......有人可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您希望在用户从您的网站转到Paypal时将自定义变量传递给custom,那么当交易完成后,您会想要使用<form name="_xclick" action="https://www.paypal.com/ca/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="custom" value="paykey:aBjKmNi223"> <input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> </form> 字段按钮。

Key: last_name - Value: Smith
Key: txn_id - Value: 245929950
Key: receiver_email - Value: seller@paypalsandbox.com
Key: custom - Value: paykey:aBjKmNi223

您的IPN响应将如下所示......

custom

请注意,这仅适用于名为{{1}}的字段。你不能只使用任何领域。如果要传递多个对象,请在自定义字段中使用逗号描述的字符串。