﻿1
00:00:01,060 --> 00:00:03,650
‫Kursleiter: In diesem Video integrieren

2
00:00:03,650 --> 00:00:07,240
‫wir Stripe in unser Backend, indem wir diesen

3
00:00:07,240 --> 00:00:10,983
‫API-Endpunkt erstellen, der eine Stripe-Checkout-Sitzung erstellt und zurücksendet.

4
00:00:12,870 --> 00:00:15,717
‫Und an diesem Punkt werden wir tatsächlich damit beginnen, unsere

5
00:00:15,717 --> 00:00:17,110
‫nächste Ressource zu erstellen.

6
00:00:17,110 --> 00:00:18,860
‫Und das sind die Buchungen.

7
00:00:18,860 --> 00:00:21,413
‫Und ich beginne hier mit den Buchungsrouten.

8
00:00:24,995 --> 00:00:25,828
‫Also

9
00:00:27,200 --> 00:00:29,100
‫Routen buchen. js.

10
00:00:29,100 --> 00:00:31,660
‫Und das haben wir jetzt schon so oft gemacht.

11
00:00:31,660 --> 00:00:33,150
‫Also kopiere ich einfach den

12
00:00:33,150 --> 00:00:34,480
‫ganzen Code und

13
00:00:35,890 --> 00:00:37,843
‫füge ihn hier in die Buchungsrouten ein.

14
00:00:39,410 --> 00:00:42,073
‫Und dann einfach alles entfernen.

15
00:00:44,230 --> 00:00:45,923
‫Und auch dieser.

16
00:00:47,310 --> 00:00:50,060
‫Wir brauchen auch keine Merge-Parameter

17
00:00:51,000 --> 00:00:54,530
‫und werden einen Buchungs-Controller anstelle eines Überprüfungs-Controllers

18
00:00:54,530 --> 00:00:55,593
‫haben.

19
00:00:57,850 --> 00:01:02,203
‫Also Buchungscontroller, lassen Sie uns das tatsächlich erstellen.

20
00:01:03,844 --> 00:01:04,677
‫So. js, das sieht richtig

21
00:01:09,317 --> 00:01:10,170
‫aus und lasst uns dies

22
00:01:11,520 --> 00:01:12,570
‫auch direkt in die App integrieren. js.

23
00:01:13,460 --> 00:01:17,503
‫Lassen Sie uns das gleich hier

24
00:01:18,970 --> 00:01:20,970
‫nach dem Testrouter platzieren.

25
00:01:20,970 --> 00:01:22,423
‫Also hier

26
00:01:25,430 --> 00:01:29,940
‫nochmal Buchungen und das dann natürlich hier unten

27
00:01:32,100 --> 00:01:34,370
‫in unsere API einbinden.

28
00:01:34,370 --> 00:01:35,513
‫Also Buchungen

29
00:01:40,190 --> 00:01:42,220
‫und hier Buchungen Router.

30
00:01:43,360 --> 00:01:44,913
‫Und ich denke, das sollte nur Buchung sein.

31
00:01:46,970 --> 00:01:49,223
‫Also lass uns das auch hier reparieren.

32
00:01:50,170 --> 00:01:52,703
‫Und tatsächlich nennen wir es Buchungsrouter.

33
00:01:54,180 --> 00:01:57,010
‫Und auch hier geht es nicht um Buchungen, sondern

34
00:01:57,010 --> 00:01:58,880
‫um die Buchung von Routen.

35
00:01:58,880 --> 00:02:00,700
‫Also lass es dir sparen.

36
00:02:00,700 --> 00:02:01,863
‫Schließen Sie dieses

37
00:02:04,100 --> 00:02:05,990
‫und dieses und dieses hier auch.

38
00:02:05,990 --> 00:02:09,090
‫Und so können wir jetzt tatsächlich unsere

39
00:02:09,090 --> 00:02:11,670
‫erste Route hier erstellen.

40
00:02:11,670 --> 00:02:13,083
‫Kommen wir also zum Router. get und die Route,

41
00:02:14,980 --> 00:02:19,980
‫die hier erstellt wird, wird wieder nicht dem

42
00:02:20,930 --> 00:02:24,160
‫Restprinzip folgen, da es hier nicht wirklich darum geht, eine Buchung

43
00:02:24,160 --> 00:02:26,630
‫zu erstellen oder zu erhalten oder zu aktualisieren.

44
00:02:26,630 --> 00:02:30,080
‫Stattdessen wird diese Route nur für den Kunden zur

45
00:02:30,080 --> 00:02:33,060
‫Verfügung gestellt, um eine Checkout-Sitzung zu erhalten.

46
00:02:33,060 --> 00:02:35,390
‫Also nennen wir diese

47
00:02:35,390 --> 00:02:37,140
‫eine Checkout-Sitzung.

48
00:02:38,810 --> 00:02:41,733
‫Dann müssen wir diese Route

49
00:02:43,060 --> 00:02:45,600
‫schützen, damit nur

50
00:02:45,600 --> 00:02:48,820
‫authentifizierte Benutzer tatsächlich eine Checkout-Sitzung erhalten.

51
00:02:48,820 --> 00:02:50,380
‫Das macht also Sinn, oder?

52
00:02:50,380 --> 00:02:51,863
‫Und dann Buchungscontroller hinzufügen.

