Как интегрировать Paypal IPN для регулярных платежей?

Я использовал класс PAYPAL IPN Мики Кэррика до сих пор для

web_accept

но теперь один из клиентов хочет интегрировать в него повторяющийся метод. Я пытался использовать тот же материал, но, к сожалению, на этот раз не так успешно. Я пытаюсь подключиться к повторяющемуся методу 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', "[email protected]");

$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, он выдает мне эту ошибку:

Ссылка, которую вы использовали для входа в систему PayPal, недействительна. Просмотрите ссылку и повторите попытку.


person Nishant Shrivastava    schedule 28.10.2010    source источник


Ответы (2)


Я только что понял, в чем проблема моего кода. Я просто переписал код с некоторыми другими переменными, и он просто отлично работал.

$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();
person Nishant Shrivastava    schedule 29.10.2010
comment
как сделать разделение в обычной проверке и повторяющейся проверке с помощью этого исправленного сценария? - person Santanu; 02.01.2014
comment
@san: используйте условие if в соответствии с IsRecurring или кем-то вроде этой переменной, чтобы различать обычный продукт и продукт с подпиской, а также используйте cmd в соответствии с условием if и всем остальным, чтобы разделить регулярную и повторяющуюся проверку. - person chitra; 08.01.2015

Я не думаю, что вам следует устанавливать txn_type - это значение, возвращаемое IPN PayPal, а не ему.

person BrynJ    schedule 28.10.2010
comment
о Черт! Спасибо Брин. Позвольте мне просто попробовать! - person Nishant Shrivastava; 29.10.2010
comment
Все еще не работает Bryn. Он по-прежнему выдает то же сообщение об ошибке. Что мне теперь делать. Вы нашли что-нибудь еще подозрительное в моем коде? - person Nishant Shrivastava; 29.10.2010