Create /dashboard/coinbase_checkout, remove extend_subscription route

This commit is contained in:
Son NK 2020-12-14 11:34:59 +01:00
parent f19a7e1bca
commit 3dd8ed7840
6 changed files with 28 additions and 41 deletions

View File

@ -25,5 +25,4 @@ from .views import (
contact_detail,
setup_done,
batch_import,
extend_subscription,
)

View File

@ -65,7 +65,7 @@
<div class="display-6 my-3">
🔐 Secure payments by
<a href="https://paddle.com" target="_blank" rel="noopener">
Paddle<i class="fe fe-external-link"></i>
Paddle <i class="fe fe-external-link"></i>
</a>
</div>
@ -100,16 +100,12 @@
<a href="https://commerce.coinbase.com/?lang=en" target="_blank">
Coinbase Commerce<i class="fe fe-external-link"></i>
</a> <br>
Only the yearly plan is supported.
Only the yearly plan is supported. <br>
<div>
<a class="buy-with-crypto" data-custom="{{ current_user.id }}"
href="{{ coinbase_url }}">
Yearly - $30/year - Crypto
</a>
<script src="https://commerce.coinbase.com/v1/checkout.js?version=201807">
</script>
</div>
<a class="btn btn-primary" href="{{ url_for('dashboard.coinbase_checkout_route') }}"
target="_blank">
$30/year - Crypto <i class="fe fe-external-link"></i>
</a>
{% endif %}
<hr>

View File

@ -53,7 +53,7 @@
({{ coinbase_sub.end_at.format("YYYY-MM-DD") }}).
<br>
You can extend your subscription on
<a href="{{ url_for('dashboard.extend_subscription_route') }}" class="btn btn-sm btn-outline-primary">
<a href="{{ url_for('dashboard.coinbase_checkout_route') }}" class="btn btn-sm btn-outline-primary">
Extend Subscription
</a>

View File

@ -1,24 +0,0 @@
from flask import render_template, flash, redirect, url_for
from flask_login import login_required, current_user
from app.config import COINBASE_CHECKOUT_ID
from app.dashboard.base import dashboard_bp
from app.models import CoinbaseSubscription
@dashboard_bp.route("/extend_subscription", methods=["GET", "POST"])
@login_required
def extend_subscription_route():
coinbase_subscription = CoinbaseSubscription.get_by(user_id=current_user.id)
# this page is only for user who has an active coinbase subscription
if not coinbase_subscription or not coinbase_subscription.is_active():
flash("Unknown error, redirect to home page", "error")
return redirect(url_for("dashboard.index"))
coinbase_url = "https://commerce.coinbase.com/checkout/" + COINBASE_CHECKOUT_ID
return render_template(
"dashboard/extend_subscription.html",
coinbase_subscription=coinbase_subscription,
coinbase_url=coinbase_url,
)

View File

@ -1,3 +1,4 @@
from coinbase_commerce import Client
from flask import render_template, flash, redirect, url_for
from flask_login import login_required, current_user
@ -6,9 +7,11 @@ from app.config import (
PADDLE_MONTHLY_PRODUCT_ID,
PADDLE_YEARLY_PRODUCT_ID,
URL,
COINBASE_CHECKOUT_ID,
COINBASE_YEARLY_PRICE,
COINBASE_API_KEY,
)
from app.dashboard.base import dashboard_bp
from app.log import LOG
@dashboard_bp.route("/pricing", methods=["GET", "POST"])
@ -18,15 +21,12 @@ def pricing():
flash("You are already a premium user", "warning")
return redirect(url_for("dashboard.index"))
coinbase_url = "https://commerce.coinbase.com/checkout/" + COINBASE_CHECKOUT_ID
return render_template(
"dashboard/pricing.html",
PADDLE_VENDOR_ID=PADDLE_VENDOR_ID,
PADDLE_MONTHLY_PRODUCT_ID=PADDLE_MONTHLY_PRODUCT_ID,
PADDLE_YEARLY_PRODUCT_ID=PADDLE_YEARLY_PRODUCT_ID,
success_url=URL + "/dashboard/subscription_success",
coinbase_url=coinbase_url,
)
@ -35,3 +35,19 @@ def pricing():
def subscription_success():
flash("Thanks so much for supporting SimpleLogin!", "success")
return redirect(url_for("dashboard.index"))
@dashboard_bp.route("/coinbase_checkout")
@login_required
def coinbase_checkout_route():
client = Client(api_key=COINBASE_API_KEY)
charge = client.charge.create(
name="1 Year Premium Subscription",
local_price={"amount": str(COINBASE_YEARLY_PRICE), "currency": "USD"},
pricing_type="fixed_price",
metadata={"user_id": current_user.id},
)
LOG.d("Create coinbase charge %s", charge)
return redirect(charge["hosted_url"])

View File

@ -130,7 +130,7 @@ def notify_manual_sub_end():
),
)
extend_subscription_url = URL + "/dashboard/extend_subscription"
extend_subscription_url = URL + "/dashboard/coinbase_checkout"
for coinbase_subscription in CoinbaseSubscription.query.all():
need_reminder = False
if (