53
00:02:52,840 --> 00:02:55,603
‫Wir werden einen Route-Handler

54
00:02:56,460 --> 00:02:59,253
‫namens get checkout session erstellen.

55
00:03:02,477 --> 00:03:06,558
‫Gut.

56
00:03:06,558 --> 00:03:07,391
‫Also

57
00:03:08,512 --> 00:03:12,422
‫kopieren wir diesen hier und erstellen ihn hier bei exports. getCheckoutSession, dann antwortet die Anfrage als

58
00:03:12,422 --> 00:03:14,839
‫nächstes.

59
00:03:16,600 --> 00:03:19,513
‫Und jetzt fangen wir an zu arbeiten.

60
00:03:21,910 --> 00:03:24,740
‫Jetzt müssen wir hier in den Routen noch

61
00:03:24,740 --> 00:03:27,230
‫etwas tun, nämlich einen URL-Parameter anzugeben.

62
00:03:27,230 --> 00:03:31,550
‫Und das wird die Tour-ID sein.

63
00:03:31,550 --> 00:03:34,083
‫Okay, im Grunde möchten wir, dass der

64
00:03:35,970 --> 00:03:39,350
‫Kunde die ID der Tour mitschickt, die gerade gebucht wird.

65
00:03:39,350 --> 00:03:42,920
‫Und damit wir den Checkout mit allen notwendigen

66
00:03:42,920 --> 00:03:46,010
‫Daten wie Tourname und Tourpreis und

67
00:03:46,010 --> 00:03:48,230
‫so weiter füllen können.

68
00:03:48,230 --> 00:03:52,220
‫In Ordnung, wir haben jetzt Zugriff auf die Tour-ID in

69
00:03:52,220 --> 00:03:55,780
‫dieser Handler-Funktion und das erste, was wir tatsächlich tun

70
00:03:55,780 --> 00:03:57,470
‫werden, ist, diese

71
00:03:57,470 --> 00:04:00,030
‫Tour in unserer Datenbank zu finden.

72
00:04:00,030 --> 00:04:02,610
‫Also gut, dafür brauchen wir natürlich das Tourmodell.

73
00:04:02,610 --> 00:04:06,260
‫Kommen wir also zum Tourcontroller und holen

74
00:04:06,260 --> 00:04:09,210
‫das von dort ab.

75
00:04:09,210 --> 00:04:11,190
‫Außerdem brauchen wir

76
00:04:11,190 --> 00:04:14,120
‫dieses catchAsync und das alles.

77
00:04:14,120 --> 00:04:15,793
‫Also kopiere ich alles und auch

78
00:04:16,870 --> 00:04:18,510
‫wenn ich es nicht sofort

79
00:04:18,510 --> 00:04:20,730
‫brauche, werde ich es wahrscheinlich sowieso etwas später brauchen.

80
00:04:20,730 --> 00:04:23,363
‫Gut.

81
00:04:24,629 --> 00:04:25,462
‫Also lassen Sie uns unsere Schritte hier noch einmal planen.

82
00:04:27,840 --> 00:04:30,600
‫Holen Sie sich also die aktuell gebuchte Tour.

83
00:04:30,600 --> 00:04:35,600
‫Im zweiten Schritt erstellen wir dann die Checkout-Sitzung

84
00:04:38,250 --> 00:04:43,250
‫und senden sie schließlich an den Kunden.

85
00:04:45,550 --> 00:04:47,633
‫Alles klar, der erste Schritt ist also ganz einfach.

86
00:04:53,376 --> 00:04:57,043
‫Also werden wir warten.

87
00:04:59,930 --> 00:05:01,053
‫Also Tour. findbyId,

88
00:05:02,140 --> 00:05:06,120
‫die erforderlich ist. Parameter. tourId.

89
00:05:07,210 --> 00:05:10,173
‫Richtig, das

90
00:05:14,790 --> 00:05:18,112
‫war der Name, den wir ihm im URL-Parameter gegeben haben.

91
00:05:18,112 --> 00:05:19,810
‫Und natürlich ist

92
00:05:19,810 --> 00:05:24,250
‫dies jetzt eine asynchrone Funktion mit einem catchAsync daneben oder tatsächlich.

93
00:05:25,120 --> 00:05:29,623
‫Großartig, als nächstes erstellen wir diese Sitzung hier.

94
00:05:33,170 --> 00:05:36,360
‫Und dafür müssen wir tatsächlich

95
00:05:36,360 --> 00:05:38,410
‫dieses Laufwerk-NPM-Paket installieren.

96
00:05:38,410 --> 00:05:40,323
‫Also machen wir das hier.

97
00:05:41,920 --> 00:05:45,650
‫NPM installiert Stripe.

98
00:05:45,650 --> 00:05:50,290
‫Und in der Zwischenzeit gehen wir zu unserem Stripe-Dashboard

99
00:05:50,290 --> 00:05:54,000
‫und holen unseren geheimen Schlüssel von hier.

100
00:05:54,000 --> 00:05:56,003
‫Klicken Sie also einfach hier auf

101
00:05:57,030 --> 00:05:59,280
‫diese Schaltfläche und kopieren Sie es dann.

102
00:05:59,280 --> 00:06:03,040
‫Und Sie sehen, dass hier in den Tasten

