nodejs - 无法让 paypal-ipn 工作。 Paypal 不断返回“无效”

Posted

技术标签:

【中文标题】nodejs - 无法让 paypal-ipn 工作。 Paypal 不断返回“无效”【英文标题】:nodejs - Can't get paypal-ipn to work. Paypal keeps returning "INVALID" 【发布时间】:2012-04-13 14:21:04 【问题描述】:

我正在尝试使用 nodejs 模块 paypal-ipn 来验证支付给 paypal 的款项。

我按以下格式传入验证方法数据...

 tx: '60R52218GS3878125',
  st: 'Completed',
  amt: '0.01',
  cc: 'GBP',
  cm: '',
  item_number: '' 

每次我使用它时,我都会收到“无效”作为 Paypal 的回复。

【问题讨论】:

这些是您从 IPN 收到的所有字段/值吗? 请注意,如果您使用沙箱,它将始终返回 INVALID。至少它对我来说是死的。相同的代码在沙盒中返回 INVALID,在实时交易中返回 VERIFIED。 【参考方案1】:

您要向 Paypal 发回什么信息?根据https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro 中的“IPN 消息和响应示例”段落,您需要将收到的非常相同的字符串 发回。 IE。

PayPal 发送一条消息,类似于以下消息,价格为 19.95 美元 通过 Express Checkout 购买:

mc_gross = 19.95&presence_eligitibility =符合条件&address_status =确认和payer_id = lplwnmtbwmfay&tax = 0.00&address_street = 1 + main + st&payment_date = 20%3a12%3a59 + 18%+ 13%2c + 2009 + pst&payment_status = pstent&chinept_status = terminer&chinset = windows-1252&address_zip = 95131&first_name = test&mc_fee = 0.88 &address_country_code = US&ADDRESS_NAME =测试+用户和notify_version = 2.6&定制= payer_status =验证的&ADDRESS_COUNTRY =美+国&ADDRESS_CITY =圣+圣何塞和数量= 1&verify_sign = AtkOfCXbDm2hu0ZELryHFjY-Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf&PAYER_EMAIL = gpmac_1231902590_per%40paypal.com&txn_id = 61E67681CH3238416&payment_type =即时与姓氏=用户&ADDRESS_STATE = CA&RECEIVER_EMAIL = gpmac_1231902686_biz%40paypal.com&payment_fee =0.88&receiver_id=S8XGHLYDW9T3S&txn_type=express_checkout&item_name=&mc_currency=USD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=&payment_gross=19.95&shipping=0.00

在您可以信任邮件的内容之前,您必须首先 验证消息是否来自 PayPal。要验证消息,您 必须按照收到的确切顺序发回内容,并且 在它前面加上命令_notify-validate,如下:

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&mc_gross=19.95&protection_eligibility=Eligible&address_status=confirmed&payer_id=LPLWNMTBWMFAY&tax=0.00&...&payment_gross=19.95&shipping=0.00

所以:在尝试验证之前不要更改您收到的数据。

【讨论】:

以上是关于nodejs - 无法让 paypal-ipn 工作。 Paypal 不断返回“无效”的主要内容,如果未能解决你的问题,请参考以下文章

在 NodeJS 中使用集群时无法让所有工作人员进入工作程序块

我无法让 npm 模块与 require 一起工作?

无法在 NodeJS 中将字符串转换为 ObjectId

无法在 NodeJS 中将字符串转换为 ObjectId

Chrome 73:无法再使用 Dedicated DevTools for Node 调试 NodeJS

Angular Fullstack + CORS:无法加载 XMLHttpRequest