-
Notifications
You must be signed in to change notification settings - Fork 52
Leyka_Gateway, поддержка рекуррентных платежей
Чтобы поддержать работу с рекуррентными пожертвованиями, чаще всего нужно добавить платёжной системе (ПС, гейту) возможность работы с спец. полями данных (специальными - т.е. с теми полями, которых нет в других гейтах).
Чтобы поддержать работу с такими полями, в классе платёжной системы (ПС, гейта) нужно определить несколько специальных методов:
-
set_specific_data_value($field_name, $value, Leyka_Donation $donation) - сохраняет значение $value спец. параметра $field_name для пожертвования $donation. Делает update_post_meta().
-
get_specific_data_value($value, $field_name, Leyka_Donation $donation) - аналогично, но служит для получения значения спец. параметра пожертвования. Метод выполняет get_post_meta().
-
add_donation_specific_data($donation_id, array $donation_params) - метод обслуживает установку значения спец. параметра при создании пожертвования (т.е. при вызове Leyka_Donation::add()). Второй аргумент метода - массив, где ключи - названия спец. параметров. Метод использует update_post_meta().
-
save_donation_specific_data(Leyka_Donation $donation) - метод отрабатывает, когда происходит сохранение инфо о пожертвовании на странице этого пожертвования в админ. панели сайта. Некоторые гейты позволяют админам редактировать отдельные значения спец. параметров, и этот метод обслуживает такое редактирование. Метод работает с $_POST.
-
display_donation_specific_data_fields($donation = false) - метод аналогичен предыдущему, но служит для отображения значений спец. параметров на странице пожертвования в админке. Если предполагается редактирование спец. параметров, метод выводит поля для ввода данных; иначе, выводятся просто значения параметров.
Кроме того, для рекарринга вам может понадобиться метод get_init_recurrent_donation($recurring). Он возвращает объект изначального пожертвования в рекуррентной цепочке. Метод можно не определять - по умолчанию, он ищет изначальный платёж цепочки по значению поля post_parent у поста пожертвования. Но его нужно будет переопределить, если вы планируете хранить связь между платежами в цепочках не через post_parent рекуррентных платежей, а через какой-нибудь спец. параметр.
Примеры применения всех этих методов вы можете найти в классах гейтов, поддерживающих рекарринг - Chronopay, CloudPayments и Яндекс.деньги.