diff --git a/miniprogram/pages/subscribe-plans/subscribe-plans.js b/miniprogram/pages/subscribe-plans/subscribe-plans.js index e9045a3..b75c801 100644 --- a/miniprogram/pages/subscribe-plans/subscribe-plans.js +++ b/miniprogram/pages/subscribe-plans/subscribe-plans.js @@ -147,7 +147,7 @@ Page({ doPurchase: function (plan) { var self = this self.setData({ purchasing: true }) - api.purchase(plan.key).then(function (order) { + api.mockPurchase(plan.key).then(function (order) { self.setData({ purchasing: false }) wx.showToast({ title: '支付成功', icon: 'success' }) setTimeout(function () { diff --git a/miniprogram/utils/api.js b/miniprogram/utils/api.js index 83b4bf5..e2d1d71 100644 --- a/miniprogram/utils/api.js +++ b/miniprogram/utils/api.js @@ -21,6 +21,7 @@ module.exports = { getSubscription: function () { return http.get('/api/v1/subscription') }, activateTrial: function () { return http.post('/api/v1/subscription/trial') }, purchase: function (plan) { return http.post('/api/v1/subscription/purchase', { plan: plan }) }, + mockPurchase: function (plan) { return http.post('/api/v1/subscription/mock-purchase', { plan: plan }) }, // Treatment getRecords: function (params) { return http.get('/api/v1/treatment/history', params) }, diff --git a/server/src/routes/subscription.js b/server/src/routes/subscription.js index 2688885..4e47c4c 100644 --- a/server/src/routes/subscription.js +++ b/server/src/routes/subscription.js @@ -46,6 +46,19 @@ router.post('/subscription/purchase', requireUser, wrap(async (req, res) => { res.json(ok({ order_id: orderId, payment_params: {}, plan, amount: PLANS[plan].amount })) })) +router.post('/subscription/mock-purchase', requireUser, wrap(async (req, res) => { + const config = require('../config') + if (config.nodeEnv === 'production') return res.json(fail(2001, 'not available in production')) + const plan = req.body.plan || req.body.plan_type + if (!PLANS[plan] || plan === 'trial') return res.json(fail(2001, 'invalid plan')) + const p = PLANS[plan] + const orderId = 'MOCK' + Date.now() + await subscriptionDao.purchase(req.user.user_id, plan, p.amount, orderId, p.days) + const logDao = require('../dao/log.dao') + await logDao.write({ user_id: req.user.user_id, action: 'subscription_mock_purchase', detail: '模拟购买: ' + plan, ip: req.ip }) + res.json(ok({ status: 'active', plan, remaining_days: p.days })) +})) + router.post('/subscription/trial', requireUser, wrap(async (req, res) => { const usedTrial = await subscriptionDao.findTrial(req.user.user_id) if (usedTrial) return res.json(fail(2001, '已使用过试用'))