103
00:06:03,040 --> 00:06:04,630
‫tatsächlich Test steht.

104
00:06:04,630 --> 00:06:06,380
‫Und so wieder, diese

105
00:06:06,380 --> 00:06:09,920
‫hier sind nur zum Testen und sobald Sie Ihr Stripe-Konto

106
00:06:09,920 --> 00:06:12,530
‫aktiv haben, können Sie Ihre Live-API-Schlüssel erhalten.

107
00:06:12,530 --> 00:06:14,993
‫Okay, jetzt werden wir sie wie

108
00:06:16,390 --> 00:06:19,230
‫alle anderen Schlüssel hier in unsere Konfigurationsdatei einfügen.

109
00:06:19,230 --> 00:06:22,743
‫Also Stripe Secret Key gleich

110
00:06:25,490 --> 00:06:26,370
‫diesem.

111
00:06:29,490 --> 00:06:32,670
‫Und das ist hier nicht richtig.

112
00:06:32,670 --> 00:06:34,120
‫Alles klar, also kopiere diesen hier.

113
00:06:40,700 --> 00:06:43,163
‫Zurück zu unserem Buchungscontroller.

114
00:06:44,730 --> 00:06:46,610
‫Lassen Sie uns nun

115
00:06:46,610 --> 00:06:49,400
‫dieses Laufwerkspaket mit erfolgreich installierter Installation hier anfordern.

116
00:06:49,400 --> 00:06:52,620
‫Und nur bei allen anderen Paketen stelle bitte vorher

117
00:06:52,620 --> 00:06:54,810
‫sicher, dass du tatsächlich auf der

118
00:06:54,810 --> 00:06:56,780
‫gleichen Version bist wie ich.

119
00:06:56,780 --> 00:06:58,030
‫Und du siehst, ich bin hier bei der brandneuen 7. 0. 0.

120
00:06:59,050 --> 00:07:02,137
‫Das ist also wirklich ganz neu.

121
00:07:03,120 --> 00:07:04,730
‫Und das liegt tatsächlich daran,

122
00:07:04,730 --> 00:07:07,650
‫dass sich mit Stripe vor ein paar Tagen einiges geändert hat.

123
00:07:07,650 --> 00:07:10,370
‫Also musste ich ein paar dieser Implementierungen ändern.

124
00:07:10,370 --> 00:07:13,113
‫Wie auch immer,

125
00:07:15,190 --> 00:07:20,190
‫const stripe gleich require und dann stripe.

126
00:07:24,440 --> 00:07:26,000
‫Nun wird dies hier dann im Grunde eine Funktion exponieren.

127
00:07:26,000 --> 00:07:28,890
‫Und normalerweise geben wir dann sofort

128
00:07:28,890 --> 00:07:30,940
‫unseren geheimen Schlüssel ein.

129
00:07:30,940 --> 00:07:34,670
‫Und so erhalten wir dann ein Stripe-Objekt, mit

130
00:07:34,670 --> 00:07:37,020
‫dem wir arbeiten können.

131
00:07:37,020 --> 00:07:38,123
‫Also das jetzt am Prozess. env. STRIPE_SECRET_KEY.

132
00:07:39,410 --> 00:07:43,057
‫Okay, und jetzt verwenden wir das.

133
00:07:46,930 --> 00:07:51,093
‫Also sagen wir Streifen. Kasse. Sitzung. erstellen.

134
00:07:52,700 --> 00:07:57,700
‫Und dann das übliche Optionsobjekt.

135
00:08:02,450 --> 00:08:06,040
‫Alles klar, jetzt gibt es eine Menge Optionen,

136
00:08:06,040 --> 00:08:08,680
‫die wir hier einstellen können.

137
00:08:08,680 --> 00:08:10,060
‫Aber nur drei davon sind erforderlich.

138
00:08:10,060 --> 00:08:12,290
‫Der erste sind also die Zahlungsmethodentypen.

139
00:08:12,290 --> 00:08:15,083
‫Also Zahlungsmethodentypen.

140
00:08:16,010 --> 00:08:20,213
‫Das ist also ein Array, in dem wir mehrere

141
00:08:22,950 --> 00:08:26,740
‫Typen angeben können und Karte für Kreditkarte ist.

142
00:08:26,740 --> 00:08:28,920
‫Und das sind im Moment eigentlich

143
00:08:28,920 --> 00:08:31,780
‫alle Zahlungsoptionen, die wir für den Stripe-Checkout verwenden können.

144
00:08:31,780 --> 00:08:34,330
‫Aber ich habe gelesen, dass sie in Zukunft noch viel mehr hinzufügen werden.

145
00:08:34,330 --> 00:08:38,130
‫So können Sie sich darüber informieren.

146
00:08:38,130 --> 00:08:41,550
‫Dann müssen wir die Erfolgs-URL angeben.

147
00:08:41,550 --> 00:08:44,023
‫Das ist also im Grunde die URL,

148
00:08:46,240 --> 00:08:49,350
‫die aufgerufen wird, sobald eine Kreditkarte erfolgreich belastet wurde.

149
00:08:49,350 --> 00:08:52,690
‫Sobald der Kauf erfolgreich war, wird der

