openvibers/openvibe.billing Commits
Link public offers to Billing policy (#265)
Changes
@@@ -5,7 +5,7 @@ function publicPlans(rates, now = Date.now()) {return { as_of, date_kind: 'observed', plans: [...[100,500,1000,2500,5000,10000,25000].filter(v=>v>=rates.minPurchaseBits && v<=rates.maxBits).map(vibes=>({id:`vibes-${vibes}`, name:`${vibes.toLocaleString('en-US')} Vibes`, kind:'package', vibes,-- price_cents:rates.priceCents(vibes), currency:'USD', as_of, url:'https://openvibe.network/vibes',++ price_cents:rates.priceCents(vibes), currency:'USD', as_of, url:'https://billing.openvibe.network/policy',})),{id:'channel-membership-default',name:'Default channel membership',kind:'membership',price_cents:rates.subPriceCents,period_days:rates.subPeriodDays,currency:'USD',as_of,url:'https://openvibe.vip',note:'Default tier only. Creators may set their own prices; this is not a network-wide subscription.'},]};@@@ -4,7 +4,7 @@ const {publicPlans}=require('../server/public-plans');const rates={minPurchaseBits:500,maxBits:5000,priceCents:n=>n*2,subPriceCents:499,subPeriodDays:30};const out=publicPlans(rates,Date.UTC(2026,10,11));assert.deepEqual(out.plans.filter(p=>p.kind==='package').map(p=>p.vibes),[500,1000,2500,5000]);--for(const p of out.plans){assert.equal(p.as_of,'2026-11-11T00:00:00.000Z');assert.equal(p.currency,'USD');if(p.kind==='package')assert.equal(p.price_cents,p.vibes*2);}++for(const p of out.plans){assert.equal(p.as_of,'2026-11-11T00:00:00.000Z');assert.equal(p.currency,'USD');if(p.kind==='package'){assert.equal(p.price_cents,p.vibes*2);assert.equal(p.url,'https://billing.openvibe.network/policy');}}assert.equal(out.plans.at(-1).price_cents,499);assert.equal(out.plans.at(-1).period_days,30);console.log('public plans: checkout prices, limits, periods and provenance pass');
@@ -5,7 +5,7 @@ function publicPlans(rates, now = Date.now()) {
@@ -5,7 +5,7 @@ function publicPlans(rates, now = Date.now()) {
return { as_of, date_kind: 'observed', plans: [
return { as_of, date_kind: 'observed', plans: [
...[100,500,1000,2500,5000,10000,25000].filter(v=>v>=rates.minPurchaseBits && v<=rates.maxBits).map(vibes=>({
...[100,500,1000,2500,5000,10000,25000].filter(v=>v>=rates.minPurchaseBits && v<=rates.maxBits).map(vibes=>({
id:`vibes-${vibes}`, name:`${vibes.toLocaleString('en-US')} Vibes`, kind:'package', vibes,
id:`vibes-${vibes}`, name:`${vibes.toLocaleString('en-US')} Vibes`, kind:'package', vibes,
- price_cents:rates.priceCents(vibes), currency:'USD', as_of, url:'https://openvibe.network/vibes',
+ price_cents:rates.priceCents(vibes), currency:'USD', as_of, url:'https://billing.openvibe.network/policy',
})),
})),
{id:'channel-membership-default',name:'Default channel membership',kind:'membership',price_cents:rates.subPriceCents,period_days:rates.subPeriodDays,currency:'USD',as_of,url:'https://openvibe.vip',note:'Default tier only. Creators may set their own prices; this is not a network-wide subscription.'},
{id:'channel-membership-default',name:'Default channel membership',kind:'membership',price_cents:rates.subPriceCents,period_days:rates.subPeriodDays,currency:'USD',as_of,url:'https://openvibe.vip',note:'Default tier only. Creators may set their own prices; this is not a network-wide subscription.'},
]};
]};
@@ -4,7 +4,7 @@ const {publicPlans}=require('../server/public-plans');
@@ -4,7 +4,7 @@ const {publicPlans}=require('../server/public-plans');
const rates={minPurchaseBits:500,maxBits:5000,priceCents:n=>n*2,subPriceCents:499,subPeriodDays:30};
const rates={minPurchaseBits:500,maxBits:5000,priceCents:n=>n*2,subPriceCents:499,subPeriodDays:30};
const out=publicPlans(rates,Date.UTC(2026,10,11));
const out=publicPlans(rates,Date.UTC(2026,10,11));
assert.deepEqual(out.plans.filter(p=>p.kind==='package').map(p=>p.vibes),[500,1000,2500,5000]);
assert.deepEqual(out.plans.filter(p=>p.kind==='package').map(p=>p.vibes),[500,1000,2500,5000]);
-for(const p of out.plans){assert.equal(p.as_of,'2026-11-11T00:00:00.000Z');assert.equal(p.currency,'USD');if(p.kind==='package')assert.equal(p.price_cents,p.vibes*2);}
+for(const p of out.plans){assert.equal(p.as_of,'2026-11-11T00:00:00.000Z');assert.equal(p.currency,'USD');if(p.kind==='package'){assert.equal(p.price_cents,p.vibes*2);assert.equal(p.url,'https://billing.openvibe.network/policy');}}
assert.equal(out.plans.at(-1).price_cents,499);
assert.equal(out.plans.at(-1).price_cents,499);
assert.equal(out.plans.at(-1).period_days,30);
assert.equal(out.plans.at(-1).period_days,30);
console.log('public plans: checkout prices, limits, periods and provenance pass');
console.log('public plans: checkout prices, limits, periods and provenance pass');