Ver Fonte

zen: add alipay for go sub

Frank há 1 mês atrás
pai
commit
4a81df190c

+ 9 - 0
packages/console/app/src/component/icon.tsx

@@ -111,6 +111,15 @@ export function IconStripe(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
   )
 }
 
+export function IconAlipay(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
+  return (
+    <svg {...props} viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
+      <path d="M2.541 0H13.5a2.55 2.55 0 0 1 2.54 2.563v8.297c-.006 0-.531-.046-2.978-.813-.412-.14-.916-.327-1.479-.536q-.456-.17-.957-.353a13 13 0 0 0 1.325-3.373H8.822V4.649h3.831v-.634h-3.83V2.121H7.26c-.274 0-.274.273-.274.273v1.621H3.11v.634h3.875v1.136h-3.2v.634H9.99c-.227.789-.532 1.53-.894 2.202-2.013-.67-4.161-1.212-5.51-.878-.864.214-1.42.597-1.746.998-1.499 1.84-.424 4.633 2.741 4.633 1.872 0 3.675-1.053 5.072-2.787 2.08 1.008 6.37 2.738 6.387 2.745v.105A2.55 2.55 0 0 1 13.5 16H2.541A2.55 2.55 0 0 1 0 13.437V2.563A2.55 2.55 0 0 1 2.541 0" />
+      <path d="M2.309 9.27c-1.22 1.073-.49 3.034 1.978 3.034 1.434 0 2.868-.925 3.994-2.406-1.602-.789-2.959-1.353-4.425-1.207-.397.04-1.14.217-1.547.58Z" />
+    </svg>
+  )
+}
+
 export function IconChevron(props: JSX.SvgSVGAttributes<SVGSVGElement>) {
   return (
     <svg {...props} width="8" height="6" viewBox="0 0 8 6" fill="none" xmlns="http://www.w3.org/2000/svg">

+ 2 - 1
packages/console/app/src/i18n/ar.ts

@@ -537,6 +537,7 @@ export const dict = {
   "workspace.billing.loading": "جارٍ التحميل...",
   "workspace.billing.addAction": "إضافة",
   "workspace.billing.addBalance": "إضافة رصيد",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "مرتبط بـ Stripe",
   "workspace.billing.manage": "إدارة",
   "workspace.billing.enable": "تمكين الفوترة",
@@ -629,7 +630,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'اختر "OpenCode Go" كمزود في إعدادات opencode الخاصة بك لاستخدام نماذج Go.',
   "workspace.lite.black.message":
-    'أنت مشترك حاليًا في OpenCode Black أو في قائمة الانتظار. يرجى إلغاء الاشتراك أولاً إذا كنت ترغب في التبديل إلى Go.',
+    "أنت مشترك حاليًا في OpenCode Black أو في قائمة الانتظار. يرجى إلغاء الاشتراك أولاً إذا كنت ترغب في التبديل إلى Go.",
   "workspace.lite.other.message":
     "عضو آخر في مساحة العمل هذه مشترك بالفعل في OpenCode Go. يمكن لعضو واحد فقط لكل مساحة عمل الاشتراك.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/br.ts

@@ -545,6 +545,7 @@ export const dict = {
   "workspace.billing.loading": "Carregando...",
   "workspace.billing.addAction": "Adicionar",
   "workspace.billing.addBalance": "Adicionar Saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Vinculado ao Stripe",
   "workspace.billing.manage": "Gerenciar",
   "workspace.billing.enable": "Ativar Faturamento",
@@ -638,7 +639,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Selecione "OpenCode Go" como provedor na sua configuração do opencode para usar os modelos Go.',
   "workspace.lite.black.message":
-    'Você está atualmente inscrito no OpenCode Black ou na lista de espera. Por favor, cancele a assinatura primeiro se desejar mudar para o Go.',
+    "Você está atualmente inscrito no OpenCode Black ou na lista de espera. Por favor, cancele a assinatura primeiro se desejar mudar para o Go.",
   "workspace.lite.other.message":
     "Outro membro neste workspace já assina o OpenCode Go. Apenas um membro por workspace pode assinar.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/da.ts

@@ -541,6 +541,7 @@ export const dict = {
   "workspace.billing.loading": "Indlæser...",
   "workspace.billing.addAction": "Tilføj",
   "workspace.billing.addBalance": "Tilføj saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Forbundet til Stripe",
   "workspace.billing.manage": "Administrer",
   "workspace.billing.enable": "Aktiver fakturering",
@@ -634,7 +635,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Vælg "OpenCode Go" som udbyder i din opencode-konfiguration for at bruge Go-modeller.',
   "workspace.lite.black.message":
-    'Du abonnerer i øjeblikket på OpenCode Black eller er på venteliste. Afmeld venligst først, hvis du vil skifte til Go.',
+    "Du abonnerer i øjeblikket på OpenCode Black eller er på venteliste. Afmeld venligst først, hvis du vil skifte til Go.",
   "workspace.lite.other.message":
     "Et andet medlem i dette workspace abonnerer allerede på OpenCode Go. Kun ét medlem pr. workspace kan abonnere.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/de.ts

@@ -544,6 +544,7 @@ export const dict = {
   "workspace.billing.loading": "Lade...",
   "workspace.billing.addAction": "Hinzufügen",
   "workspace.billing.addBalance": "Guthaben aufladen",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Mit Stripe verbunden",
   "workspace.billing.manage": "Verwalten",
   "workspace.billing.enable": "Abrechnung aktivieren",
@@ -637,7 +638,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Wähle "OpenCode Go" als Anbieter in deiner opencode-Konfiguration, um Go-Modelle zu verwenden.',
   "workspace.lite.black.message":
-    'Du hast derzeit OpenCode Black abonniert oder stehst auf der Warteliste. Bitte kündige zuerst, wenn du zu Go wechseln möchtest.',
+    "Du hast derzeit OpenCode Black abonniert oder stehst auf der Warteliste. Bitte kündige zuerst, wenn du zu Go wechseln möchtest.",
   "workspace.lite.other.message":
     "Ein anderes Mitglied in diesem Workspace hat OpenCode Go bereits abonniert. Nur ein Mitglied pro Workspace kann abonnieren.",
   "workspace.lite.promo.description":

+ 1 - 0
packages/console/app/src/i18n/en.ts

@@ -538,6 +538,7 @@ export const dict = {
   "workspace.billing.loading": "Loading...",
   "workspace.billing.addAction": "Add",
   "workspace.billing.addBalance": "Add Balance",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Linked to Stripe",
   "workspace.billing.manage": "Manage",
   "workspace.billing.enable": "Enable Billing",

+ 2 - 1
packages/console/app/src/i18n/es.ts

@@ -546,6 +546,7 @@ export const dict = {
   "workspace.billing.loading": "Cargando...",
   "workspace.billing.addAction": "Añadir",
   "workspace.billing.addBalance": "Añadir Saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Vinculado con Stripe",
   "workspace.billing.manage": "Gestionar",
   "workspace.billing.enable": "Habilitar Facturación",
@@ -639,7 +640,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Selecciona "OpenCode Go" como proveedor en tu configuración de opencode para usar los modelos Go.',
   "workspace.lite.black.message":
-    'Actualmente estás suscrito a OpenCode Black o estás en la lista de espera. Por favor, cancela la suscripción primero si deseas cambiar a Go.',
+    "Actualmente estás suscrito a OpenCode Black o estás en la lista de espera. Por favor, cancela la suscripción primero si deseas cambiar a Go.",
   "workspace.lite.other.message":
     "Otro miembro de este espacio de trabajo ya está suscrito a OpenCode Go. Solo un miembro por espacio de trabajo puede suscribirse.",
   "workspace.lite.promo.description":

+ 1 - 0
packages/console/app/src/i18n/fr.ts

@@ -547,6 +547,7 @@ export const dict = {
   "workspace.billing.loading": "Chargement...",
   "workspace.billing.addAction": "Ajouter",
   "workspace.billing.addBalance": "Ajouter un solde",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Lié à Stripe",
   "workspace.billing.manage": "Gérer",
   "workspace.billing.enable": "Activer la facturation",

+ 1 - 0
packages/console/app/src/i18n/it.ts

@@ -544,6 +544,7 @@ export const dict = {
   "workspace.billing.loading": "Caricamento...",
   "workspace.billing.addAction": "Aggiungi",
   "workspace.billing.addBalance": "Aggiungi Saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Collegato a Stripe",
   "workspace.billing.manage": "Gestisci",
   "workspace.billing.enable": "Abilita Fatturazione",

+ 2 - 1
packages/console/app/src/i18n/ja.ts

@@ -543,6 +543,7 @@ export const dict = {
   "workspace.billing.loading": "読み込み中...",
   "workspace.billing.addAction": "追加",
   "workspace.billing.addBalance": "残高を追加",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Stripeと連携済み",
   "workspace.billing.manage": "管理",
   "workspace.billing.enable": "課金を有効にする",
@@ -637,7 +638,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     "Go モデルを使用するには、opencode の設定で「OpenCode Go」をプロバイダーとして選択してください。",
   "workspace.lite.black.message":
-    '現在 OpenCode Black を購読中、またはウェイティングリストに登録されています。Go に切り替える場合は、先に登録を解除してください。',
+    "現在 OpenCode Black を購読中、またはウェイティングリストに登録されています。Go に切り替える場合は、先に登録を解除してください。",
   "workspace.lite.other.message":
     "このワークスペースの別のメンバーが既に OpenCode Go を購読しています。ワークスペースにつき1人のメンバーのみが購読できます。",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/ko.ts

@@ -537,6 +537,7 @@ export const dict = {
   "workspace.billing.loading": "로드 중...",
   "workspace.billing.addAction": "추가",
   "workspace.billing.addBalance": "잔액 추가",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Stripe에 연결됨",
   "workspace.billing.manage": "관리",
   "workspace.billing.enable": "결제 활성화",
@@ -629,7 +630,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Go 모델을 사용하려면 opencode 설정에서 "OpenCode Go"를 공급자로 선택하세요.',
   "workspace.lite.black.message":
-    '현재 OpenCode Black을 구독 중이거나 대기 명단에 등록되어 있습니다. Go로 전환하려면 먼저 구독을 취소해 주세요.',
+    "현재 OpenCode Black을 구독 중이거나 대기 명단에 등록되어 있습니다. Go로 전환하려면 먼저 구독을 취소해 주세요.",
   "workspace.lite.other.message":
     "이 워크스페이스의 다른 멤버가 이미 OpenCode Go를 구독 중입니다. 워크스페이스당 한 명의 멤버만 구독할 수 있습니다.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/no.ts

@@ -542,6 +542,7 @@ export const dict = {
   "workspace.billing.loading": "Laster...",
   "workspace.billing.addAction": "Legg til",
   "workspace.billing.addBalance": "Legg til saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Koblet til Stripe",
   "workspace.billing.manage": "Administrer",
   "workspace.billing.enable": "Aktiver fakturering",
@@ -635,7 +636,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Velg "OpenCode Go" som leverandør i opencode-konfigurasjonen din for å bruke Go-modeller.',
   "workspace.lite.black.message":
-    'Du abonnerer for øyeblikket på OpenCode Black eller står på venteliste. Vennligst avslutt abonnementet først hvis du vil bytte til Go.',
+    "Du abonnerer for øyeblikket på OpenCode Black eller står på venteliste. Vennligst avslutt abonnementet først hvis du vil bytte til Go.",
   "workspace.lite.other.message":
     "Et annet medlem i dette arbeidsområdet abonnerer allerede på OpenCode Go. Kun ett medlem per arbeidsområde kan abonnere.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/pl.ts

@@ -543,6 +543,7 @@ export const dict = {
   "workspace.billing.loading": "Ładowanie...",
   "workspace.billing.addAction": "Dodaj",
   "workspace.billing.addBalance": "Doładuj saldo",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Połączono ze Stripe",
   "workspace.billing.manage": "Zarządzaj",
   "workspace.billing.enable": "Włącz rozliczenia",
@@ -636,7 +637,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Wybierz "OpenCode Go" jako dostawcę w konfiguracji opencode, aby używać modeli Go.',
   "workspace.lite.black.message":
-    'Obecnie subskrybujesz OpenCode Black lub jesteś na liście oczekujących. Jeśli chcesz przejść na Go, najpierw anuluj subskrypcję.',
+    "Obecnie subskrybujesz OpenCode Black lub jesteś na liście oczekujących. Jeśli chcesz przejść na Go, najpierw anuluj subskrypcję.",
   "workspace.lite.other.message":
     "Inny członek tego obszaru roboczego już subskrybuje OpenCode Go. Tylko jeden członek na obszar roboczy może subskrybować.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/ru.ts

@@ -549,6 +549,7 @@ export const dict = {
   "workspace.billing.loading": "Загрузка...",
   "workspace.billing.addAction": "Пополнить",
   "workspace.billing.addBalance": "Пополнить баланс",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Привязано к Stripe",
   "workspace.billing.manage": "Управление",
   "workspace.billing.enable": "Включить оплату",
@@ -642,7 +643,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'Выберите "OpenCode Go" в качестве провайдера в настройках opencode для использования моделей Go.',
   "workspace.lite.black.message":
-    'Вы подписаны на OpenCode Black или находитесь в списке ожидания. Пожалуйста, сначала отмените подписку, если хотите перейти на Go.',
+    "Вы подписаны на OpenCode Black или находитесь в списке ожидания. Пожалуйста, сначала отмените подписку, если хотите перейти на Go.",
   "workspace.lite.other.message":
     "Другой участник в этом рабочем пространстве уже подписан на OpenCode Go. Только один участник в рабочем пространстве может оформить подписку.",
   "workspace.lite.promo.description":

+ 2 - 1
packages/console/app/src/i18n/th.ts

@@ -540,6 +540,7 @@ export const dict = {
   "workspace.billing.loading": "กำลังโหลด...",
   "workspace.billing.addAction": "เพิ่ม",
   "workspace.billing.addBalance": "เพิ่มยอดคงเหลือ",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "เชื่อมโยงกับ Stripe",
   "workspace.billing.manage": "จัดการ",
   "workspace.billing.enable": "เปิดใช้งานการเรียกเก็บเงิน",
@@ -633,7 +634,7 @@ export const dict = {
   "workspace.lite.subscription.selectProvider":
     'เลือก "OpenCode Go" เป็นผู้ให้บริการในการตั้งค่า opencode ของคุณเพื่อใช้โมเดล Go',
   "workspace.lite.black.message":
-    'ขณะนี้คุณสมัครสมาชิก OpenCode Black หรืออยู่ในรายการรอ โปรดยกเลิกการสมัครก่อนหากต้องการเปลี่ยนไปใช้ Go',
+    "ขณะนี้คุณสมัครสมาชิก OpenCode Black หรืออยู่ในรายการรอ โปรดยกเลิกการสมัครก่อนหากต้องการเปลี่ยนไปใช้ Go",
   "workspace.lite.other.message":
     "สมาชิกคนอื่นใน Workspace นี้ได้สมัคร OpenCode Go แล้ว สามารถสมัครได้เพียงหนึ่งคนต่อหนึ่ง Workspace เท่านั้น",
   "workspace.lite.promo.description":

+ 1 - 0
packages/console/app/src/i18n/tr.ts

@@ -545,6 +545,7 @@ export const dict = {
   "workspace.billing.loading": "Yükleniyor...",
   "workspace.billing.addAction": "Ekle",
   "workspace.billing.addBalance": "Bakiye Ekle",
+  "workspace.billing.alipay": "Alipay",
   "workspace.billing.linkedToStripe": "Stripe'a bağlı",
   "workspace.billing.manage": "Yönet",
   "workspace.billing.enable": "Faturalandırmayı Etkinleştir",

+ 2 - 2
packages/console/app/src/i18n/zh.ts

@@ -521,6 +521,7 @@ export const dict = {
   "workspace.billing.loading": "加载中...",
   "workspace.billing.addAction": "充值",
   "workspace.billing.addBalance": "充值余额",
+  "workspace.billing.alipay": "支付宝",
   "workspace.billing.linkedToStripe": "已关联 Stripe",
   "workspace.billing.manage": "管理",
   "workspace.billing.enable": "启用计费",
@@ -612,8 +613,7 @@ export const dict = {
   "workspace.lite.subscription.useBalance": "达到使用限额后使用您的可用余额",
   "workspace.lite.subscription.selectProvider":
     "在你的 opencode 配置中选择「OpenCode Go」作为提供商,即可使用 Go 模型。",
-  "workspace.lite.black.message":
-    '您当前已订阅 OpenCode Black 或在候补名单中。如需切换到 Go,请先取消订阅。',
+  "workspace.lite.black.message": "您当前已订阅 OpenCode Black 或在候补名单中。如需切换到 Go,请先取消订阅。",
   "workspace.lite.other.message": "此工作区中的另一位成员已经订阅了 OpenCode Go。每个工作区只有一名成员可以订阅。",
   "workspace.lite.promo.description":
     "OpenCode Go 是一个每月 $10 的订阅计划,提供对主流开源编码模型的稳定访问,并配备充足的使用额度。",

+ 2 - 2
packages/console/app/src/i18n/zht.ts

@@ -522,6 +522,7 @@ export const dict = {
   "workspace.billing.loading": "載入中...",
   "workspace.billing.addAction": "儲值",
   "workspace.billing.addBalance": "儲值餘額",
+  "workspace.billing.alipay": "支付寶",
   "workspace.billing.linkedToStripe": "已連結 Stripe",
   "workspace.billing.manage": "管理",
   "workspace.billing.enable": "啟用帳務",
@@ -613,8 +614,7 @@ export const dict = {
   "workspace.lite.subscription.useBalance": "達到使用限制後使用您的可用餘額",
   "workspace.lite.subscription.selectProvider":
     "在您的 opencode 設定中選擇「OpenCode Go」作為提供商,即可使用 Go 模型。",
-  "workspace.lite.black.message":
-    '您目前已訂閱 OpenCode Black 或在候補名單中。若要切換至 Go,請先取消訂閱。',
+  "workspace.lite.black.message": "您目前已訂閱 OpenCode Black 或在候補名單中。若要切換至 Go,請先取消訂閱。",
   "workspace.lite.other.message": "此工作區中的另一位成員已訂閱 OpenCode Go。每個工作區只能有一位成員訂閱。",
   "workspace.lite.promo.description":
     "OpenCode Go 是一個每月 $10 的訂閱方案,提供對主流開放原始碼編碼模型的穩定存取,並配備充足的使用額度。",

+ 7 - 1
packages/console/app/src/routes/workspace/[id]/billing/billing-section.tsx

@@ -3,7 +3,7 @@ import { createMemo, Match, Show, Switch, createEffect } from "solid-js"
 import { createStore } from "solid-js/store"
 import { Billing } from "@opencode-ai/console-core/billing.js"
 import { withActor } from "~/context/auth.withActor"
-import { IconCreditCard, IconStripe } from "~/component/icon"
+import { IconAlipay, IconCreditCard, IconStripe } from "~/component/icon"
 import styles from "./billing-section.module.css"
 import { createCheckoutUrl, formatBalance, queryBillingInfo } from "../../common"
 import { useI18n } from "~/context/i18n"
@@ -205,6 +205,9 @@ export function BillingSection() {
                     <Match when={billingInfo()?.paymentMethodType === "link"}>
                       <IconStripe style={{ width: "24px", height: "24px" }} />
                     </Match>
+                    <Match when={billingInfo()?.paymentMethodType === "alipay"}>
+                      <IconAlipay style={{ width: "24px", height: "24px" }} />
+                    </Match>
                   </Switch>
                 </div>
                 <div data-slot="card-details">
@@ -218,6 +221,9 @@ export function BillingSection() {
                     <Match when={billingInfo()?.paymentMethodType === "link"}>
                       <span data-slot="type">{i18n.t("workspace.billing.linkedToStripe")}</span>
                     </Match>
+                    <Match when={billingInfo()?.paymentMethodType === "alipay"}>
+                      <span data-slot="type">{i18n.t("workspace.billing.alipay")}</span>
+                    </Match>
                   </Switch>
                 </div>
                 <button

+ 1 - 1
packages/console/core/src/billing.ts

@@ -265,7 +265,7 @@ export namespace Billing {
               customer_email: email!,
             }),
         currency: "usd",
-        payment_method_types: ["card"],
+        payment_method_types: ["card", "alipay"],
         tax_id_collection: {
           enabled: true,
         },