150
00:08:52,690 --> 00:08:55,780
‫Benutzer auf diese URL weitergeleitet.

151
00:08:55,780 --> 00:08:58,860
‫Und jetzt legen wir das einfach als unsere Homepage fest.

152
00:08:58,860 --> 00:09:02,123
‫Alles klar, und das machen wir

153
00:09:03,060 --> 00:09:06,290
‫wie zuvor mit req. Protokoll:// und dann

154
00:09:06,290 --> 00:09:10,963
‫anfordern. den Gastgeber bekommen.

155
00:09:14,270 --> 00:09:18,663
‫Also im Grunde nur unsere Home-URL.

156
00:09:20,670 --> 00:09:23,403
‫Dann müssen wir auch die Abbruch-URL angeben.

157
00:09:24,330 --> 00:09:27,707
‫Also einfach so.

158
00:09:30,530 --> 00:09:31,773
‫Und dieser wird ähnlich sein.

159
00:09:33,010 --> 00:09:34,763
‫Im Grunde ist es die Seite,

160
00:09:36,260 --> 00:09:38,800
‫auf die der Benutzer geht, wenn er die aktuelle Zahlung storniert.

161
00:09:38,800 --> 00:09:41,980
‫Und bringen wir sie tatsächlich dazu, auf die Tourseite zu

162
00:09:41,980 --> 00:09:44,610
‫gehen, auf der sie sich zuvor befanden.

163
00:09:44,610 --> 00:09:46,360
‫Und das ist im Grunde Tour/Tour. Schnecke.

164
00:09:46,360 --> 00:09:50,493
‫Als nächstes können wir auch die Kunden-E-Mail angeben.

165
00:09:56,040 --> 00:09:59,870
‫Und das ist sehr praktisch, denn natürlich haben wir bereits

166
00:09:59,870 --> 00:10:02,410
‫Zugriff auf die E-Mail des Kunden.

167
00:10:02,410 --> 00:10:05,380
‫Damit können wir dem Benutzer einen Schritt sparen

168
00:10:05,380 --> 00:10:08,090
‫und das Bezahlerlebnis viel reibungsloser machen.

169
00:10:08,090 --> 00:10:11,080
‫Also denken Sie daran, dass dies eine geschützte Route ist.

170
00:10:11,080 --> 00:10:15,230
‫Und so kommt der User wie immer schon auf die Anfrage.

171
00:10:15,230 --> 00:10:19,320
‫Und so können wir Bitte sagen. Nutzer. Email.

172
00:10:19,320 --> 00:10:23,763
‫Als nächstes können wir

173
00:10:25,030 --> 00:10:28,860
‫dann auch ein benutzerdefiniertes Feld angeben, das als Client-Referenz-ID bezeichnet wird.

174
00:10:28,860 --> 00:10:31,560
‫Und das klingt ein bisschen komisch,

175
00:10:31,560 --> 00:10:34,610
‫aber eigentlich wird es für uns wirklich wichtig.

176
00:10:34,610 --> 00:10:36,340
‫In diesem Feld können wir

177
00:10:36,340 --> 00:10:39,900
‫also einige Daten über die Sitzung eingeben, die wir gerade erstellen.

178
00:10:39,900 --> 00:10:42,430
‫Und das ist wichtig, denn später, nach

179
00:10:42,430 --> 00:10:44,400
‫erfolgreichem Kauf, erhalten wir

180
00:10:44,400 --> 00:10:46,530
‫dann wieder Zugriff auf das Sitzungsobjekt.

181
00:10:46,530 --> 00:10:50,250
‫Und bis dahin wollen wir eine neue Buchung

182
00:10:50,250 --> 00:10:52,830
‫in unserer Datenbank anlegen.

183
00:10:52,830 --> 00:10:54,400
‫Denken Sie also an das Diagramm,

184
00:10:54,400 --> 00:10:56,380
‫das ich Ihnen in der letzten Vorlesung gezeigt habe.

185
00:10:56,380 --> 00:10:57,610
‫Im Grunde spreche ich hier

186
00:10:57,610 --> 00:10:59,240
‫von dem letzten Schritt in diesem Diagramm.

187
00:10:59,240 --> 00:11:01,890
‫Denken Sie auch daran, dass

188
00:11:01,890 --> 00:11:04,670
‫dies nur mit bereitgestellten Websites funktioniert.

189
00:11:04,670 --> 00:11:06,130
‫Aber trotzdem, bereiten wir uns hier schon darauf vor.

190
00:11:06,130 --> 00:11:08,900
‫Okay, um eine neue Buchung in unserer

191
00:11:08,900 --> 00:11:12,860
‫Datenbank zu erstellen, benötigen wir die Benutzer-ID, die Tour-ID und den Preis.

192
00:11:12,860 --> 00:11:16,890
‫Erinnere dich daran?

193
00:11:16,890 --> 00:11:18,260
‫Und in dieser

194
00:11:18,260 --> 00:11:20,460
‫Sitzung haben wir bereits Zugriff auf die

195
00:11:20,460 --> 00:11:22,315
‫E-Mail des Benutzers und können daraus

196
00:11:22,315 --> 00:11:26,290
‫dann die ID des Benutzers neu erstellen, da die E-Mail hier eindeutig ist.

197
00:11:26,290 --> 00:11:28,520
‫Auch den Preis der Tour werden wir

