Tell user when there's an error (bug 686051)
This commit is contained in:
Родитель
88d2227045
Коммит
a34e5a3e1e
|
@ -0,0 +1,29 @@
|
|||
{% extends "base_modal.html" if is_ajax else "base.html" %}
|
||||
|
||||
{% block classes %}paypal-modal{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<section class="paypal-parent paypal-thank-you" id="addon_info" data-addon="{{ addon.id }}">
|
||||
{% if addon.is_webapp() %}
|
||||
<h2>{{ loc('Purchase App') }}</h2>
|
||||
{% else %}
|
||||
<h2>{{ loc('Purchase Add-on') }}</h2>
|
||||
{% endif %}
|
||||
<h5 class="error">{{ loc('Error with your purchase') }}</h5>
|
||||
{# TODO(apps): Finalize copy. #}
|
||||
{% with addon_name=addon.name, support_link="mailto:%s" % settings.MARKETPLACE_EMAIL %}
|
||||
<p>
|
||||
Unfortunately, your purchase of <strong class='addon-title'>{{ addon_name }}</strong> could <strong>not</strong> be completed.
|
||||
</p>
|
||||
<p>You can try again, or <a href="{{ support_link }}">try contacting us</a>.</p>
|
||||
{% endwith %}
|
||||
</section>
|
||||
<section class="paypal-parent">
|
||||
<a href="{{ url('users.purchases') }}">{{ loc('My Purchases') }}</a>
|
||||
{# TODO(marketplace-docs)
|
||||
·
|
||||
<a href="{{ url('devhub.docs', doc_name='marketplace') }}">{{ loc('Marketplace Support') }}</a>
|
||||
#}
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|
@ -19,7 +19,10 @@
|
|||
{{ addon|sidebar_listing }}
|
||||
</aside>
|
||||
<section class="primary island c">
|
||||
{% if status != 'cancel' %}
|
||||
{% if status == 'error' %}
|
||||
<a href="{{ shared_url('addons.purchase.error', addon)|urlparams(realurl=realurl) }}"
|
||||
id="paypal-error">Error</a>
|
||||
{% elif status != 'cancel' %}
|
||||
{% if addon.is_premium() %}
|
||||
<a href="{{ shared_url('addons.purchase.thanks', addon)|urlparams(realurl=realurl) }}"
|
||||
id="paypal-thanks">
|
||||
|
|
|
@ -359,6 +359,17 @@ class TestPurchaseEmbedded(amo.tests.TestCase):
|
|||
eq_(cons[0].type, amo.CONTRIB_PURCHASE)
|
||||
assert cons[0].uuid
|
||||
|
||||
@patch('paypal.check_purchase')
|
||||
def test_check_addon_purchase_error(self, check_purchase):
|
||||
check_purchase.return_value = 'ERROR'
|
||||
self.make_contribution()
|
||||
res = self.client.get_ajax('%s?uuid=%s' %
|
||||
(self.get_url('complete'), '123'))
|
||||
|
||||
doc = pq(res.content)
|
||||
eq_(doc('#paypal-error').length, 1)
|
||||
eq_(res.context['status'], 'error')
|
||||
|
||||
@patch('paypal.check_purchase')
|
||||
def test_check_addon_purchase(self, check_purchase):
|
||||
check_purchase.return_value = 'COMPLETED'
|
||||
|
|
|
@ -35,6 +35,8 @@ detail_patterns = patterns('',
|
|||
name='addons.purchase.start'),
|
||||
url('^purchase/thanks/$', views.purchase_thanks,
|
||||
name='addons.purchase.thanks'),
|
||||
url('^purchase/error/$', views.purchase_error,
|
||||
name='addons.purchase.error'),
|
||||
url('^purchase/(?P<status>cancel|complete)$',
|
||||
views.purchase_complete, name='addons.purchase.finished'),
|
||||
|
||||
|
|
|
@ -562,6 +562,8 @@ def purchase_complete(request, addon, status):
|
|||
% (addon.pk, request.amo_user.pk, con.paykey[:10]))
|
||||
try:
|
||||
result = paypal.check_purchase(con.paykey)
|
||||
if result == 'ERROR':
|
||||
raise
|
||||
except:
|
||||
log.error('Check purchase paypal addon: %s, user: %s, paykey: %s'
|
||||
% (addon.pk, request.amo_user.pk, con.paykey[:10]),
|
||||
|
@ -603,6 +605,14 @@ def purchase_thanks(request, addon):
|
|||
return jingo.render(request, 'addons/paypal_thanks.html', data)
|
||||
|
||||
|
||||
@login_required
|
||||
@addon_view
|
||||
@can_be_purchased
|
||||
def purchase_error(request, addon):
|
||||
data = {'addon': addon, 'is_ajax': request.is_ajax()}
|
||||
return jingo.render(request, 'addons/paypal_error.html', data)
|
||||
|
||||
|
||||
@addon_view
|
||||
def contribute(request, addon):
|
||||
webapp = addon.is_webapp()
|
||||
|
|
|
@ -23,6 +23,8 @@ detail_patterns = patterns('',
|
|||
url('^purchase/$', addons_views.purchase, name='apps.purchase'),
|
||||
url(r'purchase/start$', addons_views.paypal_start,
|
||||
name='apps.purchase.start'),
|
||||
url('^purchase/error/$', addons_views.purchase_error,
|
||||
name='apps.purchase.error'),
|
||||
url('^purchase/thanks/$', addons_views.purchase_thanks,
|
||||
name='apps.purchase.thanks'),
|
||||
url('^purchase/(?P<status>cancel|complete)$',
|
||||
|
|
|
@ -79,9 +79,13 @@ var purchases = {
|
|||
}
|
||||
|
||||
if (top_dgFlow !== null) {
|
||||
var thanks_url = $('#paypal-thanks').attr('href');
|
||||
var thanks_url = $('#paypal-thanks').attr('href'),
|
||||
error_url = $('#paypal-error').attr('href');
|
||||
|
||||
if(thanks_url) {
|
||||
top_opener.modalFromURL(thanks_url);
|
||||
} else if(error_url) {
|
||||
top_opener.modalFromURL(error_url);
|
||||
}
|
||||
top_dgFlow.closeFlow();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче