Codeigniter и Paypal: как это работает - PullRequest
3 голосов
/ 27 марта 2010

Два случайных вопроса, когда я пытаюсь интегрировать Paypal IPN в мое веб-приложение на базе Codeigniter.

1) Эти две строки одинаковы?

$data['pp_info'] = $this->input->post();

$data['pp_info'] = $_POST;

2) Пользователь соглашается платить ежемесячную периодическую плату за использование вашего сервиса с использованием PayPal - первый платеж, который вы знаете, он заплатил, когда вы получаете данные, возвращенные из PayPal. Но как вы отслеживаете, если пользователи заплатили за следующие месяцы? Откуда вы знаете, что пользователь не отменил свою учетную запись PayPal?

Спасибо всем за помощь

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

1) Будьте осторожны - в целях безопасности вы хотите использовать обработчик codeIgniter для post (), но учтите, что хотя CI стандартизирует возврат строк в \ n, PayPal ожидает \ r \ n. Так что если вы не будете осторожны, PayPal отклонит многострочный ввод как недействительный. Чтобы обойти это в моей библиотеке IPP PayPal , я делаю это:

    foreach (array_keys($_POST) as $field)
    {
            $value = $this->input->post($field);
            $ipnData[$field] = str_replace("\n", "\r\n", $value);
    }

2) Если вы используете IPN для повторяющихся платежей, PayPal будет отправлять уведомления об обновлениях на уровне подписки пользователя на ваш IPN URL. Вы хотите взглянуть на переменную txn_type - допустимые значения включают subscr_signup, subscr_failed и subscr_eot (конец срока). Вы хотите проверить эти значения и обработать их в своем приложении.

1 голос
/ 27 марта 2010

1) Да, но вы должны использовать первый, в случае, если CI внесет изменения в метод в будущем (фильтры безопасности и т. Д.).

2) У PayPal есть URL-адрес, по которому вам нужно звонить каждые несколько часов, на котором написано, что «срок действия карты этого парня истек» и «этот повторяющийся платеж этого парня обработан». URL будет в вашей контрольной панели PayPal.

0 голосов
/ 18 февраля 2012

1) Нет, они не одинаковы.

Обычно вы должны использовать $ this-> input-> post (); потому что это сокращение, которое поможет вам проверить, установлен ли индекс POST-массива.

если ничего не опубликовано на вашей странице и вы вызываете $ _POST ['mydata'], вы получите сообщение об ошибке, потому что индекс этого массива не существует. чтобы преодолеть это, вы должны выполнить проверку "if (isset ($ _ POST ['mydata']))", но CI уже делает это за вас.

и, как сказал Коронат, вы получаете дополнительные лакомства для КИ

2) не звоните в PayPal каждые несколько часов, как сказал Алекс Дин. используйте IPN, чтобы PayPal «проталкивал» ваш сервер всякий раз, когда что-то происходило.

...