Payum / PayumYiiExtension

Rich payment solutions for Yii framework. Paypal, payex, authorize.net, be2bill, omnipay, recurring paymens, instant notifications and many more
https://payum.forma-pro.com/
MIT License
12 stars 16 forks source link

Recurring payments #21

Closed alexandernst closed 9 years ago

alexandernst commented 10 years ago

I saw that Express Checkout supports recurring payments, but I'm not too sure how it works. Is that IPN? Or it's based on something else? Does it trigger a callback on my page?

makasim commented 10 years ago

recurring payment in other words subscriptions, you can tell paypal to charge a payer sever times for given period. It could be used without IPN, but I'd advice you to setup IPN notification too. This part is not well supported by Payum, I am working on it.

Or it's based on something else? Does it trigger a callback on my page?

recurring payment does not, IPN - does

alexandernst commented 10 years ago

I need this too, so I'll be starting to work on it in the next days. First I need to implement active record support so we can save paypal's requests. Also, a cron, so failed attempts can get re-executed.

Can you point me to the missing bits in PayumIPN so I can check how much work it's to be done?

makasim commented 10 years ago

First you have to implement an action https://github.com/Payum/PayumYiiExtension/blob/master/src/Payum/YiiExtension/PaymentController.php#L33 like one in symfony https://github.com/Payum/PayumBundle/blob/master/Controller/NotifyController.php#L23

and than implement an action that can handle the notification, like this https://github.com/Sylius/Sylius/blob/master/src/Sylius/Bundle/PayumBundle/Payum/Paypal/Action/NotifyOrderAction.php

add:

<php

$details['PAYMENTREQUEST_0_NOTIFYURL'] = $tokenFactory->createNotifyToken(
       $paymentName,
       $details
)->getTargetUrl();
makasim commented 10 years ago

If you go the way Sylius does (use of SyncRequest) you can get problems, there is a bug https://github.com/Payum/Payum/issues/129.

But you can implement the logic which takes the data from the notify request itself and does not use sync request.