我正在使用AngellEye librar y。
来使用Paypal自适应付款除了IPN之外,一切都很好。在Sandbox模式下使用Paypal时,我收到了一个通知我的URL。但是,一旦我上线,我的服务器就不会收到IPN POST请求。我检查了我的Apache access.log。
我是否需要在某处启用Paypal IPN进行实时自适应支付?
在我的Paypal帐户中,根据销售偏好设置,它会将IPN显示为已停用。要启用它,我还需要提供一个URL。但是,我的URL是动态的,我假设我使用的是Paypal API,我不需要更改它吗?
使用IPN:
$PayRequestFields = array(
'ActionType' => 'CREATE',
'CancelURL' => base_url() . 'd/cancel/' . $this->transactionID,
'CurrencyCode' => $this->product->currency,
'ReturnURL' => base_url() . 'd/success/' . $this->transactionID,
'FeesPayer' => 'PRIMARYRECEIVER',
'IPNNotificationURL' => base_url() . 'ipn/status/' . $this->transactionID,
);
答案 0 :(得分:7)
自适应付款IPN略有不同,因为应用程序将收到一个(如果已配置),然后商家/卖家帐户也会根据他们收到的实际交易获得一个。
例如,如果您的应用代表第三方用户生成了付款请求,并且您在付款请求中设置了NotificationURL,则会向该网址发送特定于应用的IPN。特定于交易的IPN将被发送到卖方帐户在其自己的PayPal帐户中配置的URL。
您还需要确保将IPN脚本配置为正确处理自适应IPN。它发送的参数名称类似于some.name和。不适用于常规$ _POST ['paramname']逻辑。看看这个IPN template是如何处理的......你可能只想使用它。
以下是我刚才运行Pay请求时收到的应用程序IPN示例。
Array
(
[transaction] =>
[payment_request_date] => Tue May 06 12:49:35 PDT 2014
[return_url] => http://paypal.angelleye.com/paypal/class/1.2/Pay_Return.php
[fees_payer] => EACHRECEIVER
[ipn_notification_url] => http://sandbox.angelleye.com/paypal/ipn/ipn-listener.php
[sender_email] => tester@angelleye.com
[verify_sign] => AFcWxV21C7fd0v3bYYYRCpSSRl31ArVBOvsxhUiZ-m0M3mFjhNWWaRjM
[test_ipn] => 1
[cancel_url] => http://paypal.angelleye.com/paypal/class/1.2/Pay_Cancel.php
[pay_key] => AP-8YH799874R4873815
[action_type] => PAY
[transaction_type] => Adaptive Payment PAY
[status] => INCOMPLETE
[log_default_shipping_address_in_transaction] => false
[charset] => windows-1252
[notify_version] => UNVERSIONED
[reverse_all_parallel_payments_on_error] => false
)
答案 1 :(得分:0)
我联系了Paypal支持,这就是他们不得不说的:
我检查了您帐户的当前IPN设置,然后显示 IPN设置为“关闭”,而不是“已禁用”。这是非常重要的 差异,因为禁用IPN会阻止IPN消息的发生 发送了。如果只是关闭IPN,PayPal将只发送IPN 如果在付款请求中指定了notify_url,则显示消息。对于 自适应支付,notify_URL是触发IPN的唯一方法 消息,因此IPN可以处于“关闭”设置并正常工作,但是 没有禁用。
这是我自己随机修复问题后收到的。我开始工作的方式就是简单地使用我的帐户设置。我在我的帐户中启用了IPN,然后将其停用,之后我的所有IPN请求都涌入我的Adaptive Payments API调用中设置的IPN网址。