All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Unit Tests (push) Successful in 3m10s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 5m13s
Build and Release / Lint (push) Successful in 5m25s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 3m13s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 8h5m42s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 7m30s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 7m55s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m36s
Implement complete subscription monetization system for repositories with Stripe and PayPal integration. Includes: - Database models and migrations for monetization settings, subscription products, and user subscriptions - Payment provider abstraction layer with Stripe and PayPal implementations - Admin UI for configuring payment providers and viewing subscriptions - Repository settings UI for managing subscription products and tiers - Subscription checkout flow and webhook handlers for payment events - Access control to gate repository code behind active subscriptions
63 lines
2.7 KiB
Handlebars
63 lines
2.7 KiB
Handlebars
{{template "admin/layout_head" (dict "ctxData" . "pageClass" "admin monetize")}}
|
|
<div class="admin-setting-content">
|
|
<h4 class="ui top attached header">
|
|
{{ctx.Locale.Tr "admin.monetize.stripe_settings"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<form class="ui form" method="post" action="{{AppSubUrl}}/-/admin/monetize">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="inline field">
|
|
<div class="ui toggle checkbox">
|
|
<input type="checkbox" name="stripe_enabled" {{if .MonetizeSettings.StripeEnabled}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "admin.monetize.stripe_enabled"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.stripe_publishable_key"}}</label>
|
|
<input type="text" name="stripe_publishable_key" value="{{.MonetizeSettings.StripePublishableKey}}" placeholder="pk_...">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.stripe_secret_key"}}</label>
|
|
<input type="password" name="stripe_secret_key" value="{{.MonetizeSettings.StripeSecretKey}}" placeholder="sk_...">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.stripe_webhook_secret"}}</label>
|
|
<input type="password" name="stripe_webhook_secret" value="{{.MonetizeSettings.StripeWebhookSecret}}" placeholder="whsec_...">
|
|
</div>
|
|
|
|
<div class="divider"></div>
|
|
|
|
<h4>{{ctx.Locale.Tr "admin.monetize.paypal_settings"}}</h4>
|
|
<div class="inline field">
|
|
<div class="ui toggle checkbox">
|
|
<input type="checkbox" name="paypal_enabled" {{if .MonetizeSettings.PayPalEnabled}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "admin.monetize.paypal_enabled"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.paypal_client_id"}}</label>
|
|
<input type="text" name="paypal_client_id" value="{{.MonetizeSettings.PayPalClientID}}">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.paypal_client_secret"}}</label>
|
|
<input type="password" name="paypal_client_secret" value="{{.MonetizeSettings.PayPalClientSecret}}">
|
|
</div>
|
|
<div class="field">
|
|
<label>{{ctx.Locale.Tr "admin.monetize.paypal_webhook_id"}}</label>
|
|
<input type="text" name="paypal_webhook_id" value="{{.MonetizeSettings.PayPalWebhookID}}">
|
|
</div>
|
|
<div class="inline field">
|
|
<div class="ui toggle checkbox">
|
|
<input type="checkbox" name="paypal_sandbox" {{if .MonetizeSettings.PayPalSandbox}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "admin.monetize.paypal_sandbox"}}</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<button class="ui primary button">{{svg "octicon-check" 16}} {{ctx.Locale.Tr "save"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{template "admin/layout_footer" .}}
|