如何集成 Paypal IPN 以进行定期付款?
Posted
技术标签:
【中文标题】如何集成 Paypal IPN 以进行定期付款?【英文标题】:How to integrate Paypal IPN for recurring payments? 【发布时间】:2011-05-02 00:42:27 【问题描述】:到目前为止,我一直在使用 Micah Carrick 的 PAYPAL IPN 课程
web_accept
但现在一位客户想要将 Recurring 方法集成到其中。我尝试使用相同的东西,但不幸的是这次没有那么成功。 我正在尝试连接到 Paypal 循环方法。以下是我尝试访问它的代码;
$paypalObj = new paypal_class();
$itemName = "My Product";
$itemNumber = $itemName . " - Premium ($amount$)";
$paypalObj->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';// testing paypal url
//$paypalObj->paypal_url = 'https://www.paypal.com/cgi-bin/webscr';// Live paypal url
$paypalObj->add_field('cmd','_xclick-subscriptions');
$paypalObj->add_field('txn_type', "recurring_payment");
$paypalObj->add_field('product_name', "My Product Subscription - Monthly( $$amount )");
$paypalObj->add_field('desc', "My Product Subscription - Monthly( $$amount )");
$paypalObj->add_field('business', "test@yahoo.com");
$paypalObj->add_field('return', "http://".$serverName . "/buy-now.php");
$paypalObj->add_field('cancel_return', "http://".$serverName. "/return.php?action=cancel");
$paypalObj->add_field('notify_url', "http://" . $serverName . "/return.php?action=ipn");
$paypalObj->add_field('src', "1");
$paypalObj->add_field('sra', "1");
$paypalObj->add_field('a3', "$amount");
$paypalObj->add_field('t3', "M");
$paypalObj->add_field('p3', "1");
//$paypalObj->add_field('no_note', "1");
$paypalObj->add_field('currency_code', "USD");
$paypalObj->add_field('first_name', $firstName);
$paypalObj->add_field('last_name', $lastName);
$paypalObj->submit_paypal_post();
代码让我重定向到 Paypal 沙箱(因为我还在测试),但是当我登录到 Paypal 沙箱时,它会抛出这个错误:
您用于进入支付宝系统的链接无效。请查看链接并重试。
【问题讨论】:
【参考方案1】:我刚刚弄清楚我的代码背后的问题是什么。我只是用其他一些变量重写了代码,它运行良好。
$paypalObj = new paypal_class();
$customData = $firstName . ":";
$customData .= $lastName . ":";
$customData .= $emailId ;
$itemName = "MY_PRODUCT";
$itemNumber = $itemName . " - Premium ($amount$)";
$paypalObj->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';// testing paypal url
$paypalObj->add_field('cmd','_xclick-subscriptions');
$paypalObj->add_field('business','MY_MECHANT_ACCOUNT');
$paypalObj->add_field('item_name',$itemName);
$paypalObj->add_field('item_number',$itemNumber);
$paypalObj->add_field('return', "http://" . $serverName . "/buy-now.php");
$paypalObj->add_field('cancel_return', "http://".$serverName. "/buy-now.php?action=cancel");
$paypalObj->add_field('notify_url', "http://" . $serverName . "/buy-now.php?action=ipn");
$paypalObj->add_field('no_note','1');
$paypalObj->add_field('currency_code','USD');
$paypalObj->add_field('custom',$customData);
$paypalObj->add_field('a3', "$amount");
$paypalObj->add_field('t3', "M");
$paypalObj->add_field('p3', "1");
$paypalObj->add_field('src', "1");
$paypalObj->add_field('sra', "1");
$paypalObj->submit_paypal_post();
【讨论】:
如何用你的这个修正后的脚本来区分定期结账和定期结账? @san:根据 IsRecurring 或类似变量使用 if 条件来区分常规和订阅产品并根据 if 条件使用 cmd 以及在常规结帐和定期结帐中进行分离【参考方案2】:我认为您不应该设置 txn_type - 这是 PayPal 的 IPN 传回的值,而不是传递给它的值。
【讨论】:
哦该死!谢谢 Bryn。让我试一试吧! 仍然无法正常工作 Bryn。它仍然会抛出相同的错误消息。我现在应该怎么做。你在我的代码中发现了其他可疑的地方吗?以上是关于如何集成 Paypal IPN 以进行定期付款?的主要内容,如果未能解决你的问题,请参考以下文章
laravel 中的 PayPal IPN 集成(需要在我的后端实时更新定期付款状态)