我使用以下参数成功地从 Paypal IPN 获得了返回,但是没有一个参数告诉我可以找到和更新哪个订单。唯一可能有用的参数是 payer_id、payer_email、mc_gross,但是如果一位付款人以相同的金额购买相同的商品怎么办?我应该有一些独特的东西,比如当我设置对 Paypal 的请求时生成的 token 。我保留了token,我可以用它在交易完成时找到订单并返回return_url,但是当IPN通知我notify_url时我没有任何匹配。请帮忙,谢谢。
顺便说一句,我在 Rails 上使用 ruby 和一个名为 paypal-express 的 gem,它运行良好。
# Parameters: {"mc_gross"=>"200",
# "protection_eligibility"=>"Ineligible",
# "item_number1"=>"",
# "payer_id"=>"JBZXYGAAHTZM2",
# "tax"=>"0",
# "payment_date"=>"08:32:00 Jan 23, 2014 PST",
# "payment_status"=>"Pending",
# "charset"=>"windows-1252",
# "mc_shipping"=>"0",
# "mc_handling"=>"0",
# "first_name"=>"cc",
# "notify_version"=>"3.7",
# "custom"=>"",
# "payer_status"=>"verified",
# "num_cart_items"=>"1",
# "mc_handling1"=>"0",
# "verify_sign"=>"AFcWxV21C7fd0v3bYYYRCpSSRl31Am7YqqMX.kAbxBd9q1REIIsXe8T3",
# "payer_email"=>"test@inow.tw",
# "mc_shipping1"=>"0",
# "tax1"=>"0",
# "txn_id"=>"6SC87240NB740832W",
# "payment_type"=>"instant",
# "payer_business_name"=>"cc Tester's Test Store",
# "last_name"=>"Tester",
# "item_name1"=>"\u001A\u001A\u001A",
# "receiver_email"=>"jasper01@abcd.com",
# "quantity1"=>"1",
# "receiver_id"=>"3FBXQZPB9QZ9U",
# "pending_reason"=>"multi_currency",
# "txn_type"=>"cart",
# "mc_gross_1"=>"200",
# "mc_currency"=>"TWD",
# "residence_country"=>"AU",
# "test_ipn"=>"1",
# "transaction_subject"=>"Japser Paypal\u001A\u001A",
# "payment_gross"=>"",
# "ipn_track_id"=>"58f7731e250a9"}
最佳答案
您可以在付款信息中包含一个发票 ID,您可以使用它来跟踪您的内部发票(或记录)ID。然后,它会在 IPN 中传回,因此您可以使用它来相应地更新您的数据库。
您使用的是 PayPal 购物车还是某种自定义购物车?如果您使用的是 Payments Standard,您只需将“invoice”参数添加到您的 HTML 表单代码中。如果您正在使用 API,那将是 INVNUM 字段(无论如何,在大多数情况下)。
关于ruby-on-rails - Paypal IPN 没有告诉我我的订单信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315596/