Πώς να προσθέσετε πληρωμές στην εφαρμογή σας: Checkout, συνδρομές και webhooks
Ο απλούστερος τρόπος για να προσθέσετε πληρωμές στην εφαρμογή σας είναι το Stripe: χρησιμοποιήστε ένα Payment Link αν χρειάζεστε μόνο ένα κουμπί «Αγορά» και μπορείτε να χειρίζεστε τις παραγγελίες με το χέρι, Stripe Checkout αν η εφαρμογή χρειάζεται να ξέρει ποιος πλήρωσε και να αντιδρά αυτόματα, και το Checkout σε λειτουργία συνδρομής μαζί με την πύλη πελάτη του Stripe για επαναλαμβανόμενη χρέωση. Σε κάθε περίπτωση εκτός από την πιο απλή, χρειάζεστε επίσης ένα webhook — ένα τελικό σημείο στον διακομιστή σας που καλεί το Stripe όταν μια πληρωμή επιτυχαίνει — και πρέπει να δοκιμάσετε τα πάντα με τα κλειδιά δοκιμής και τις δοκιμαστικές κάρτες του Stripe πριν περάσετε στα κλειδιά παραγωγής (live).
Αυτός ο οδηγός εξηγεί κάθε επιλογή, το κομμάτι των webhooks που παραλείπουν τα περισσότερα σεμινάρια, και τι να ελέγξετε πριν δεχτείτε πραγματικά χρήματα. Τα στοιχεία του Stripe προέρχονται από την τεκμηρίωση του ίδιου του Stripe, όπως ίσχυε τον Σεπτέμβριο του 2026.
Γιατί να χρησιμοποιείτε πάροχο πληρωμών
Ποτέ μην συλλέγετε αριθμούς καρτών στις δικές σας φόρμες. Ο χειρισμός ακατέργαστων στοιχείων καρτών σας βάζει στο πεδίο του PCI DSS (του προτύπου ασφαλείας της βιομηχανίας καρτών πληρωμής) και είναι σοβαρή ευθύνη. Ένας πάροχος πληρωμών όπως το Stripe φιλοξενεί τη φόρμα πληρωμής, αποθηκεύει την κάρτα, διαχειρίζεται την τραπεζική επαλήθευση και λέει στην εφαρμογή σας το αποτέλεσμα. Η εφαρμογή σας βλέπει ποτέ μόνο «ο πελάτης Χ πλήρωσε για το Υ».
Αυτός ο οδηγός χρησιμοποιεί το Stripe επειδή είναι ευρέως χρησιμοποιούμενο, καλά τεκμηριωμένο και υποστηρίζεται από τους περισσότερους δημιουργούς εφαρμογών AI. Υπάρχουν και άλλοι πάροχοι, και ορισμένοι λειτουργούν ως «merchant of record» που αναλαμβάνει τον χειρισμό του φόρου πωλήσεων για εσάς· αν η φορολογική συμμόρφωση σας ανησυχεί, αυτό το μοντέλο αξίζει σύγκριση.
Οι τρεις τρόποι λήψης πληρωμών με το Stripe
| Επιλογή | Κώδικας που χρειάζεται | Η εφαρμογή ξέρει ποιος πλήρωσε; | Ιδανική για |
|---|---|---|---|
| Payment Links | Κανένας | Μόνο αν προσθέσετε webhook | Πώληση λίγων σταθερών προϊόντων, δωρεές, δοκιμή ζήτησης |
| Checkout (μία φορά) | Κώδικας διακομιστή για δημιουργία συνεδρίας | Ναι, μέσω webhook | Καταστήματα, ψηφιακές λήψεις με αντίτιμο, μεμονωμένες αγορές |
| Checkout (συνδρομή) | Κώδικας διακομιστή και χειρισμός webhook | Ναι, μέσω webhook | SaaS, συνδρομές μελών, οτιδήποτε επαναλαμβανόμενο |
Payment Links
Ένα Payment Link είναι μια σελίδα πληρωμής που φιλοξενεί το Stripe και που δημιουργείτε στο Stripe Dashboard χωρίς κώδικα. Παίρνετε μια διεύθυνση URL που μπορείτε να βάλετε πίσω από ένα κουμπί στην εφαρμογή σας, να μοιραστείτε σε email ή να δείξετε ως κωδικό QR. Η τεκμηρίωση του Stripe λέει ότι τα Payment Links μπορούν να πουλήσουν ένα προϊόν, μια συνδρομή ή να δεχτούν δωρεά, και μπορείτε να αφήσετε τον πελάτη να επιλέξει τι θα πληρώσει ή να περιορίσετε τον αριθμό των αγορών.
Η παγίδα: η εφαρμογή σας δεν ξέρει αυτόματα ότι ένας συγκεκριμένος συνδεδεμένος χρήστης πλήρωσε. Για μια σελίδα δωρεών ή ένα μικρό κατάστημα όπου εκπληρώνετε παραγγελίες με το χέρι από τις ειδοποιήσεις email του Stripe, αυτό είναι εντάξει. Για το «πλήρωσε για να ξεκλειδώσεις τις λειτουργίες Pro», δεν είναι.
Stripe Checkout
Το Checkout είναι μια σελίδα πληρωμής που δημιουργεί ο διακομιστής σας κατ' απαίτηση για μια συγκεκριμένη αγορά. Ο διακομιστής λέει στο Stripe τι αγοράζεται (και προαιρετικά ποιος πελάτης αγοράζει), το Stripe επιστρέφει μια διεύθυνση, και στέλνετε τον πελάτη εκεί. Η τεκμηρίωση του Stripe περιγράφει ότι υποστηρίζει μεμονωμένες πληρωμές και συνδρομές, είτε ως πλήρη σελίδα που φιλοξενεί το Stripe, είτε ως σελίδα ενσωματωμένη στον ιστότοπό σας, είτε ως ενσωματωμένη φόρμα.
Η ροή:
- Ο πελάτης πατά Αγορά στην εφαρμογή σας.
- Ο διακομιστής σας δημιουργεί μια συνεδρία Checkout με το μυστικό κλειδί σας, και περιλαμβάνει ένα αναγνωριστικό που τη συνδέει με τον χρήστη ή την παραγγελία σας.
- Ο πελάτης ανακατευθύνεται στο Stripe και πληρώνει.
- Το Stripe τον ανακατευθύνει πίσω στη σελίδα επιτυχίας σας.
- Το Stripe στέλνει ένα γεγονός
checkout.session.completedστο webhook σας, και ο διακομιστής σας σημειώνει την παραγγελία ως πληρωμένη ή ξεκλειδώνει την πρόσβαση.
Το βήμα 2 πρέπει να γίνεται στον διακομιστή, γιατί χρησιμοποιεί το μυστικό σας κλειδί. Αυτός είναι ο κύριος λόγος που το Checkout χρειάζεται backend.
Συνδρομές
Οι συνδρομές χρησιμοποιούν το Checkout σε λειτουργία συνδρομής, με μια επαναλαμβανόμενη τιμή που ορίζετε στο Stripe. Η πρώτη πληρωμή λειτουργεί όπως η παραπάνω ροή. Μετά, οι ανανεώσεις, οι αποτυχημένες κάρτες, οι αναβαθμίσεις και οι ακυρώσεις συμβαίνουν με τον καιρό — συχνά όταν ο πελάτης δεν βρίσκεται καθόλου στην εφαρμογή σας — οπότε η εφαρμογή μαθαίνει γι' αυτά μόνο μέσω webhooks.
Για να αφήσετε τους πελάτες να διαχειρίζονται τη δική τους συνδρομή, το Stripe προσφέρει μια φιλοξενούμενη πύλη πελάτη (customer portal). Σύμφωνα με την τεκμηρίωση του Stripe, οι πελάτες μπορούν εκεί να ενημερώσουν τον τρόπο πληρωμής και τα στοιχεία χρέωσης, να αλλάξουν ή να ακυρώσουν συνδρομές, και να δουν και να κατεβάσουν τα τιμολόγια. Τη ρυθμίζετε στο Stripe Dashboard και προσθέτετε ένα κουμπί «Διαχείριση χρέωσης» που στέλνει τον πελάτη εκεί. Έτσι γλιτώνετε την κατασκευή αυτών των οθονών.
Webhooks: το κομμάτι που δεν μπορείτε να παραλείψετε
Ένα webhook είναι ένα αίτημα HTTP που στέλνει το Stripe στον διακομιστή σας όταν συμβαίνει κάτι. (Δείτε τι είναι ένα webhook για τη γενική ιδέα.) Ο οδηγός εκπλήρωσης του Stripe είναι σαφής: δεν μπορείτε να βασιστείτε μόνο στη σελίδα επιτυχίας για να εκπληρώσετε παραγγελίες, γιατί ένας πελάτης μπορεί να πληρώσει και μετά να χάσει τη σύνδεσή του πριν φορτωθεί η σελίδα. Για συνδρομές και για καθυστερημένες μεθόδους πληρωμής, τα webhooks είναι υποχρεωτικά.
Γεγονότα που αξίζει να χειριστείτε
| Γεγονός | Τι σημαίνει | Τι κάνει η εφαρμογή σας |
|---|---|---|
checkout.session.completed | Το Checkout ολοκληρώθηκε | Σημειώστε την παραγγελία ως πληρωμένη ή ξεκινήστε την πρόσβαση |
checkout.session.async_payment_succeeded | Μια καθυστερημένη μέθοδος (όπως χρεωστική τραπεζική εντολή) εκκαθαρίστηκε αργότερα | Εκπληρώστε τώρα |
checkout.session.async_payment_failed | Εκείνη η καθυστερημένη πληρωμή απέτυχε | Ενημερώστε τον πελάτη· μην εκπληρώσετε |
invoice.paid | Μια πληρωμή συνδρομής επιτυχαίνει, συμπεριλαμβανομένων των ανανεώσεων | Επεκτείνετε την πρόσβαση |
invoice.payment_failed | Μια ανανέωση απέτυχε | Προειδοποιήστε τον χρήστη· το Stripe μπορεί να επαναλάβει |
customer.subscription.updated | Άλλαξε το πρόγραμμα ή προγραμματίστηκε ακύρωση | Ενημερώστε το πρόγραμμα του χρήστη |
customer.subscription.deleted | Η συνδρομή τελείωσε | Αφαιρέστε την πληρωμένη πρόσβαση |
Κανόνες για σωστό χειριστή webhook
Αυτοί προέρχονται απευθείας από την τεκμηρίωση webhook του Stripe, και οι χειριστές που δημιουργούνται από AI μερικές φορές τους παραλείπουν:
- Επαληθεύστε την υπογραφή. Κάθε γεγονός περιλαμβάνει μια κεφαλίδα
Stripe-Signature. Ο χειριστής σας την ελέγχει με το μυστικό υπογραφής του τελικού σημείου (ξεκινά μεwhsec_). Χωρίς αυτό, οποιοσδήποτε θα μπορούσε να στείλει ψεύτικο μήνυμα «η πληρωμή επιτυχαίνει» στον διακομιστή σας. - Χρησιμοποιήστε το ακατέργαστο σώμα του αιτήματος. Οι έλεγχοι υπογραφής αποτυγχάνουν αν το πλαίσιό σας αναλύει ή αλλάζει πρώτα το σώμα.
- Επιστρέφετε απάντηση 2xx γρήγορα και μετά κάνετε τη βαρύτερη δουλειά. Τα timeouts μετράνε ως αποτυχίες.
- Χειριστείτε τα διπλότυπα. Το Stripe μπορεί να παραδώσει το ίδιο γεγονός περισσότερες από μία φορές. Καταγράψτε τα αναγνωριστικά των γεγονότων που έχετε ήδη επεξεργαστεί, ή κάντε την εκπλήρωση ασφαλή ακόμη κι αν τρέξει δύο φορές.
- Μην υποθέτετε σειρά. Το Stripe δεν εγγυάται ότι τα γεγονότα φτάνουν με τη σειρά που συνέβησαν.
- Περιμένετε επαναλήψεις. Στη λειτουργία παραγωγής (live) το Stripe επαναλαμβάνει τις αποτυχημένες παραδόσεις για έως και τρεις ημέρες, οπότε μια σύντομη διακοπή δεν χάνει πληρωμές — αλλά ο χειριστής σας πρέπει να αντεπεξέρχεται σε καθυστερημένα γεγονότα.
Τα webhooks χρειάζονται δημόσια διεύθυνση HTTPS, οπότε συνήθως λειτουργούν μόνο αφού δημοσιευτεί η εφαρμογή σας (το CLI του Stripe μπορεί να προωθεί γεγονότα σε τοπικό υπολογιστή για προγραμματιστές).
Μια προτροπή που καλύπτει ολόκληρη τη ροή
Πρόσθεσε αγορά μίας φοράς με Stripe Checkout για το «Pro pack» (ID τιμής στο STRIPE_PRICE_ID). Δημιούργησε τη συνεδρία Checkout στον διακομιστή με το STRIPE_SECRET_KEY από τα μυστικά, και συμπερίλαβε το ID του συνδεδεμένου χρήστη στη συνεδρία. Πρόσθεσε τελικό σημείο POST /api/stripe/webhook που επαληθεύει την υπογραφή του Stripe με το STRIPE_WEBHOOK_SECRET χρησιμοποιώντας το ακατέργαστο σώμα του αιτήματος, χειρίζεται το checkout.session.completed και σημειώνει ότι εκείνος ο χρήστης έχει το Pro pack. Κάνε το ασφαλές αν το ίδιο γεγονός φτάσει δύο φορές. Πρόσθεσε σελίδες επιτυχίας και ακύρωσης. Ποτέ μην εκθέτεις το μυστικό κλειδί στον περιηγητή.
Για συνδρομές, πρόσθεσε: «Χρησιμοποίησε λειτουργία συνδρομής με το STRIPE_PRICE_ID. Χειρίσου τα invoice.paid, invoice.payment_failed, customer.subscription.updated και customer.subscription.deleted. Πρόσθεσε κουμπί Διαχείριση χρέωσης που ανοίγει την πύλη πελάτη του Stripe.»
Λειτουργία δοκιμής
Το Stripe έχει ξεχωριστά περιβάλλοντα sandbox (δοκιμής) και live (παραγωγής), με ξεχωριστά κλειδιά. Τα κλειδιά δοκιμής ξεκινούν με pk_test_, sk_test_ ή rk_test_· τα live με pk_live_, sk_live_ ή rk_live_. Οι δοκιμαστικές συναλλαγές δεν κινούν χρήματα.
Χρήσιμες δοκιμαστικές κάρτες από την τεκμηρίωση δοκιμών του Stripe (οποιαδήποτε μελλοντική ημερομηνία λήξης, οποιοδήποτε τριψήφιο CVC):
| Αριθμός κάρτας | Αποτέλεσμα |
|---|---|
4242 4242 4242 4242 | Η πληρωμή επιτυχαίνει |
4000 0000 0000 0002 | Η κάρτα απορρίπτεται |
4000 0000 0000 3220 | Απαιτεί επαλήθευση 3D Secure, και μετά επιτυγχάνει |
Δοκιμάστε τουλάχιστον:
- Μια επιτυχημένη πληρωμή ξεκλειδώνει το σωστό πράγμα για τον σωστό χρήστη
- Μια απορριφθείσα κάρτα δείχνει σαφές μήνυμα και δεν ξεκλειδώνει τίποτα
- Αν κλείσετε την καρτέλα αμέσως μετά την πληρωμή, η πρόσβαση εξακολουθεί να δίνεται (αυτό αποδεικνύει ότι λειτουργεί το webhook, όχι μόνο η σελίδα επιτυχίας)
- Η ακύρωση στη σελίδα του Stripe επιστρέφει τον χρήστη στην εφαρμογή σας χωρίς καμία χρέωση
- Για συνδρομές: ακυρώστε στην πύλη πελάτη και επιβεβαιώστε ότι η πρόσβαση τελειώνει όταν πρέπει
Η μετάβαση στην παραγωγή
- Ενεργοποιήστε τον λογαριασμό Stripe με τα στοιχεία της επιχείρησης και της τράπεζάς σας.
- Βάλτε τα live κλειδιά στα μυστικά της εφαρμογής σας. Το Stripe συνιστά περιορισμένα κλειδιά (restricted keys) με μόνο τα δικαιώματα που χρειάζεται η ενσωμάτωσή σας, αντί για ένα απεριόριστο μυστικό κλειδί.
- Δημιουργήστε τελικό σημείο webhook παραγωγής που δείχνει στη δημοσιευμένη εφαρμογή σας. Έχει δικό του μυστικό υπογραφής, διαφορετικό από το δοκιμαστικό — ενημερώστε το.
- Ξαναδημιουργήστε προϊόντα και τιμές σε λειτουργία παραγωγής· τα αναγνωριστικά της λειτουργίας δοκιμής δεν υπάρχουν εκεί.
- Κάντε μία πραγματική μικρή αγορά και επιστρέψτε τα χρήματα (refund).
Κρατήστε κάθε κλειδί στα μυστικά του έργου σας, ποτέ στον κώδικα ή στο chat. Η λίστα ασφαλείας καλύπτει τα κλειδιά και την επαλήθευση webhook με περισσότερες λεπτομέρειες.
Φόροι, επιστροφές και γραφειοκρατία
Οι πληρωμές φέρνουν υποχρεώσεις που ο κώδικας δεν λύνει. Αυτό δεν είναι φορολογική συμβουλή· συμβουλευτείτε λογιστή.
- Φόρος πωλήσεων, ΦΠΑ (VAT) και GST. Ανάλογα με το πού βρίσκεστε εσείς και οι πελάτες σας, μπορεί να χρειαστεί να εγγραφείτε, να χρεώσετε και να υποβάλετε φόρο. Το Stripe Tax μπορεί να υπολογίζει και να εισπράττει φόρο στο checkout, να παρακολουθεί πού οι πωλήσεις σας δημιουργούν υποχρέωση και να βοηθά με εγγραφές και δηλώσεις — αλλά η ευθύνη παραμένει δική σας. Οι πάροχοι merchant-of-record είναι εναλλακτική που αναλαμβάνει περισσότερα από αυτά.
- Επιστροφές και διαφωνίες. Αποφασίστε την πολιτική επιστροφών πριν την κυκλοφορία και βάλτε την στον ιστότοπό σας. Οι διαφωνίες (chargebacks) συμβαίνουν· κρατήστε αρχεία για το τι αγοράστηκε και τι παραδόθηκε.
- Αποδείξεις και τιμολόγια. Το Stripe μπορεί να στέλνει αποδείξεις με email· οι επιχειρήσεις μπορεί να χρειάζονται κανονικά τιμολόγια.
- Προμήθειες. Κάθε πάροχος χρεώνει ανά συναλλαγή. Ελέγξτε τη σελίδα τιμών του παρόχου για την τρέχουσα τιμολόγηση, αντί να βασίζεστε σε αριθμούς από άρθρα.
Ποια ρύθμιση ταιριάζει στην εφαρμογή σας
- Δωρεές ή λίγα προϊόντα: Payment Links. Δείτε πώς να φτιάξετε ιστότοπο δωρεών μη κερδοσκοπικού οργανισμού.
- Κατάστημα με καλάθι: Checkout με γραμμές προϊόντων και webhook. Δείτε πώς να φτιάξετε ηλεκτρονικό κατάστημα.
- SaaS ή συνδρομές μελών: Checkout σε λειτουργία συνδρομής, webhooks και πύλη πελάτη. Δείτε πώς να φτιάξετε MVP SaaS και πώς να τιμολογήσετε ένα προϊόν SaaS.
- Μαρκετπλέις που πληρώνει τους πωλητές: μια διαφορετική, πιο ρυθμισμένη ρύθμιση (Stripe Connect ή παρόμοια). Σχεδιάστε την ξεχωριστά.
Προσθήκη πληρωμών στο Mythex
Οι πληρωμές σε εφαρμογές που χτίζετε στο Mythex χρησιμοποιούν τον δικό σας λογαριασμό και τα δικά σας κλειδιά Stripe· δεν υπάρχει σύνδεση Stripe με ένα κλικ για την εφαρμογή σας. Η συνήθης ροή:
- Πάρτε τα κλειδιά δοκιμής του Stripe.
- Προσθέστε το
STRIPE_SECRET_KEY(και αργότερα το μυστικό του webhook) στα μυστικά του έργου — μέσω του/secrets, των ρυθμίσεων του έργου ή της κάρτας μυστικών που εμφανίζει ο πράκτορας όταν χρειάζεται ένα κλειδί. - Ζητήστε από τον πράκτορα Checkout με μια προτροπή σαν την παραπάνω.
- Δοκιμάστε στο Preview με δοκιμαστικές κάρτες. Δημοσιεύστε πριν καταχωρίσετε το webhook, αφού χρειάζεται τη δημόσια διεύθυνσή σας.
- Μετά την αλλαγή σε live κλειδιά, δημοσιεύστε ξανά ώστε η ζωντανή εφαρμογή να τα πάρει.
Δείτε Αποδοχή πληρωμών με το Stripe και Χειρισμός webhooks στο backend σας στην τεκμηρίωση.
Ερωτήσεις
Ποιος είναι ο πιο εύκολος τρόπος για να δέχομαι πληρωμές σε μια εφαρμογή;
Ένα Stripe Payment Link δεν χρειάζεται κώδικα: το δημιουργείτε στο Stripe Dashboard και το συνδέετε από την εφαρμογή σας. Αν η εφαρμογή χρειάζεται να ξέρει ποιος πλήρωσε και να ξεκλειδώνει κάτι αυτόματα, χρησιμοποιήστε αντί αυτού το Stripe Checkout με webhook.
Χρειάζομαι webhook για να δέχομαι πληρωμές;
Αν η εφαρμογή σας πρέπει να αντιδρά σε μια πληρωμή — να ξεκλειδώνει λογαριασμό, να σημειώνει μια παραγγελία ως πληρωμένη, να χειρίζεται μια ανανέωση — ναι. Η τεκμηρίωση του Stripe λέει ότι δεν μπορείτε να βασιστείτε μόνο στη σελίδα επιτυχίας, γιατί ένας πελάτης μπορεί να πληρώσει και να μην φτάσει ποτέ εκεί. Τα webhooks είναι επίσης απαραίτητα για τις συνδρομές.
Πώς δοκιμάζω πληρωμές χωρίς πραγματικά χρήματα;
Χρησιμοποιήστε τα κλειδιά API του sandbox (δοκιμής) του Stripe και τους δοκιμαστικούς αριθμούς καρτών του, όπως 4242 4242 4242 4242 με οποιαδήποτε μελλοντική ημερομηνία λήξης και οποιονδήποτε τριψήφιο CVC. Οι δοκιμαστικές συναλλαγές δεν κινούν πραγματικά χρήματα.
Ο Stripe χειρίζεται τον φόρο πωλήσεων και τον ΦΠΑ (VAT) για μένα;
Το Stripe Tax μπορεί να υπολογίζει και να εισπράττει φόρο στο checkout και να παρακολουθεί πού μπορεί να χρειαστεί να εγγραφείτε, αλλά εσείς παραμένετε υπεύθυνοι για τις φορολογικές σας υποχρεώσεις. Συμβουλευτείτε λογιστή για τη δική σας περίπτωση.