198
00:11:28,520 --> 00:11:31,900
‫hier gleich angeben und so fehlt dann nur noch die Tour-ID.

199
00:11:31,900 --> 00:11:35,100
‫Und das ist es, was wir hier in diesem benutzerdefinierten

200
00:11:35,100 --> 00:11:37,130
‫Feld im Grunde angeben werden.

201
00:11:37,130 --> 00:11:39,263
‫Das nennt man Client-Referenz-ID.

202
00:11:41,320 --> 00:11:45,763
‫Und all das, was ich gerade erklärt habe, wird tatsächlich viel mehr

203
00:11:47,500 --> 00:11:49,750
‫Sinn machen, wenn wir den

204
00:11:49,750 --> 00:11:52,210
‫letzten Schritt des Erstellens einer Buchung

205
00:11:52,210 --> 00:11:54,630
‫in der Datenbank tatsächlich implementieren, oder?

206
00:11:54,630 --> 00:11:58,240
‫Wie auch immer, diese Tour-ID ist auf Anfrage. Parameter. tourId.

207
00:11:58,240 --> 00:12:02,667
‫In Ordnung, und jetzt

208
00:12:05,371 --> 00:12:08,080
‫werden wir endlich einige Details zum Produkt selbst angeben.

209
00:12:08,080 --> 00:12:11,010
‫So unsere Tour in diesem Fall.

210
00:12:11,010 --> 00:12:13,093
‫Und das nennt man

211
00:12:14,100 --> 00:12:17,720
‫Zeilenelemente, die ein Array von Objekten akzeptieren.

212
00:12:17,720 --> 00:12:19,700
‫Also im Grunde einer pro Artikel

213
00:12:19,700 --> 00:12:22,330
‫und in unserem Fall wird das nur einer sein.

214
00:12:22,330 --> 00:12:24,733
‫Wir müssen also den Namen des

215
00:12:25,940 --> 00:12:28,640
‫Produkts angeben und das ist bei Tour. Namen und wie immer fügen wir auch

216
00:12:30,160 --> 00:12:34,810
‫die Tour zu diesem Namen hinzu.

217
00:12:34,810 --> 00:12:39,423
‫Dann können wir auch eine Beschreibung angeben.

218
00:12:41,720 --> 00:12:43,933
‫Und all diese Feldnamen hier kommen wirklich von Stripe.

219
00:12:45,840 --> 00:12:48,950
‫Wir können also keine eigenen Felder bilden.

220
00:12:48,950 --> 00:12:51,200
‫Wenn Sie also versuchen, dies zu tun, werden Sie wirklich einen Fehler bekommen.

221
00:12:51,200 --> 00:12:54,683
‫In Ordnung, also in die Beschreibung werde ich die Tourzusammenfassung

222
00:12:55,530 --> 00:12:57,510
‫einfügen, also einen schönen kurzen Satz,

223
00:12:57,510 --> 00:12:59,373
‫der jede Tour beschreibt.

224
00:13:00,540 --> 00:13:05,540
‫Dann können wir auch ein Array von Bildern angeben.

225
00:13:06,400 --> 00:13:10,750
‫Jetzt müssen diese Bilder hier Live-Bilder sein.

226
00:13:10,750 --> 00:13:14,120
‫Im Grunde also Bilder, die im Internet

227
00:13:14,120 --> 00:13:17,260
‫gehostet werden, da Stripe dieses Bild tatsächlich

228
00:13:17,260 --> 00:13:20,090
‫auf seinen eigenen Server hochlädt.

229
00:13:20,090 --> 00:13:21,680
‫Dies ist also eines der Dinge, die

230
00:13:21,680 --> 00:13:23,740
‫wir erst dann wirklich tun können, wenn die Website bereitgestellt ist.

231
00:13:23,740 --> 00:13:27,470
‫Aber als Platzhalter werde ich vorerst grundsätzlich die von

232
00:13:27,470 --> 00:13:30,680
‫unserer gehosteten Beispiel-Website auf natours verwenden. dev.

233
00:13:30,680 --> 00:13:34,760
‫Gehen wir also zu dieser Website.

234
00:13:34,760 --> 00:13:36,623
‫Das ist also dieser bei natours. dev.

235
00:13:38,100 --> 00:13:41,050
‫Und das Bild, das ich wählen werde, ist das Titelbild.

236
00:13:41,050 --> 00:13:44,500
‫Sehen wir uns also dieses Bild an.

237
00:13:44,500 --> 00:13:46,283
‫Also diese hier und Linkadresse hier kopieren.

238
00:13:47,130 --> 00:13:51,103
‫Gut.

239
00:13:52,396 --> 00:13:53,710
‫Dies ist also ein

240
00:13:53,710 --> 00:13:58,140
‫Array, weil wir mehrere Bilder angeben können, aber wir wollen wirklich nur eines davon.

241
00:13:58,140 --> 00:14:00,673
‫Und tatsächlich haben wir Natur. dev/images/tours und dann den

242
00:14:01,790 --> 00:14:05,950
‫Namen des Images.

243
00:14:05,950 --> 00:14:07,940
‫Und diese werde ich einfach durch Tour ersetzen. Bild-Cover.

244
00:14:07,940 --> 00:14:11,810
‫Und das wird funktionieren,

