Paypal自适应支付和IPN

时间:2014-05-06 19:15:23

标签: paypal paypal-ipn paypal-adaptive-payments

我正在使用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,  
        );

2 个答案:

答案 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网址。