@@ -9,6 +9,7 @@ exports.post = ({ appSdk, admin }, req, res) => {
9
9
const data = vindiEvent . data . id ? vindiEvent . data
10
10
: ( vindiEvent . data . bill || vindiEvent . data . charge )
11
11
if ( data && data . id ) {
12
+ const collectionRef = admin . firestore ( ) . collection ( 'charges' )
12
13
const isVindiCharge = vindiEvent . type . startsWith ( 'charge_' )
13
14
let axiosVindi
14
15
console . log ( '> Vindi Hook' , vindiEvent . type , data . id )
@@ -17,7 +18,7 @@ exports.post = ({ appSdk, admin }, req, res) => {
17
18
if ( isVindiCharge ) {
18
19
// console.log('> Searching charge on local database')
19
20
// get metadata from local database
20
- admin . firestore ( ) . collection ( 'charges' ) . doc ( String ( data . id ) )
21
+ collectionRef . doc ( String ( data . id ) )
21
22
. get ( ) . then ( documentSnapshot => {
22
23
if ( documentSnapshot && documentSnapshot . data ) {
23
24
resolve ( documentSnapshot . data ( ) )
@@ -30,8 +31,20 @@ exports.post = ({ appSdk, admin }, req, res) => {
30
31
switch ( vindiEvent . type ) {
31
32
case 'bill_paid' :
32
33
case 'bill_canceled' :
33
- // metadata included on bill payload
34
- resolve ( data . metadata )
34
+ if ( data . metadata && data . metadata . store_id ) {
35
+ // metadata included on bill payload
36
+ resolve ( data . metadata )
37
+ } else {
38
+ collectionRef . where ( 'vindi_bill_id' , '==' , data . id ) . limit ( 1 )
39
+ . get ( ) . then ( querySnapshot => {
40
+ if ( querySnapshot . empty ) {
41
+ return resolve ( false )
42
+ }
43
+ querySnapshot . forEach ( documentSnapshot => {
44
+ resolve ( documentSnapshot . data ( ) )
45
+ } )
46
+ } ) . catch ( reject )
47
+ }
35
48
}
36
49
resolve ( false )
37
50
}
0 commit comments