245
00:14:11,810 --> 00:14:14,950
‫weil die Namen der Bilder auf natours sind. dev sind genau die gleichen, die wir hier

246
00:14:14,950 --> 00:14:18,920
‫in unserem Projekt haben.

247
00:14:18,920 --> 00:14:20,053
‫Also Tour. BildAbdeckung.

248
00:14:21,560 --> 00:14:23,500
‫Dies ist also

249
00:14:26,580 --> 00:14:29,980
‫eine weitere Sache, die wir tatsächlich ändern müssen, sobald wir unsere Website in Produktion nehmen.

250
00:14:29,980 --> 00:14:32,520
‫Und ich führe tatsächlich eine

251
00:14:32,520 --> 00:14:35,630
‫Liste von dem Zeug, damit wir nichts vergessen.

252
00:14:35,630 --> 00:14:37,280
‫Wie auch immer, als nächstes kommt die Menge.

253
00:14:38,450 --> 00:14:40,760
‫Also im Grunde der Preis des

254
00:14:40,760 --> 00:14:42,940
‫Produkts, das gekauft wird.

255
00:14:42,940 --> 00:14:44,163
‫Das ist also Tour. Preis und jetzt müssen

256
00:14:45,010 --> 00:14:47,990
‫wir das mit 100 multiplizieren.

257
00:14:47,990 --> 00:14:50,660
‫Denn dieser Betrag soll in Cent angegeben werden.

258
00:14:50,660 --> 00:14:53,673
‫Und so hat ein Dollar oder ein Euro oder

259
00:14:54,870 --> 00:14:57,270
‫wirklich die meisten Währungen 100 Cent.

260
00:14:57,270 --> 00:15:00,640
‫Ein Dollar entspricht also 100 Cent.

261
00:15:00,640 --> 00:15:02,920
‫Um es in Cent umzurechnen, multiplizieren Sie es einfach mit 100.

262
00:15:02,920 --> 00:15:06,663
‫Dann müssen wir auch die Währung angeben.

263
00:15:08,040 --> 00:15:11,790
‫Und das ist in diesem Fall USD.

264
00:15:11,790 --> 00:15:14,110
‫Aber es könnte auch so

265
00:15:14,110 --> 00:15:18,850
‫sein, für Euro ist es EUR und für andere Währungen sollten Sie

266
00:15:20,439 --> 00:15:23,560
‫wahrscheinlich einen Blick in die Dokumentation werfen.

267
00:15:23,560 --> 00:15:25,090
‫Ich kann also natürlich

268
00:15:25,090 --> 00:15:27,670
‫nicht alle Währungen abdecken, die es gibt, oder?

269
00:15:27,670 --> 00:15:31,000
‫Wie auch immer, schließlich geben wir auch die Menge an.

270
00:15:31,000 --> 00:15:35,760
‫Und das ist in diesem Fall nur eine Tour.

271
00:15:35,760 --> 00:15:38,263
‫Das ist es also tatsächlich.

272
00:15:41,110 --> 00:15:43,370
‫Dieser Teil hier ist

273
00:15:43,370 --> 00:15:47,230
‫also im Grunde die Information über die Sitzung selbst.

274
00:15:47,230 --> 00:15:48,800
‫Und dann sind hier

275
00:15:48,800 --> 00:15:51,630
‫die Informationen über das Produkt, das der Benutzer kaufen möchte.

276
00:15:51,630 --> 00:15:54,060
‫In Ordnung, jetzt speichern wir die Sitzung tatsächlich.

277
00:15:54,060 --> 00:15:56,883
‫Also const session und nun warten

278
00:15:57,810 --> 00:15:59,090
‫wir darauf.

279
00:16:00,270 --> 00:16:03,000
‫Das Erstellen hier gibt also im Grunde eine

280
00:16:03,000 --> 00:16:05,850
‫Prämisse zurück, da das Festlegen all dieser Optionen

281
00:16:05,850 --> 00:16:08,110
‫hier im Grunde einen API-Aufruf

282
00:16:08,110 --> 00:16:11,060
‫an Stripe ausführt, und das ist dann natürlich

283
00:16:11,060 --> 00:16:14,341
‫eine asynchrone Funktion, auf die wir hier warten sollten.

284
00:16:14,341 --> 00:16:16,470
‫Okay, aber wie auch immer,

285
00:16:16,470 --> 00:16:19,790
‫dies ist jetzt unsere Sitzung und der letzte Schritt

286
00:16:19,790 --> 00:16:22,740
‫ist natürlich, sie an den Kunden zurückzusenden.

287
00:16:22,740 --> 00:16:24,020
‫Der Status ist

288
00:16:24,020 --> 00:16:25,493
‫also wie immer Erfolg.

289
00:16:29,480 --> 00:16:31,743
‫Und dann senden wir die Sitzung einfach so.

290
00:16:33,460 --> 00:16:36,463
‫Alles klar, das sollte es eigentlich sein.

291
00:16:38,896 --> 00:16:42,510
‫Unser Router ist bereits konfiguriert und ich

292
00:16:42,510 --> 00:16:44,980
‫denke, wir könnten

293
00:16:44,980 --> 00:16:48,260
‫das jetzt tatsächlich im Postboten ausprobieren.

