Git Product home page Git Product logo

Comments (9)

DanSmall avatar DanSmall commented on July 30, 2024 7

Can I also ask if there are there any plans to implement this?

from django-oscar-paypal.

pije76 avatar pije76 commented on July 30, 2024 1

Please someone add subscription modul for oscar.

from django-oscar-paypal.

eukreign avatar eukreign commented on July 30, 2024

Is there any updates on this feature? I'm trying to determine if I should try to implement it myself or wait for the official version.

from django-oscar-paypal.

codeinthehole avatar codeinthehole commented on July 30, 2024

I haven't really done any work on it other than a simple POC commit:
e239980

Someone else from Tangent is definitely working on this at the moment though as we have a client who needs subscription products that require recurring payments. However, I'm not sure how long it would take for that work to make it into this extension. @a-musing-moose - can you offer any further advice?

So my advice would probably be to fork the extension and implement the recurring logic yourself (so you're not waiting for us). I'd happily review your work and merge it if you submit a PR afterwards.

from django-oscar-paypal.

a-musing-moose avatar a-musing-moose commented on July 30, 2024

@eukreign As @codeinthehole says I have been working on a little on this over the past few days. I have a very basic working branch now: a-musing-moose@ad54d26

There are no real test or documentation for it yet I'm afraid and some pretty limiting restrictions.

What is does allow:

  • The creation of a single recurring payment for an item
  • An extensible method for determining if a product should have a recurring payment

Restrictions:

  • Your basket must contain a single item, with a quantity of 1. Nothing else.

The way paypal recurring payments work (at least in express checkout) is that a separate recurring payment needs to be set up for each product purchased. This is somewhat different to how normal payments are constructed. You also need to call CreateRecurringPaymentProfile for each of these payments. You also need to perform a DoExpressCheckoutPayment if there are any normal payments in the basket as well. i.e. you end up with multiple transactions at the end of the process.

So full support is a fairly complex proposal. For the project I am currently working on, and the time frame I have, this is not possible. Hence compromising on a limited implementation.

Within the project that is using the recurring payments I am extending the basket app to include additional logic. Namely, that whenever a product with a recurring profile is added to the basket. That basket is first cleared so that the recurring product is the only one in it. I am also added logic to only allow a quantity of 1.

If you are still interested in using the modification I have made thus far then I should also explain the PAYPAL_RECURRING_PREDICATE settings. This is the method by which we determine if a product has a recurring profile. It specifies the full path to a function. e.g.:

PAYPAL_RECURRING_PREDICATE = 'myapp.mymodule.get_recurring_profile'

This function is passed a product and returns either None if the product does not have a recurring profile. Or a dictionary in the following form for one that does:

{
    'billing_description': 'a description - $10 per month',
    'billing_frequency': 1,
    'billing_period': 'Month',
}  

Since you do not pass the actual amount to paypal until the CreateRecurringPaymentProfile call right at the end. It is recommended that the billing description contains not only the product description but all the cost, and recurring profile.

billing_period can be 'Day', 'Week', 'Month', 'SemiMonth', 'Year' and billing_frequency is an integer value. So the above example is every 1 month.

There is one additional part I have yet to implement. Which is IPN support. Instant Payment Notifications are sent out for recurring payments. One for the initial set and then one for every successful payment after that, or if the customer cancels the payment. That I'm afraid is still an exercise for the user.

Hit me up if you have any further question. Either here or on the mailing list.

from django-oscar-paypal.

eukreign avatar eukreign commented on July 30, 2024

You guys are awesome, thank you for the explanation.

I am using PayPal Payments Advanced which requires tokens and CC input being hosted by them.

I'll make pull requests if I'm able to generalize my implementation.

One problem I've found with the hosted pages and tokens is that they do not support creating Recurring transactions.

I found a stackoverflow post which explains the problem and provides a possible solution: http://stackoverflow.com/questions/13629023/secure-tokens-for-paypal-recurring-payments

I will try to see if that solution could be generalized.

from django-oscar-paypal.

SalahAdDin avatar SalahAdDin commented on July 30, 2024

What happen with this?

from django-oscar-paypal.

nhondong avatar nhondong commented on July 30, 2024

Any updates on this Issue?

from django-oscar-paypal.

SalahAdDin avatar SalahAdDin commented on July 30, 2024

I guess it died.

Any updates on this Issue?

from django-oscar-paypal.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.