mirror of
https://github.com/simple-login/app.git
synced 2024-09-27 20:31:30 +02:00
Create /dashboard/coinbase_checkout, remove extend_subscription route
This commit is contained in:
parent
f19a7e1bca
commit
3dd8ed7840
@ -25,5 +25,4 @@ from .views import (
|
||||
contact_detail,
|
||||
setup_done,
|
||||
batch_import,
|
||||
extend_subscription,
|
||||
)
|
||||
|
@ -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 class="btn btn-primary" href="{{ url_for('dashboard.coinbase_checkout_route') }}"
|
||||
target="_blank">
|
||||
$30/year - Crypto <i class="fe fe-external-link"></i>
|
||||
</a>
|
||||
<script src="https://commerce.coinbase.com/v1/checkout.js?version=201807">
|
||||
</script>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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,
|
||||
)
|
@ -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"])
|
||||
|
Loading…
Reference in New Issue
Block a user