294
00:16:48,260 --> 00:16:49,950
‫Okay, jetzt, später, werden

295
00:16:49,950 --> 00:16:53,470
‫wir natürlich niemandem erlauben, dies mit dem Postboten zu tun,

296
00:16:53,470 --> 00:16:55,370
‫weil das nicht viel Sinn macht.

297
00:16:55,370 --> 00:16:57,650
‫Aber jetzt, da wir das

298
00:16:57,650 --> 00:16:59,990
‫nur testen, macht es wirklich viel Sinn.

299
00:16:59,990 --> 00:17:02,060
‫In Ordnung, also gehen

300
00:17:02,060 --> 00:17:05,660
‫wir zum Postboten und erstellen eine brandneue Anfrage.

301
00:17:05,660 --> 00:17:08,483
‫Das wird also bei den

302
00:17:11,150 --> 00:17:15,770
‫Buchungen sein / äh, ich bin mir nicht wirklich sicher.

303
00:17:17,768 --> 00:17:19,313
‫Ja, also Checkout-Sitzung und dann /tourId.

304
00:17:20,261 --> 00:17:24,473
‫In Ordnung, also lass uns unsere Touren hier bekommen.

305
00:17:26,330 --> 00:17:28,823
‫Um die ID von dort im Grunde zu bekommen.

306
00:17:31,030 --> 00:17:33,323
‫Also machen wir den Sea Explorer.

307
00:17:34,560 --> 00:17:36,263
‫Okay, und das sollte eigentlich reichen.

308
00:17:41,700 --> 00:17:45,950
‫Oh warte, wir sind natürlich nicht eingeloggt.

309
00:17:45,950 --> 00:17:47,963
‫Loggen Sie sich also hier ein.

310
00:17:50,022 --> 00:17:51,363
‫Jetzt sind wir im Adminbereich, aber

311
00:17:54,010 --> 00:17:55,460
‫lassen Sie uns hier jemand anderen verwenden.

312
00:17:55,460 --> 00:17:57,370
‫Und ich denke, wir haben Leo

313
00:17:57,370 --> 00:17:59,860
‫schon früher verwendet, also verwenden wir jetzt diesen Benutzer.

314
00:17:59,860 --> 00:18:01,813
‫Jetzt haben wir ein falsches Passwort.

315
00:18:04,250 --> 00:18:07,053
‫Alles klar, also schauen wir mal, was wir noch haben.

316
00:18:08,761 --> 00:18:11,320
‫Also, was andere Benutzer könnten wir verwenden.

317
00:18:11,320 --> 00:18:14,470
‫Und tatsächlich verwenden wir hier Monica.

318
00:18:14,470 --> 00:18:16,683
‫Warum nicht?

319
00:18:19,990 --> 00:18:21,530
‫Hoffentlich ist ihr Passwort richtig.

320
00:18:21,530 --> 00:18:25,753
‫Nun, versuchen wir tatsächlich, dies hier

321
00:18:27,500 --> 00:18:30,410
‫durch test1234 zu ersetzen.

322
00:18:32,170 --> 00:18:33,883
‫Nun, vielleicht haben wir die

323
00:18:35,290 --> 00:18:38,040
‫Passwörter all dieser Benutzer schon in einigen anderen Vorlesungen geändert.

324
00:18:38,040 --> 00:18:41,493
‫Lassen Sie uns hier John verwenden.

325
00:18:43,740 --> 00:18:46,320
‫Ich weiß also, dass wir John nie benutzt

326
00:18:46,320 --> 00:18:48,740
‫haben, also muss es jetzt funktionieren.

327
00:18:48,740 --> 00:18:51,523
‫Oh, ich sehe tatsächlich den Fehler, den ich gerade gemacht habe.

328
00:18:55,250 --> 00:18:59,000
‫Hier ist es also nicht natours, es muss ein Beispiel sein. com.

329
00:18:59,000 --> 00:19:02,583
‫Versuchen wir es also noch einmal mit Monica hier.

330
00:19:06,410 --> 00:19:08,460
‫Oder wirklich nur mit John.

331
00:19:11,990 --> 00:19:13,813
‫Das ist schwieriger als ich erwartet hatte.

332
00:19:14,850 --> 00:19:18,000
‫Aber jetzt sind wir endlich eingeloggt.

333
00:19:18,000 --> 00:19:19,963
‫Alles klar, und

334
00:19:21,130 --> 00:19:24,500
‫damit versuchen wir, unsere Checkout-Sitzung zu erhalten.

335
00:19:24,500 --> 00:19:26,743
‫Uns fehlt die Berechtigung von hier.

336
00:19:29,180 --> 00:19:31,463
‫Noch einmal, und jetzt bekommen wir hier einen echten Fehler.

337
00:19:33,180 --> 00:19:37,270
‫Also etwas, das wirklich aus dem Code kommt,

338
00:19:37,270 --> 00:19:40,370
‫den wir gerade geschrieben haben.

339
00:19:40,370 --> 00:19:41,713
‫Gut.

340
00:19:43,220 --> 00:19:44,550
‫Lassen Sie uns das also überprüfen.

341
00:19:44,550 --> 00:19:46,223
‫Und das Problem ist, dass es hier tatsächlich Sitzungen sind.

