Some very basic functionality associated with cancel_url, including the ability to try again on the pledge.
parent
3abd29f225
commit
01f5664bf5
|
@ -11,6 +11,18 @@
|
|||
<div class="thank-you">Would you consider pledging in the future?</div>
|
||||
|
||||
<div>{{output}}</div>
|
||||
|
||||
{% if transaction %}
|
||||
<div>You did not complete {{transaction.id}}</div>
|
||||
{% else %}
|
||||
<div>What transaction are you talking about?</div>
|
||||
{% endif %}
|
||||
|
||||
<div>correct_user: {{correct_user}}</div>
|
||||
<div>correct_transaction_type: {{correct_transaction_type}}</div>
|
||||
|
||||
<div><a href="{{try_again_url}}">pledge again</a></div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ urlpatterns = patterns(
|
|||
#may want to deprecate the following
|
||||
url(r"^setup/work/(?P<work_id>\d+)/$", "work", {'action':'setup_campaign'}, name="setup_campaign"),
|
||||
url(r"^pledge/(?P<work_id>\d+)/$", login_required(PledgeView.as_view()), name="pledge"),
|
||||
url(r"^pledge/cancel/$", PledgeCancelView.as_view(), name="pledge_cancel"),
|
||||
url(r"^pledge/cancel/$", login_required(PledgeCancelView.as_view()), name="pledge_cancel"),
|
||||
url(r"^pledge/complete/$", PledgeCompleteView.as_view(), name="pledge_complete"),
|
||||
url(r"^celery/clear/$","clear_celery_tasks", name="clear_celery_tasks"),
|
||||
url(r"^subjects/$", "subjects", name="subjects"),
|
||||
|
|
|
@ -42,8 +42,9 @@ from regluit.frontend.forms import UserData, ProfileForm, CampaignPledgeForm, Go
|
|||
from regluit.frontend.forms import RightsHolderForm, UserClaimForm, LibraryThingForm, OpenCampaignForm
|
||||
from regluit.frontend.forms import ManageCampaignForm, DonateForm, CampaignAdminForm, EmailShareForm, FeedbackForm
|
||||
from regluit.payment.manager import PaymentManager
|
||||
from regluit.payment.parameters import TARGET_TYPE_CAMPAIGN, TARGET_TYPE_DONATION
|
||||
from regluit.payment.paypal import Preapproval, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_INCOMPLETE, IPN_PAY_STATUS_COMPLETED, IPN_PAY_STATUS_CANCELED
|
||||
from regluit.payment.models import Transaction
|
||||
from regluit.payment.parameters import TARGET_TYPE_CAMPAIGN, TARGET_TYPE_DONATION, PAYMENT_TYPE_AUTHORIZATION
|
||||
from regluit.payment.paypal import Preapproval, IPN_PAY_STATUS_NONE, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_INCOMPLETE, IPN_PAY_STATUS_COMPLETED, IPN_PAY_STATUS_CANCELED, IPN_TYPE_PREAPPROVAL
|
||||
from regluit.core import goodreads
|
||||
from tastypie.models import ApiKey
|
||||
from regluit.payment.models import Transaction
|
||||
|
@ -337,6 +338,46 @@ class PledgeCancelView(TemplateView):
|
|||
output += self.request.method + "\n" + str(self.request.REQUEST.items())
|
||||
context["output"] = output
|
||||
|
||||
if self.request.user.is_authenticated():
|
||||
user = self.request.user
|
||||
else:
|
||||
user = None
|
||||
|
||||
# pull out the transaction id and try to get the corresponding Transaction
|
||||
transaction_id = self.request.REQUEST.get("tid")
|
||||
transaction = Transaction.objects.get(id=transaction_id)
|
||||
|
||||
# we need to check whether the user tied to the transaction is indeed the authenticated user.
|
||||
|
||||
correct_user = False
|
||||
try:
|
||||
if user.id == transaction.user.id:
|
||||
correct_user = True
|
||||
except Exception, e:
|
||||
pass
|
||||
|
||||
# check that the user had not already approved the transaction
|
||||
# do we need to first run PreapprovalDetails to check on the status
|
||||
|
||||
# is it of type=PAYMENT_TYPE_AUTHORIZATION and status is NONE or ACTIVE (but approved is false)
|
||||
|
||||
if transaction.type == PAYMENT_TYPE_AUTHORIZATION:
|
||||
correct_transaction_type = 'True'
|
||||
else:
|
||||
correct_transaction_type = 'False'
|
||||
|
||||
# status?
|
||||
|
||||
# give the user an opportunity to approved the transaction again
|
||||
# provide a URL to click on.
|
||||
# https://www.sandbox.paypal.com/?cmd=_ap-preapproval&preapprovalkey=PA-6JV656290V840615H
|
||||
try_again_url = '%s?cmd=_ap-preapproval&preapprovalkey=%s' % (settings.PAYPAL_PAYMENT_HOST, transaction.preapproval_key)
|
||||
|
||||
context["transaction"] = transaction
|
||||
context["correct_user"] = correct_user
|
||||
context["correct_transaction_type"] = correct_transaction_type
|
||||
context["try_again_url"] = try_again_url
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ from django.contrib.auth.models import User
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from regluit.payment.parameters import *
|
||||
from regluit.payment.paypal import Pay, Execute, IPN, IPN_TYPE_PAYMENT, IPN_TYPE_PREAPPROVAL, IPN_TYPE_ADJUSTMENT, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_INCOMPLETE
|
||||
from regluit.payment.paypal import Pay, Execute, IPN, IPN_TYPE_PAYMENT, IPN_TYPE_PREAPPROVAL, IPN_TYPE_ADJUSTMENT, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_INCOMPLETE, IPN_PAY_STATUS_NONE
|
||||
from regluit.payment.paypal import Preapproval, IPN_PAY_STATUS_COMPLETED, CancelPreapproval, PaymentDetails, PreapprovalDetails, IPN_SENDER_STATUS_COMPLETED, IPN_TXN_STATUS_COMPLETED
|
||||
from regluit.payment.paypal import RefundPayment
|
||||
import uuid
|
||||
|
@ -629,7 +629,7 @@ class PaymentManager( object ):
|
|||
|
||||
if cancel_url is None:
|
||||
cancel_path = "{0}?{1}".format(reverse('pledge_cancel'),
|
||||
urllib.urlencode({'id':t.id}))
|
||||
urllib.urlencode({'tid':t.id}))
|
||||
cancel_url = urlparse.urljoin(settings.BASE_URL, cancel_path)
|
||||
|
||||
p = Preapproval(t, amount, expiry, return_url=return_url, cancel_url=cancel_url)
|
||||
|
|
Loading…
Reference in New Issue