Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50640 views
1
###
2
The stripe connection object, which communicates with the remote stripe server.
3
4
Configure via the admin panel in account settings of an admin user.
5
###
6
7
async = require('async')
8
9
misc = require('smc-util/misc')
10
{defaults, required} = misc
11
12
stripe = undefined
13
14
exports.get_stripe = ->
15
return stripe
16
17
# TODO: this could listen to a changefeed on the database
18
# for changes to the server_settings table.
19
exports.init_stripe = (opts) ->
20
opts = defaults opts,
21
logger : undefined
22
database : required
23
cb : undefined
24
25
dbg = (m) -> opts.logger?.debug("init_stripe: #{m}")
26
dbg()
27
28
if stripe?
29
dbg("already done")
30
opts.cb?()
31
return
32
33
async.series([
34
(cb) ->
35
opts.database.get_server_setting
36
name : 'stripe_secret_key'
37
cb : (err, secret_key) ->
38
if err
39
dbg("error getting stripe_secret_key")
40
cb(err)
41
else
42
if secret_key
43
dbg("go stripe secret_key")
44
else
45
dbg("invalid secret_key")
46
stripe = require("stripe")(secret_key)
47
cb()
48
(cb) ->
49
opts.database.get_server_setting
50
name : 'stripe_publishable_key'
51
cb : (err, value) ->
52
dbg("stripe_publishable_key #{err}, #{value}")
53
if err
54
cb(err)
55
else
56
stripe.publishable_key = value
57
cb()
58
], (err) ->
59
if err
60
dbg("error initializing stripe: #{err}")
61
else
62
dbg("successfully initialized stripe api")
63
opts.cb?(err)
64
)
65