Настройка Django-PayPal View - PullRequest
1 голос
/ 19 марта 2012

Я использую PayPal для Django, чтобы пользователи могли совершать платежи на моем сайте, однако у меня есть несколько запросов.

Способ, которым я сейчас работаю, заключается в том, что у меня есть шаблон с именем profile.html. Когда пользователь нажимает кнопку «Нажмите для получения дополнительных параметров подписки», он будет перенаправлен в шаблон subscription.html с таблицей подписок и кнопкой PayPal. Когда кнопка нажата, пользователь перенаправляется на другой шаблон с именем paypal.html, который показывает другую кнопку paypal, полученную из django-paypal's forms.py

Мой вопрос здесь заключается в том, как я могу изменить представление PayPal так, чтобы я мог покончить с PayPal.html и направить пользователя непосредственно на фактический сайт PayPal, когда он нажимает кнопку PayPal в subscription.html?

Надеюсь, мое описание вопроса достаточно ясное.

в моих views.py:

def paypal(request):
    paypal_dict = {"business":settings.PAYPAL_RECEIVER_EMAIL,"amount": "1.00","item_name": "Milk" ,"invoice": "12345678", "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')),"return_url": "http://rosebud.mosuma.net",}
    # Create the instance.
    form = PayPalPaymentsForm(initial=paypal_dict)
    context = {"form": form.sandbox()}
    return render_to_response("paypal.html", context)

в моем профиле.html:

....
<INPUT TYPE="submit" Value="Click to find out subscription plans" name="subscription" onClick="/subscribe/>

в моем subscription.html:

<form method="post" action="paypal/">
<select name="subscription_input" id="id_subscription" style = "float: center">
<option>Monthly</option>
<option>Yearly</option>
</select></br></br>

{{ form }}
</form>

в моем urls.py:

url(r'^paypal/$', 'r2.views.paypal', name='paypal'),
url(r'^profile/paypal/$', 'r2.views.paypal', name='paypal'),

1 Ответ

1 голос
/ 18 мая 2019

Если вы хотите, чтобы пользователь сразу переходил на веб-сайт PayPal в тот момент, когда он нажимал кнопку PayPal в subscription.html, вам нужно будет отобразить форму PayPal в subscription.html вместо paypal.html. Более того, вам нужно создать подкласс PayPalPaymentsForm в forms.py, чтобы переопределить стандартное изображение PayPal «Купить сейчас», потому что вы хотите, чтобы ваша собственная кнопка работала в первую очередь.


forms.py

from paypal.standard.forms import PayPalPaymentsForm
from django.utils.html import format_html

class ExtPayPalPaymentsForm(PayPalPaymentsForm):
    def render(self):
        form_open  = u'''<form action="%s" id="PayPalForm" method="post">''' % (self.get_endpoint())
        form_close = u'</form>'
        # format html as you need
        submit_elm = u'''<input type="submit" class="btn btn-success my-custom-class">'''
        return format_html(form_open+self.as_p()+submit_elm+form_close)

views.py

from .forms import ExtPayPalPaymentsForm
def paypal(request):
    paypal_dict = {"business":settings.PAYPAL_RECEIVER_EMAIL,"amount": "1.00","item_name": "Milk" ,"invoice": "12345678", "notify_url": "%s%s" % (settings.SITE_NAME, reverse('paypal-ipn')),"return_url": "http://rosebud.mosuma.net",}
    # Create the instance.
    form = ExtPayPalPaymentsForm(initial=paypal_dict)
    context = {"form": form.sandbox()}
    return render_to_response("subscription.html", context)
...