342
00:19:47,740 --> 00:19:51,200
‫Also Streifen. Kasse. Sitzungen.

343
00:19:51,200 --> 00:19:54,963
‫Ein Mal noch.

344
00:19:57,400 --> 00:19:58,383
‫Diesmal dauert es viel länger, was ein gutes Zeichen ist.

345
00:19:59,680 --> 00:20:03,850
‫Und wir haben einen weiteren Fehler.

346
00:20:03,850 --> 00:20:05,740
‫Zeile 15 kann also keinen Slug des Knotens lesen.

347
00:20:05,740 --> 00:20:09,573
‫Okay, das ist sicher seltsam, denn auf dieser

348
00:20:12,200 --> 00:20:15,510
‫Tour sollte es eine Schnecke geben.

349
00:20:15,510 --> 00:20:18,463
‫Also äh ja, Sie sehen, dass es

350
00:20:19,980 --> 00:20:21,290
‫hier tatsächlich ist.

351
00:20:22,930 --> 00:20:25,660
‫Vielleicht ist also beim

352
00:20:25,660 --> 00:20:29,660
‫Lesen dieser Tour etwas schief gelaufen.

353
00:20:29,660 --> 00:20:30,623
‫Was ich nicht wirklich verstehen kann, warum das so sein soll.

354
00:20:31,580 --> 00:20:35,083
‫Aber versuchen wir einfach, die Tour auf der Konsole zu loggen.

355
00:20:35,970 --> 00:20:39,273
‫In Ordnung, und tatsächlich bekommen wir null.

356
00:20:46,970 --> 00:20:50,000
‫Was wahrscheinlich bedeutet, dass

357
00:20:50,000 --> 00:20:54,480
‫eine Tour-ID nicht richtig definiert ist.

358
00:20:54,480 --> 00:20:55,763
‫Oh, hier ist das Problem.

359
00:20:56,750 --> 00:20:58,790
‫Also habe ich es, ID nur

360
00:20:58,790 --> 00:21:02,330
‫in Großbuchstaben, aber hier im Controller habe ich das D in Kleinbuchstaben.

361
00:21:02,330 --> 00:21:06,450
‫Also so.

362
00:21:06,450 --> 00:21:07,840
‫Und das sind

363
00:21:07,840 --> 00:21:10,790
‫die kleinen Fehler, die offensichtlich die ganze Zeit passieren.

364
00:21:10,790 --> 00:21:12,183
‫Mal sehen, was als nächstes kommt.

365
00:21:13,210 --> 00:21:15,040
‫Oh, und diesmal haben wir es richtig gemacht.

366
00:21:15,040 --> 00:21:18,280
‫Sie sehen, das ist die Sitzung, die wir gerade erstellt haben.

367
00:21:18,280 --> 00:21:22,050
‫Und es bearbeitet hier noch einige andere Sachen, aber das ist für

368
00:21:22,050 --> 00:21:24,290
‫uns im Moment nicht wirklich wichtig.

369
00:21:24,290 --> 00:21:27,430
‫Wirklich interessant zu sehen ist jedoch, dass

370
00:21:27,430 --> 00:21:29,340
‫wir diese Zahlung

371
00:21:29,340 --> 00:21:32,330
‫oder zumindest diese Zahlungsaufforderung bereits jetzt

372
00:21:32,330 --> 00:21:35,330
‫sehen können, sagen wir in unseren Drive-Dashboards.

373
00:21:35,330 --> 00:21:37,843
‫Wenn wir also dorthin

374
00:21:39,490 --> 00:21:44,490
‫gehen und zu Zahlungen und dann zu allen gehen, werden Sie

375
00:21:44,540 --> 00:21:49,010
‫sehen, dass das letzte hier tatsächlich gerade passiert ist.

376
00:21:49,010 --> 00:21:51,320
‫Wenn wir also darauf klicken, werden Ihnen einige Daten darüber angezeigt.

377
00:21:51,320 --> 00:21:56,320
‫So sieht man zum Beispiel, dass es eigentlich um die

378
00:21:56,630 --> 00:21:59,130
‫Sea Explorer Tour geht.

379
00:21:59,130 --> 00:22:00,960
‫Sie haben auch den Preis, Sie haben auch das Bild.

380
00:22:00,960 --> 00:22:03,983
‫Wahrscheinlich auch einige Daten über den Benutzer.

381
00:22:04,920 --> 00:22:07,800
‫Und eigentlich nein, nicht wirklich.

382
00:22:07,800 --> 00:22:10,530
‫Aber was hier zählt, ist, dass es unvollständig heißt.

383
00:22:10,530 --> 00:22:14,400
‫Und das liegt daran, dass wir nur die Checkout-Sitzung

384
00:22:14,400 --> 00:22:17,160
‫auf dem Server erstellt haben.

385
00:22:17,160 --> 00:22:18,310
‫Und so fehlt

386
00:22:18,310 --> 00:22:20,440
‫uns der zweite Schritt, in dem

387
00:22:20,440 --> 00:22:22,750
‫wir dann die Kreditkarte auf Kundenseite tatsächlich belasten.

388
00:22:22,750 --> 00:22:24,450
‫Da uns das fehlt, machen

389
00:22:24,450 --> 00:22:26,210
‫wir es im nächsten Video tatsächlich richtig.

