Couldn't have done it without you guys!!! PS. to see the cancellations updated in firestore while testing you need to have the portal settings to cancel immediately, took me ages to realise why it wasn't updating
@SmallBatchDevs3 жыл бұрын
Nice job!! Thanks for sharing that tip! 🧠 And thanks for watching!
@ChristianGenco2 жыл бұрын
I like how in the thumbnail dude on the left is holding two dollar bills folded up together to possibly look like it might be $4 and dude on the right is casually holding two $50 bills. It's me vs. the guy she tells me not to worry about.
@grahamnemuir38013 жыл бұрын
I'm not one for commenting on youtube video's but must say this tutorial was clear and insightful and has really helped me solve a massive headache with regards to managing user subscriptions thanks so much
@SmallBatchDevs3 жыл бұрын
Thank you for watching!
@MrLigugu2 жыл бұрын
This video has helped be integrate Stripe with two apps so far and always use it as a reference guide. Incredibly helpful and unique!
@DesignerAdvocate4 ай бұрын
Great video guys. Thanks. Where is the link to your podcast? What Whisky you guys like?
@gmacv37773 жыл бұрын
Amazing content. Would love to see how the subscription data is stored before and after the subscription in the Cloud Firestore.
@akashsrivastava44673 жыл бұрын
Great Tutorial!! I would love to see the cancellation or pausing a subscription part in future
@SmallBatchDevs3 жыл бұрын
That's a great idea! We'll look into that and possibly cover that in a future video. Thanks for watching 🙂
@alejandrocoronado11313 жыл бұрын
@@SmallBatchDevs please! great tutorial btw
@gilbertwalker98623 жыл бұрын
@@SmallBatchDevs +1 for that. That would be amazing!
@sanesanyo2 жыл бұрын
Cancellation as well pausing subscription is already implemented in customer portal part so need to implement the logic. The extension will take care of everything.
@expeditionbasset2 жыл бұрын
I wish all tutorials were this good! Just got mine up and working in React ;). Thanks so much for posting this guys great work!
@nimbupaani63358 ай бұрын
Wow perfectly explained each and every step.
@mycloudvip Жыл бұрын
Great Video, my site however uses regular vanilla JS ... do you have any code sample for that? thanks! Great Content guys!
@shannoncole64252 жыл бұрын
Great video. I was hoping to see how to do the portal using node/next. Any suggestions. Newbie here.
@DavidBragg3 жыл бұрын
Absolute beasts, thanks for the video guys!
@ryannovakovic50463 жыл бұрын
Wow. You such little subscribers but such good quality content. Great work
@SmallBatchDevs3 жыл бұрын
Thanks! Yeah, we're getting there! Just glad we can help fellow programmers ☺️ Share our content if you think it'd help others
@valterceijunior Жыл бұрын
Perfect guys!!! Thank you. This video help me a lot.
@techjandro3 жыл бұрын
Very useful and I love the way you guys explained everything! :-)
@SmallBatchDevs3 жыл бұрын
We're so glad you enjoyed it! 😊 Thanks for watching!
@mbaljeetsingh2 жыл бұрын
Hi Nice video. I have a query, If I need to create multiple plans (yearly/monthly). Do I have to create multiple products in stripe or create just one product with all the payment options. I'm planning to show as a pricing table (plan1, plan2, plan3) based on monthly as well as yearly.
@TheRenaissanceTechnologist Жыл бұрын
You'd create a product in the Stripe dashboard and then you can add multiple prices according to what you describe.
@ahtesamulhaque75072 жыл бұрын
Great video! How about if you wanted to do one-time payments like on an e-commerce website?
@suneelfreimuth3963 жыл бұрын
Super useful, thanks for making this
@SmallBatchDevs3 жыл бұрын
Of course! Thanks for watching!
@jakubtomas91543 жыл бұрын
Hey guys, thank you very much, you saved me a lot of coding and lot of headache! very good job!
@SmallBatchDevs3 жыл бұрын
That's awesome! We're so glad we could help out!! 😄
@leonardopillay42003 жыл бұрын
Hey, there great in-depth video, just want to find out how you're authentication observable and your observable to check the stripe subscription work. In short, I've been having auth guard problems🤣
@SmallBatchDevs3 жыл бұрын
Hi Leonardo. Sorry for the delayed reply. So currently, we do not block access to anything based on if you are subscribed through Stripe or not. We only use auth guards to block administrative related pages for users that aren't a admin user. What you will probably need to do, is use the subscription details that should be saved in Firebase (per user) when a user subscribes to determine if they have access to view whatever it is you are trying to guard. This functionality is included in the cloud functions when the extension is installed. As far as a basic authentication observable you can take a look at one of our example repos like github.com/smallbatchdevs/27_stripe_checkout/blob/master/src/app/shared/services/authentication/auth.service.ts. Hopefully that helps!
@leonardopillay42003 жыл бұрын
@@SmallBatchDevs Hi there thank you for getting back to me. keep up the good work
@SmallBatchDevs3 жыл бұрын
Thanks for the encouragement! ☺️ Keep us updated on your development progress!
@MrCalacianu2 жыл бұрын
Hey guys, nice video. Do you know if you can create multiple subscription with this extension? I know you can create with Stripe's API
@mnc120043 жыл бұрын
Great Video Guys. Can I use the extension for a single, non recurring product and still get the stripe session and payment info in Firestore?
@SmallBatchDevs3 жыл бұрын
Thanks Michael. Thats a good question! Unfortunately this extension is built for subscriptions so I don't think so unless you do something kind of hacky. There is also an extension for Invoices which would probably be more useful for what you are trying to accomplish. We have not looked too much into the Invoices extension yet but we do plan to in the near future. We also have this video kzbin.info/www/bejne/iX-8mY1_i8t0nMk which walks you through setting up stripe in your Firebase app but it does not use any extension to do so. That video is also for a single non-recurring product. Thanks again for watching and hopefully this helped!
@mnc120043 жыл бұрын
I've got your subscription code up and running in a live environment and it works OK. I added a couple of steps specific to the site I'm working on. Users might complain about the subscription bit and if I get too much push back I will change up to the invoice extension (although not ideal). I will go through your video on adding stripe for one off payments, but I would have to incorporate authentication so the user can see their transactions and the other things I'm adding into firestore. Thanks again for some top notch videos!
@SmallBatchDevs3 жыл бұрын
Glad is working for you! Good luck! And please keep us updated! 😃
@mnc120043 жыл бұрын
@@SmallBatchDevs adding the invoice extension was relatively easy. I kept most of your code and created an add Invoice function. With the extension you can only use the Uid or email address of the logged in user. I chose the Uid because I use it is a reference throughout collections. Once the user clicks the pay now button, an invoice is emailed to the user and they action it that way. I only needed a few lines of code to get it done. Events I used were invoice.created, paid, paymentSuccessful, payment.unsuccesful, although I wasn't sure which ones to really use. All in all, I'm happy with the result and will now just add some content explaining the process before making it live.
@SmallBatchDevs3 жыл бұрын
That’s awesome to hear! Keep up the good work :)
@thomasventura6412 Жыл бұрын
Help! I changed out my keys for the live mode and now firebase isnt connecting the subscriptions, did anyone else have this problem?
@RatherBeCancelledThanHandled9 ай бұрын
Make sure you change your stripe api key and stripe web hook secret to the live mode keys . When in the stripe dashboard click the live toggle to get out of test and use those keys.
@davidmimay4 жыл бұрын
is nice to see the documentation on video follow along! good work! btw timestamps on timeline are not working, i think change 00:00 to 0:00 should work.
@SmallBatchDevs4 жыл бұрын
Hey! We're glad you enjoyed it! I think we've fixed the timestamps, thanks for the heads up!
@vjhibrix Жыл бұрын
Hello and thanks for the video. I don't fully understand what's the sense of cluttering the Firestore database with the "checkout_sessions" collection objects, because as far as I can see (also from the source code of the extension) all this data is never deleted so it will remain forever and progressively cluttering the database. What's the need of having this extra "checkout_sessions" collection? We only need to generate a checkout link for a particular puchase and that's it. I don't get the sense of all this logic and I found it not very convenient (also considering that all this transaction data is already accessible in the Stripe dashboard) but I'm maybe missing something from here.
@BlackCode73 жыл бұрын
Thank you so much guys!
@SmallBatchDevs3 жыл бұрын
Thank you for watching!
@varandpezeshkian62993 жыл бұрын
Very thorough and neat, thank you
@SmallBatchDevs3 жыл бұрын
We appreciate the feedback! Thank you for watching!
@gabo254-_-93 жыл бұрын
You have very good content, don't stop plis 👌
@SmallBatchDevs3 жыл бұрын
Thanks! We won’t :)
@pheaktrakim12123 жыл бұрын
That money can go into our visa account right sir ?
@SmallBatchDevs3 жыл бұрын
Yes! You have to connect your bank account to Stripe and then you can transfer money between them.
@pheaktrakim12123 жыл бұрын
But your payment Id is different from me .
@pheaktrakim12123 жыл бұрын
So you can’t get some money from my bank account .
@luisharomtz3 жыл бұрын
Great video guys! Do you know if this extension will work with a Flutter web app? Like, if I use the Stripe checkout, would it still sync purchases either recurring or one time with my Firestore database?
@SmallBatchDevs3 жыл бұрын
Great question! Using firebase extensions should work with any javascript project if you're using the Javascript Firebase SDK.
@luisharomtz3 жыл бұрын
@@SmallBatchDevs I was able to get it working, but unable to use the callable function (incompatible libraries). Anyway, do you have any suggestion for one time donations? I know you can send an invoice with another extension, but it would be nicer to be able to send people to checkout for that invoice instead of mailing it. Best.
@JacksonWelch3 жыл бұрын
This was super useful. Thank you
@SmallBatchDevs3 жыл бұрын
You're welcome! 😁 Thanks for watching!
@someone112333 жыл бұрын
GREAT BRO ! you earned by subscribe just on 1st video
@El_ii3 жыл бұрын
Love the Video, Keep up the good work you do!! Can I also use it only for checkout or do I need to create a subscription product?
@SmallBatchDevs3 жыл бұрын
Hi Elisabeth! Thanks for the kind words! So this video is specific to subscriptions but we do cover the stripe invoice extension as well in another video. We do also have a video which teaches you how to use Stripe as more of a checkout tool but it isn’t a firebase extension! Hope that helps!
@El_ii3 жыл бұрын
@@SmallBatchDevs Great, thanks and have a nice day.
@hesamalavi93 жыл бұрын
Thanks very much for the video. Have you had any issues going to the customer portal? I've found an issue, not sure if it is the same for you, but the customer portal is only available after the purchase, and once the customer signs out of the app, and then signs back in, I get "Unhandled Runtime Error Error: Missing required param: customer."
@FreeMarketSwine3 жыл бұрын
Is the product supposed to show up automatically at 13:05? It didn't for me. I set the extension up to sync initially but did not have an existing products collection in Firestore.
@FreeMarketSwine3 жыл бұрын
Adding the Firestore collections before setting up the webhook seems to do the trick.
@truncat2 жыл бұрын
@@FreeMarketSwine Hey, I know this has been a year ago, but could you elaborate on how you fixed this? I am seeing the same thing, after setting this up, products aren't showing automatically.
@FreeMarketSwine2 жыл бұрын
@@truncat I ended up abandoning the project I was working on probably not long after I made this comment, but did you try hitting "Start collection" under Firestore Database? Then you can add a products collection. If that's not it, then I'm not really sure.
@alejandrocoronado11313 жыл бұрын
you guys are awesome
@sulmana3 жыл бұрын
This video is great. Can you guys make a video in future with the following requirements. Right now i will be developing these requirements but i want to compare my solution with others later on Payment subscription for different user roles (5$ for simple user, 10$ for manager role, 15$ for company) recurring payment with payment settings using firebase GCP and react js with redux etc i know your video covers a lot of it but i just want to know for sure that what i will develop be the preferred solution or not
@SmallBatchDevs3 жыл бұрын
Thanks for watching! We'll definitely consider making a design or architecture video in the future! For now your plan sounds good, our advice is to just get started and you'll figure it out on the way! No matter which direction you choose I guarantee you'll refactor and redesign at some point, that's just part of the process! ☺️
@sulmana3 жыл бұрын
@@SmallBatchDevs indeed it is. I will try to post my solution on github so if you do make a video you can get some help or give some suggestions. Anyway peace out keep up the good work. Wish you get a lot of subs :)
@SmallBatchDevs3 жыл бұрын
Thanks so much for the kind words!
@sulmana3 жыл бұрын
um can you please take a look at this if easy for you, i am stuck on this. i am coding this in react but the basic stuff should be same i.imgur.com/CTFwlm4.png
@sulmana3 жыл бұрын
Nevermind it was typo of checkout-session to checkout_session and i ran into another error of CORS when running the portal function and i fixed it like this i.imgur.com/B5Fp1zr.png
@pingster3 жыл бұрын
nice video, would love to see this in redwoodjs or nextjs or vue.. a react implementation would go a long way
@SmallBatchDevs3 жыл бұрын
We'll consider it! Would be interesting to compare frameworks. Thanks for watching!
@meirgoldenberg56383 жыл бұрын
@@SmallBatchDevs What would need to change in a react.js implementation?
@azaeldrm Жыл бұрын
Could you guys refer me to an implementation of this using React Native?
@florianmuhlbacher85943 жыл бұрын
thank you guys, one question. Is it possible to pass data when the customer is created in the firestore? i need to pass some data to customer like tax_rates etc.? :-)
@SmallBatchDevs3 жыл бұрын
That is a really good question! We will look into it
@florianmuhlbacher85943 жыл бұрын
@@SmallBatchDevs after reviewing the code from the extension i found a way to solve my issue. I do everything the same way like you except creating the customer. i create the customer over a fire function. IMPORTANT: the customer object must contain a field called "stripeId" otherwise the extension will overwrite the customer. And boom, thats it. :-)
@socialapp3231 Жыл бұрын
is it possible for you guys to explain14:45 - I have a react native app built using expo so I do not have a Default redirect URL. What should I enter for this?
@amulyadubey36373 жыл бұрын
Can we fire a function once the payment is completed? And how?
@SmallBatchDevs3 жыл бұрын
Great Question! To fire a function once payment is completed, you'll need a webhook on the function you want to fire and then provide that webhook to Stripe in the same way we do in this video. When setting up that webhook you'll need to select the appropriate events for successful payment. I believe it's the "payment_intent.succeeded" event. Currently, you can't use this extension to set that up, so you'll have to set it up manually. You can find more info here: stripe.com/docs/payments/handling-payment-events Thanks for watching!
@MarkPelsone-y2v2 ай бұрын
Yeah how did the products collection automatically show up in firestore
@sanesanyo2 жыл бұрын
I have a question regarding the cancellation part. So when I look at the your code, you are looking for ["trailing", "active"] in "status" field of subscription collection to set the subscription level of the user. Now my question is that when the user cancels their account in the customer portal, does "trailing" keyword is set automatically in the subscription collection in case the period the user has paid for has yet to expire. When I try it, I do not see any change in value, it still shows active. As we do not control the customer portal, it is difficult for me to set any click events to set these values. Any help would be appreciated. I want to avoid a situation where user has already cancelled but the status still shows "active". Thanks a lot in advance.
@sanesanyo2 жыл бұрын
I got my answer from the extension developers.
@hosstaba3 жыл бұрын
Hi guys, can you provide a link to the UI code? You never mentioned which module all that code should go into. Many thanks
@SmallBatchDevs3 жыл бұрын
UI code? For which UI are you referring to?
@hosstaba3 жыл бұрын
@@SmallBatchDevs The piece of code you wrote to tie everything together, to show Subscribe or Manage Subscription button. Does that go into a brand new Component? Many thanks
@hosstaba3 жыл бұрын
@@SmallBatchDevs Also, what is the definitions for doesNothaveSubs$ boolean? How do you determine that? Apologies if the questions are stupid, but I'm relatively new to Angular, & know next to nothing about Stripe! Many many thanks for your help
@hosstaba3 жыл бұрын
@@SmallBatchDevs And please provide the definition for currentUser$, again many many thanks
@j-Dor4 жыл бұрын
I like your content on angular and firebase hopping for a full project on angular and firebase functions. I have a small doubt is it ok to push firebase ids and keys to Github and how can we protect firebase keys.I have a firebase angular project with GitHub actions enabled but I don't want to push my keys but still want my actions to work. is it possible?
@SmallBatchDevs4 жыл бұрын
Hi! Check out our video on github actions to see how to keep your firebase ci token a secret kzbin.info/www/bejne/oWWuoJ6ke8qtZsU As far as other firebase api keys, you can store them in the firebase config on your server side. Keep in mind this is just for cloud functions using secret api keys. You shouldn't have to use any secret keys in your client code. Check out these docs firebase.google.com/docs/functions/config-env
@j-Dor4 жыл бұрын
@@SmallBatchDevs actually my CI is working as expected but i don't want to expose my firebase keys which is in app.module.ts so i have added that file in git ignore that's why i am getting a build issue. what is the ideal way not to expose the firebase key but still I can use that file in the CI build process
@SmallBatchDevs4 жыл бұрын
Ah I see what the issue is. Unfortunately I don't think there is a way to 100% hide these keys, but you may not need to. These links suggest that it's safe for those keys to be public, BUT this requires you to use the security rules for your databases and storage. firebase.google.com/docs/projects/learn-more#config-files-objects stackoverflow.com/questions/37482366/is-it-safe-to-expose-firebase-apikey-to-the-public support.google.com/firebase/answer/6400741 Check those links out and let us know if they helped!
@j-Dor4 жыл бұрын
@@SmallBatchDevs Thank You
@SmallBatchDevs4 жыл бұрын
You're welcome! Please let us know how it works out for you and what you decide to do!
@allymccutcheon65253 жыл бұрын
This video would be better with two pink shirts
@ricndrs3 жыл бұрын
Thanks! How can we use the Stripe Customer Portal integrated in Webflow? I’m really stuck
@SmallBatchDevs3 жыл бұрын
Hey thanks for watching! We're not familiar with webflow but we found these docs, maybe they'll help you! stripe.com/partners/webflow
@danielwatson65292 жыл бұрын
does anyone know how to just get the price. if ur doing a one time purchase for eg a tshirt, i have to go into a sub collection of prices??
@MrJohAA3 жыл бұрын
Hello, is there a video to the "manage account" part ?
@SmallBatchDevs3 жыл бұрын
Hi! As of right now, we don't have one. We may do one in the future. Thanks for watching! :)
@MrJohAA3 жыл бұрын
@@SmallBatchDevs It was helpfull thanks
@sarimsarimsarim3 жыл бұрын
is there a way for stripe to prevent a user from accidentally subscribing twice to the same product? or do i have to handle it client side by hiding the subscribe button? thanks!
@SmallBatchDevs3 жыл бұрын
Great question! You'll have to handle that client side by hiding the subscribe button. Thanks for watching! 😊
@sarimsarimsarim3 жыл бұрын
@@SmallBatchDevs great, thanks for the response!
@sarimsarimsarim3 жыл бұрын
@@SmallBatchDevs Just another quick question, do you have any recommendations for a dev/prod setup with the Stripe extension? Thanks so much!
@SmallBatchDevs3 жыл бұрын
Another great question! In Stripe, you can use a test mode for testing you're setup before using real money. We briefly cover in this Stripe video kzbin.info/www/bejne/iX-8mY1_i8t0nMk around 6 minutes in. This is to be used on your server side setup and then any client side actions you take will reflect that test mode due to that test API key. Once you're ready to go live any products or subscriptions and web hooks that you made in your test mode will need to be copied into your love mode and all those product ids updated accordingly in your codebase. More documentation info here: stripe.com/docs/keys
@sarimsarimsarim3 жыл бұрын
@@SmallBatchDevs Awesome! Sorry for all the back and forth, but is there an easy way to switch the test and live keys on the Firebase Extension? Currently I finished testing my dev code, so now i need to update the Extension with the live webhook secret and the stripe live key. But there might be new features I want to develop in test mode. Would it be easier for me to set up two separate Firebase projects? Thank you!
@connallykendrick93503 жыл бұрын
Hey guys.. a bit confused here. I just had an extension built and want to monetize it. Of course, Google no longer supports that or Auth. I'm having trouble finding info on how to do it. Is this a good solution? and if so, can I migrate/convert my extension to Firebase somehow? I've been searching with no success.
@SmallBatchDevs3 жыл бұрын
Hi! If I understand correctly, you build a google chrome browser extension and want to monitize it. Unfortunately firebase extensions are different than chrome browser extensions. Firebase extensions are solely used in an application's codebase and not directly used by one of your app users. Whereas a chrome browser extension is a full user facing web application. So I don't think you'll be able to achieve what I assume you want to achieve with Firebase's extensions. If you do find a solution please let us know about it here!
@connallykendrick93503 жыл бұрын
@@SmallBatchDevs Thank you for the reply! I sure will
@SmallBatchDevs3 жыл бұрын
You're welcome! And good luck! 😁
@26081550022223 жыл бұрын
Great
@SmallBatchDevs3 жыл бұрын
Thank you and thanks for watching!
@Selem5574 жыл бұрын
The sendToCustomerPortal() is returning this error: Uncaught (in promise): Error: internal Error: internal at new HttpsErrorImpl
@SmallBatchDevs4 жыл бұрын
Hey! Can you provide more details around that error? I'm not sure what it means from the snippet you provided.
@Selem5574 жыл бұрын
@@SmallBatchDevs It was about the region I just had to add functions('europe-west1') to the call and upgrade firebase from 7.22.0 to 7.24 now everything works great, cool video btw guys, and keep on going!!