﻿1
00:00:01,070 --> 00:00:01,970
‫-: Gut.

2
00:00:01,970 --> 00:00:05,850
‫Lassen Sie uns nun ein neues Buchungsdokument in unserer Datenbank

3
00:00:05,850 --> 00:00:09,083
‫erstellen, wenn ein Benutzer erfolgreich eine Tour kauft.

4
00:00:10,940 --> 00:00:13,400
‫Wir sind also wieder hier

5
00:00:13,400 --> 00:00:15,130
‫im Buchungscontroller und

6
00:00:15,130 --> 00:00:18,410
‫in der Rohausschreibung, die die Checkout-Sitzungen erstellt, oder?

7
00:00:18,410 --> 00:00:21,990
‫Und denken Sie daran, dass wir hier diese Erfolgs-URL haben

8
00:00:21,990 --> 00:00:25,210
‫und diese URL die Grundlage der Funktionalität ist, die

9
00:00:25,210 --> 00:00:27,670
‫wir in dieser Vorlesung implementieren werden.

10
00:00:27,670 --> 00:00:30,400
‫Wenn ein Check-out also erfolgreich

11
00:00:30,400 --> 00:00:34,440
‫ist, wird der Browser automatisch auf diese URL gehen,

12
00:00:34,440 --> 00:00:39,140
‫die im Moment im Grunde einfach unsere Homepage ist, oder?

13
00:00:39,140 --> 00:00:41,190
‫Es ist auch zu diesem Zeitpunkt,

14
00:00:41,190 --> 00:00:44,360
‫also wenn ein Checkout erfolgreich ist, möchten wir eine

15
00:00:44,360 --> 00:00:46,130
‫neue Buchung erstellen, oder?

16
00:00:46,130 --> 00:00:49,200
‫Im Grunde wollen wir also immer dann eine

17
00:00:49,200 --> 00:00:53,010
‫neue Buchung erstellen, wenn auf diese URL hier zugegriffen wird.

18
00:00:53,010 --> 00:00:56,680
‫Nun könnten wir für diesen Erfolg nun eine neue Route erstellen,

19
00:00:56,680 --> 00:00:59,940
‫aber dann müssten wir eine ganz neue Seite erstellen und

20
00:00:59,940 --> 00:01:02,690
‫das lohnt sich in diesem Fall nicht wirklich.

21
00:01:02,690 --> 00:01:06,090
‫Und das liegt daran, dass das, was wir in diesem

22
00:01:06,090 --> 00:01:08,860
‫Vortrag machen werden, sowieso nur eine

23
00:01:08,860 --> 00:01:12,040
‫Übergangslösung ist, weil es nicht wirklich sicher ist, okay?

24
00:01:12,040 --> 00:01:14,690
‫Denken Sie also daran, wie wir vor

25
00:01:14,690 --> 00:01:17,980
‫einigen Vorträgen gesagt haben, und dieses schöne Diagramm, dass

26
00:01:17,980 --> 00:01:21,500
‫wir später, wenn eine Website tatsächlich auf einem Server bereitgestellt

27
00:01:21,500 --> 00:01:24,830
‫wird, Zugriff auf das Sitzungsobjekt erhalten, sobald der Kauf

28
00:01:24,830 --> 00:01:27,200
‫mit Stripe Webhooks abgeschlossen ist.

29
00:01:27,200 --> 00:01:29,750
‫Und so sind diese Webhooks dann perfekt für uns,

30
00:01:29,750 --> 00:01:31,970
‫um eine neue Buchung zu erstellen.

31
00:01:31,970 --> 00:01:32,803
‫Okay?

32
00:01:32,803 --> 00:01:35,040
‫Da dies jedoch noch nicht möglich

33
00:01:35,040 --> 00:01:36,650
‫ist, verwenden wir vorerst

34
00:01:36,650 --> 00:01:39,810
‫einen Workaround, der darin besteht, die Daten, die wir zum

35
00:01:39,810 --> 00:01:43,810
‫Erstellen einer neuen Buchung benötigen, direkt als Abfragezeichenfolge in diese URL einzufügen.

36
00:01:43,810 --> 00:01:44,670
‫Okay?

37
00:01:44,670 --> 00:01:47,800
‫Und wir müssen eine Abfragezeichenfolge erstellen, da

38
00:01:47,800 --> 00:01:51,620
‫Stripe hier nur eine Get-Anforderung an diese URL sendet

39
00:01:51,620 --> 00:01:55,280
‫und wir daher außer der Abfragezeichenfolge keinen Text oder

40
00:01:55,280 --> 00:01:57,680
‫andere Daten damit senden können.

41
00:01:57,680 --> 00:01:58,513
‫Gut?

42
00:01:58,513 --> 00:02:02,300
‫Also machen wir das und was wir hier brauchen sind

43
00:02:02,300 --> 00:02:05,660
‫im Grunde die drei Pflichtfelder in unserem Buchungsmodell.

44
00:02:05,660 --> 00:02:07,200
‫Also Tour,

45
00:02:07,200 --> 00:02:08,930
‫Benutzer und Preis.

46
00:02:08,930 --> 00:02:11,400
‫Tour ist

47
00:02:11,400 --> 00:02:16,478
‫also gleich req.

48
00:02:16,478 --> 00:02:16,478
‫Parameter.

49
00:02:16,478 --> 00:02:17,311
‫touristisch richtig?

50
00:02:18,410 --> 00:02:19,243
‫Was habe ich also hier gemacht?

51
00:02:20,350 --> 00:02:21,793
‫Das ist also richtig.

52
00:02:23,500 --> 00:02:25,290
‫Als nächstes brauchen wir den Benutzer.

53
00:02:25,290 --> 00:02:27,473
‫Also User, das ist auf

54
00:02:28,760 --> 00:02:29,793
‫Anfrage. Nutzer. Ich würde.

55
00:02:30,700 --> 00:02:32,887
‫Und zum Schluss brauchen wir noch

56
00:02:32,887 --> 00:02:33,807
‫den Preis,

57
00:02:33,807 --> 00:02:35,290
‫der bei Tour steht. Preis.

58
00:02:35,290 --> 00:02:38,170
‫Gut.

59
00:02:38,170 --> 00:02:39,003
‫Nun, wie ich schon

60
00:02:40,230 --> 00:02:41,063
‫sagte, das ist natürlich

61
00:02:42,277 --> 00:02:43,110
‫überhaupt nicht sicher, denn

62
00:02:44,190 --> 00:02:45,630
‫im Moment könnte jeder, der diese URL-Struktur hier

63
00:02:45,630 --> 00:02:47,250
‫kennt, einfach aufrufen, ohne den Checkout-Prozess zu durchlaufen, oder?

64
00:02:47,250 --> 00:02:50,140
‫Und so konnte wirklich jeder

65
00:02:50,140 --> 00:02:54,760
‫einfach eine Tour buchen, ohne bezahlen zu müssen.

66
00:02:54,760 --> 00:02:57,510
‫Sie müssten nur diese URL mit Tour, Benutzer

67
00:02:57,510 --> 00:02:59,250
‫und Preis öffnen und dann

68
00:02:59,250 --> 00:03:01,930
‫würden sie automatisch eine neue Buchung erstellen, ohne

69
00:03:01,930 --> 00:03:03,630
‫zu bezahlen, okay?

70
00:03:03,630 --> 00:03:06,530
‫Also wieder nicht wirklich sicher, aber

71
00:03:06,530 --> 00:03:08,830
‫im Moment funktioniert

72
00:03:08,830 --> 00:03:11,900
‫es gut, weil nicht viele Leute wissen,

73
00:03:11,900 --> 00:03:14,320
‫dass dies unsere Erfolgs-URL ist.

74
00:03:14,320 --> 00:03:16,080
‫Okay?

75
00:03:16,080 --> 00:03:19,160
‫Denn eigentlich werden wir diese Tatsache

76
00:03:19,160 --> 00:03:22,240
‫gleich ein bisschen verbergen, okay?

77
00:03:22,240 --> 00:03:24,920
‫Lassen Sie uns nun die Funktion erstellen, die die neue Buchung tatsächlich in

78
00:03:24,920 --> 00:03:25,753
‫der Datenbank erstellt.

79
00:03:25,753 --> 00:03:28,790
‫Das wird also zum Exportieren von Dot

80
00:03:28,790 --> 00:03:30,910
‫Create Booking Checkout und

81
00:03:30,910 --> 00:03:35,120
‫es wird Create Booking Checkout genannt, da wir später

82
00:03:35,120 --> 00:03:37,083
‫auch eine Buchung erstellen

83
00:03:38,320 --> 00:03:40,610
‫haben, auf die dann über

84
00:03:40,610 --> 00:03:42,150
‫unsere Buchungs-API zugegriffen

85
00:03:42,150 --> 00:03:42,983
‫werden

86
00:03:44,000 --> 00:03:44,833
‫kann.

87
00:03:46,100 --> 00:03:47,150
‫Gut.

88
00:03:47,150 --> 00:03:49,600
‫Trotzdem.

89
00:03:49,600 --> 00:03:52,980
‫Hier wie immer.

90
00:03:52,980 --> 00:03:56,313
‫Beginnen wir damit, unsere Daten aus der Abfragezeichenfolge abzurufen.

91
00:03:57,760 --> 00:03:59,360
‫Und dafür werde ich die Strukturierung verwenden.

92
00:03:59,360 --> 00:04:00,193
‫Tour,

93
00:04:02,160 --> 00:04:03,523
‫Benutzer und

94
00:04:06,460 --> 00:04:09,990
‫Preis sind daher auf Anfrage erhältlich. Anfrage.

95
00:04:09,990 --> 00:04:13,370
‫Denken Sie also daran, dass dies die Abfragezeichenfolge ist.

96
00:04:13,370 --> 00:04:14,763
‫Dann wollen wir eigentlich nur dann eine

97
00:04:15,920 --> 00:04:17,520
‫neue Buchung anlegen, wenn all diese hier angegeben sind.

98
00:04:17,520 --> 00:04:21,113
‫Im Grunde sagen wir also, dass wir uns umdrehen und zur nächsten Middleware

99
00:04:21,113 --> 00:04:22,520
‫übergehen, wenn sie nicht existieren.

100
00:04:22,520 --> 00:04:25,540
‫Das ist also unser ganz normales Verfahren, oder?

101
00:04:25,540 --> 00:04:28,830
‫Also sagen wir das,

102
00:04:28,830 --> 00:04:31,720
‫wenn es

103
00:04:31,720 --> 00:04:35,060
‫keine Tour und keinen Benutzer

104
00:04:35,060 --> 00:04:37,980
‫und keinen Preis gibt.

105
00:04:37,980 --> 00:04:41,003
‫Im Grunde verlangen wir also, dass alle auf ihnen existieren.

106
00:04:42,190 --> 00:04:45,890
‫In diesem Fall gehen wir also zur

107
00:04:45,890 --> 00:04:47,480
‫nächsten Middleware.

108
00:04:47,480 --> 00:04:48,680
‫Was genau ist nun eigentlich die nächste Middleware?

109
00:04:48,680 --> 00:04:50,050
‫Denken Sie daran,

110
00:04:50,050 --> 00:04:53,450
‫dass wir eine neue Buchung für diese Home-URL erstellen möchten.

111
00:04:53,450 --> 00:04:55,253
‫Also dieser hier.

112
00:04:56,580 --> 00:04:58,790
‫Denn auch das ist die URL,

113
00:04:58,790 --> 00:05:02,420
‫die aufgerufen wird, wenn ein Kauf bei Stripe erfolgreich ist.

114
00:05:02,420 --> 00:05:06,300
‫Was wir also tun müssen, ist diese Middleware-Funktion, die wir

115
00:05:06,300 --> 00:05:08,340
‫gerade erstellen, zum Middleware-Stack dieses

116
00:05:08,340 --> 00:05:09,660
‫Route-Handlers hinzuzufügen.

117
00:05:09,660 --> 00:05:12,380
‫Was ist das denn für ein Routenhandler?

118
00:05:12,380 --> 00:05:15,610
‫Nun, es ist in Sichtrouten und

119
00:05:15,610 --> 00:05:18,810
‫es ist diese, oder?

120
00:05:18,810 --> 00:05:21,990
‫Das klingt also wahrscheinlich etwas verwirrend.

121
00:05:21,990 --> 00:05:23,393
‫Aber auch hier wird

122
00:05:24,230 --> 00:05:26,620
‫der Weg eingeschlagen, wenn eine Kreditkarte erfolgreich belastet wird.

123
00:05:26,620 --> 00:05:30,943
‫Dies ist also auch der Zeitpunkt, an dem wir eine neue Buchung

124
00:05:32,170 --> 00:05:33,270
‫erstellen möchten.

125
00:05:33,270 --> 00:05:36,040
‫Und hier müssen wir diese Middleware-Funktion

126
00:05:36,040 --> 00:05:39,610
‫hinzufügen, also lassen Sie uns das tatsächlich tun und

127
00:05:39,610 --> 00:05:42,080
‫unseren Controller benötigen, und jetzt

128
00:05:42,080 --> 00:05:44,730
‫werden wir dies hier einfach duplizieren.

129
00:05:44,730 --> 00:05:46,260
‫Also Buchungscontroller und jetzt

130
00:05:46,260 --> 00:05:49,940
‫werde ich hier gleich zu Beginn editieren, da es eigentlich egal ist,

131
00:05:51,340 --> 00:05:53,350
‫ob wir dafür eingeloggt sind oder nicht.

132
00:05:53,350 --> 00:05:57,963
‫Also Buchungscontroller. Holen Sie sich, oder

133
00:06:02,440 --> 00:06:06,850
‫erstellen Sie die

134
00:06:06,850 --> 00:06:09,540
‫Buchungskasse.

135
00:06:09,540 --> 00:06:11,743
‫Speichern Sie es

136
00:06:13,130 --> 00:06:16,780
‫und okay.

137
00:06:16,780 --> 00:06:18,300
‫Und auch hier ist dies nur vorübergehend,

138
00:06:18,300 --> 00:06:19,770
‫bis wir unsere Websites tatsächlich auf einem

139
00:06:19,770 --> 00:06:20,603
‫Server bereitgestellt haben,

140
00:06:22,878 --> 00:06:25,060
‫auf dem wir dann eine bessere Lösung dafür erstellen können.

141
00:06:25,060 --> 00:06:26,230
‫Okay?

142
00:06:26,230 --> 00:06:29,150
‫Hier im Buchungscontroller ist es nun

143
00:06:29,150 --> 00:06:32,610
‫an der Zeit, diese neue Buchung tatsächlich zu erstellen.

144
00:06:32,610 --> 00:06:35,560
‫Und so müssen wir dieses Modell jetzt eigentlich importieren.

145
00:06:35,560 --> 00:06:36,950
‫Also machen wir das hier.

146
00:06:36,950 --> 00:06:41,230
‫Buchung

147
00:06:41,230 --> 00:06:44,930
‫und Buchungsmodell auch hier.

148
00:06:44,930 --> 00:06:48,903
‫Und aus irgendeinem Grund habe ich hier diesen seltsamen Weg.

149
00:06:50,810 --> 00:06:52,053
‫Diese machen also überhaupt keinen Sinn.

150
00:06:53,520 --> 00:06:54,780
‫Ich bin mir nicht sicher, warum ich sie damals so geschrieben habe.

151
00:06:54,780 --> 00:06:55,613
‫Also, was wir dort haben, ist genau das gleiche.

152
00:06:57,750 --> 00:06:59,363
‫Aber das ist natürlich besser lesbar.

153
00:07:01,280 --> 00:07:04,830
‫Trotzdem.

154
00:07:04,830 --> 00:07:08,170
‫Lassen Sie uns nun diese Buchung erstellen.

155
00:07:08,170 --> 00:07:11,910
‫Dafür müssen wir also auf

156
00:07:11,910 --> 00:07:15,160
‫die Buchung warten. mit einem

157
00:07:15,160 --> 00:07:21,810
‫Tour-,

158
00:07:21,810 --> 00:07:27,353
‫Benutzer- und Preisobjekt erstellen.

159
00:07:28,497 --> 00:07:29,330
‫Und das ist es.

160
00:07:30,900 --> 00:07:32,040
‫Jetzt müssen wir auch diesen

161
00:07:32,040 --> 00:07:33,390
‫hier als async und als immer

162
00:07:33,390 --> 00:07:34,223
‫catchasync markieren.

163
00:07:35,120 --> 00:07:35,953
‫Okay?

164
00:07:36,810 --> 00:07:37,843
‫Und wir speichern das nicht

165
00:07:38,830 --> 00:07:40,310
‫in irgendeiner Variablen, weil wir es nicht wirklich brauchen.

166
00:07:40,310 --> 00:07:42,660
‫Wir werden dies nicht als API-Antwort zurücksenden.

167
00:07:44,220 --> 00:07:45,660
‫An dieser Stelle wollen wir hier nur das

168
00:07:46,582 --> 00:07:47,499
‫neue Dokument erstellen, okay?

169
00:07:53,252 --> 00:07:54,085
‫Als nächstes

170
00:07:54,085 --> 00:07:56,450
‫könnten wir dann so weiter sagen.

171
00:07:56,450 --> 00:07:58,250
‫Und damit würde dann die

172
00:07:58,250 --> 00:08:01,470
‫nächste Middleware gehen aber das ist nicht wirklich optimal.

173
00:08:01,470 --> 00:08:04,970
‫Denken Sie also wieder daran, dass die nächste

174
00:08:04,970 --> 00:08:07,363
‫Middleware im Stack natürlich diese ist

175
00:08:08,480 --> 00:08:10,680
‫und die Übersicht erhalten.

176
00:08:12,280 --> 00:08:14,460
‫Also im Grunde die

177
00:08:14,460 --> 00:08:17,220
‫Funktion, die unsere Seite rendern wird.

178
00:08:17,220 --> 00:08:18,990
‫Aber denken Sie daran, dass diese URL all das ist.

179
00:08:18,990 --> 00:08:22,010
‫Das alles mit all diesen Daten hier.

180
00:08:22,010 --> 00:08:24,450
‫Das ist also wieder überhaupt nicht sicher.

181
00:08:24,450 --> 00:08:26,640
‫Also machen wir es

182
00:08:26,640 --> 00:08:29,041
‫wenigstens ein bisschen sicherer, in Ordnung?

183
00:08:29,041 --> 00:08:30,800
‫Was wir

184
00:08:30,800 --> 00:08:35,023
‫hier also tun können, ist, die Anwendung jetzt im

185
00:08:35,980 --> 00:08:38,920
‫Grunde nur auf diese URL umzuleiten.

186
00:08:38,920 --> 00:08:41,610
‫Im Grunde entfernen Sie

187
00:08:41,610 --> 00:08:45,200
‫also die Abfragezeichenfolge aus der ursprünglichen URL.

188
00:08:45,200 --> 00:08:46,200
‫Und so werden wir

189
00:08:46,200 --> 00:08:48,660
‫jetzt tatsächlich etwas verwenden, das wir noch nie zuvor verwendet haben.

190
00:08:48,660 --> 00:08:52,090
‫Das ist also großartig, oder?

191
00:08:52,090 --> 00:08:52,923
‫Also werden wir die Weiterleitung verwenden.

192
00:08:53,837 --> 00:08:55,980
‫Gut?

193
00:08:55,980 --> 00:08:57,277
‫Jetzt wollen wir

194
00:08:59,007 --> 00:09:01,710
‫also die gesamte URL, aber ohne die Abfragezeichenfolge.

195
00:09:01,710 --> 00:09:03,300
‫Was wir also tun

196
00:09:03,300 --> 00:09:04,763
‫könnten, ist, einfach

197
00:09:05,860 --> 00:09:08,193
‫zu betrügen und dies hier zu kopieren.

198
00:09:10,810 --> 00:09:11,970
‫Aber machen wir es etwas eleganter.

199
00:09:11,970 --> 00:09:15,230
‫Was wir also tun, ist eine Anfrage. theoriginalurl, die wir bereits zuvor

200
00:09:15,230 --> 00:09:16,803
‫verwendet haben.

201
00:09:18,000 --> 00:09:20,620
‫Und das ist im Grunde die

202
00:09:20,620 --> 00:09:23,450
‫gesamte URL, von der die Anfrage kam.

203
00:09:23,450 --> 00:09:24,660
‫Und jetzt

204
00:09:24,660 --> 00:09:27,110
‫müssen wir es durch das Fragezeichen aufteilen.

205
00:09:27,110 --> 00:09:31,096
‫Richtig?

206
00:09:31,096 --> 00:09:33,090
‫Denn das ist die Trennlinie zwischen dem Teil, den

207
00:09:33,090 --> 00:09:34,573
‫wir tatsächlich wollen, und der Abfragezeichenfolge.

208
00:09:35,870 --> 00:09:38,090
‫Wenn wir dies also durch das Fragezeichen aufteilen,

209
00:09:38,090 --> 00:09:40,190
‫haben wir ein Array, in dem das

210
00:09:40,190 --> 00:09:43,090
‫erste Element dies ist und das zweite Element der Rest ist.

211
00:09:43,090 --> 00:09:44,283
‫Also die Abfragezeichenfolge selbst.

212
00:09:48,010 --> 00:09:48,843
‫Und so

213
00:09:48,843 --> 00:09:52,500
‫nehmen wir hier das erste Element und das ist dann unsere Homepage.

214
00:09:52,500 --> 00:09:55,053
‫Also unsere Routen-URL.

215
00:09:56,700 --> 00:10:00,040
‫Und was die Weiterleitung hier macht, ist im Grunde eine neue Anfrage zu

216
00:10:00,040 --> 00:10:02,917
‫erstellen, aber zu dieser neuen URL, die wir dort eingegeben haben.

217
00:10:02,917 --> 00:10:06,420
‫Gut?

218
00:10:06,420 --> 00:10:08,430
‫Dadurch wird nun eine

219
00:10:08,430 --> 00:10:11,210
‫weitere Anfrage an unsere Routen-URL erstellt.

220
00:10:11,210 --> 00:10:13,480
‫Also werden wir diesen Weg wieder einschlagen.

221
00:10:13,480 --> 00:10:14,463
‫Und so werden wir hier noch einmal auf diese Middleware treffen.

222
00:10:15,560 --> 00:10:19,520
‫Also die, die wir gerade erstellen.

223
00:10:19,520 --> 00:10:24,060
‫Wir werden also zum zweiten Mal darauf eingehen, aber jetzt sind Tour, Benutzer und Preis

224
00:10:24,060 --> 00:10:25,170
‫nicht mehr definiert.

225
00:10:25,170 --> 00:10:27,680
‫Und dann gehen wir zur nächsten Middleware, das

226
00:10:27,680 --> 00:10:28,653
‫ist schließlich die

227
00:10:29,890 --> 00:10:32,900
‫Get Overview Handler-Funktion, die dann nur die Homepage rendern, okay?

228
00:10:32,900 --> 00:10:37,230
‫Machte Sinn?

229
00:10:37,230 --> 00:10:39,790
‫Das ist also eine Art Rundschreiben.

230
00:10:39,790 --> 00:10:42,850
‫Also im Grunde werden

231
00:10:42,850 --> 00:10:47,240
‫wir am Anfang diesen Weg hier einschlagen.

232
00:10:47,240 --> 00:10:49,860
‫Dann wird hier eine

233
00:10:49,860 --> 00:10:53,540
‫neue Buchung angelegt und wir leiten die Anwendung

234
00:10:53,540 --> 00:10:57,870
‫wieder auf diese Route um, diesmal ohne den Abfragestring.

235
00:10:57,870 --> 00:10:59,080
‫Und so

236
00:10:59,080 --> 00:11:01,700
‫gingen wir ohne den Abfragestring und diese

237
00:11:01,700 --> 00:11:03,870
‫Middleware direkt zum nächsten über.

238
00:11:03,870 --> 00:11:05,100
‫Und so kommen wir

239
00:11:05,100 --> 00:11:07,430
‫erst dann an, eingeloggt zu sein und Übersicht zu bekommen.

240
00:11:07,430 --> 00:11:10,860
‫Gut?

241
00:11:10,860 --> 00:11:12,710
‫Und das war's dann eigentlich, in Ordnung?

242
00:11:12,710 --> 00:11:14,540
‫Nun, das ist hier genau richtig,

243
00:11:14,540 --> 00:11:16,370
‫dass dies nur vorübergehend ist,

244
00:11:16,370 --> 00:11:18,120
‫weil es unsicher ist.

245
00:11:18,120 --> 00:11:21,350
‫Jeder kann buchen, ohne zu

246
00:11:21,350 --> 00:11:22,723
‫bezahlen.

247
00:11:24,020 --> 00:11:25,450
‫Das wäre also wiederum schrecklich für das Geschäft.

248
00:11:25,450 --> 00:11:29,390
‫Okay, jetzt ist es Zeit, das auszuprobieren.

249
00:11:29,390 --> 00:11:32,910
‫Und eigentlich möchte ich es mit dem anderen Benutzer machen, den wir erstellt

250
00:11:38,730 --> 00:11:39,563
‫haben, nämlich jonas@mailsac.

251
00:11:41,520 --> 00:11:42,523
‫Und das liegt

252
00:11:43,700 --> 00:11:47,410
‫daran, dass ich sehen möchte, ob wir diese E-Mail-Bestätigung tatsächlich von Stripe erhalten.

253
00:11:49,010 --> 00:11:49,963
‫Loggen wir

254
00:11:50,930 --> 00:11:54,133
‫uns also mit diesem Benutzer auf unserer Website ein.

255
00:11:55,250 --> 00:11:57,733
‫Loggen

256
00:11:59,210 --> 00:12:02,990
‫Sie sich also aus.

257
00:12:02,990 --> 00:12:06,620
‫Nun, das funktioniert nicht.

258
00:12:06,620 --> 00:12:09,510
‫Das ist seltsam.

259
00:12:09,510 --> 00:12:11,913
‫Lass uns neu laden.

260
00:12:13,510 --> 00:12:17,280
‫Und das sollte funktionieren, also schauen wir mal, ob wir einen Fehler in

261
00:12:17,280 --> 00:12:18,466
‫unserem Javascript haben.

262
00:12:18,466 --> 00:12:20,170
‫Denn das ist tatsächlich kundenorientiert und wir bekommen

263
00:12:20,170 --> 00:12:21,063
‫Stripe nicht definiert.

264
00:12:23,080 --> 00:12:24,323
‫Mal sehen, ob wir hier auf dieser Seite den gleichen

265
00:12:27,050 --> 00:12:28,090
‫Fehler haben, was wir nicht sollten, oder?

266
00:12:28,090 --> 00:12:29,023
‫Und eigentlich

267
00:12:30,430 --> 00:12:33,520
‫ist es nicht da, sondern auf allen Touren wieder da.

268
00:12:33,520 --> 00:12:36,230
‫Ja, es ist da.

269
00:12:36,230 --> 00:12:38,160
‫Die Lösung dafür besteht also darin, es

270
00:12:39,210 --> 00:12:41,763
‫von der Tour im Grunde auf alle Seiten zu verschieben.

271
00:12:42,730 --> 00:12:46,180
‫Gut?

272
00:12:46,180 --> 00:12:48,170
‫Aus irgendeinem Grund macht es der

273
00:12:48,170 --> 00:12:51,010
‫Paketbündeler so, dass er für alle hier im Hauptumfang

274
00:12:51,010 --> 00:12:52,393
‫enthalten sein muss.

275
00:12:53,360 --> 00:12:54,660
‫Also für alle Seiten, okay?

276
00:12:54,660 --> 00:12:58,480
‫Also lasst uns das hier vor unserem Bundle

277
00:12:59,400 --> 00:13:01,193
‫ganz unten setzen.

278
00:13:02,910 --> 00:13:04,010
‫Gut?

279
00:13:04,010 --> 00:13:07,970
‫Versuchen Sie es noch einmal und jetzt können wir loslegen.

280
00:13:07,970 --> 00:13:08,920
‫Also

281
00:13:10,260 --> 00:13:12,703
‫abmelden und das hat geklappt.

282
00:13:14,850 --> 00:13:16,933
‫Melden Sie sich jetzt an.

283
00:13:19,090 --> 00:13:21,970
‫Jetzt ist unser Exemplar natürlich weg.

284
00:13:26,010 --> 00:13:27,673
‫Eins zwei drei vier.

285
00:13:29,530 --> 00:13:30,690
‫Nein, das ist nicht richtig.

286
00:13:30,690 --> 00:13:34,143
‫Testen Sie eins zwei drei vier.

287
00:13:35,170 --> 00:13:37,510
‫Also habe ich das Passwort wohl irgendwann geändert, also versuchen wir es

288
00:13:37,510 --> 00:13:38,343
‫mit einem neuen

289
00:13:39,200 --> 00:13:40,083
‫Passwort, das auch nicht funktioniert.

290
00:13:42,183 --> 00:13:44,613
‫Lassen Sie uns versuchen, eins zwei drei vier zu bestehen

291
00:13:53,790 --> 00:13:54,963
‫und das hat funktioniert.

292
00:13:56,400 --> 00:13:58,180
‫Also nicht eins zwei drei vier

293
00:13:58,180 --> 00:14:00,043
‫testen, sondern eins zwei drei vier bestehen.

294
00:14:01,580 --> 00:14:04,470
‫Zumindest hier in meinem Fall.

295
00:14:04,470 --> 00:14:07,363
‫Versuchen wir also, den Sportliebhaber

296
00:14:08,920 --> 00:14:10,460
‫zu buchen.

297
00:14:10,460 --> 00:14:13,180
‫Gut.

298
00:14:14,170 --> 00:14:15,223
‫Hier unten.

299
00:14:16,100 --> 00:14:18,260
‫Tour buchen und das funktioniert

300
00:14:18,260 --> 00:14:20,603
‫immer noch und das ist

301
00:14:21,460 --> 00:14:22,763
‫das teuere.

302
00:14:23,810 --> 00:14:25,940
‫(lacht) Also vier zwei vier zwei und

303
00:14:26,960 --> 00:14:28,493
‫dann vier zwei bis

304
00:14:30,520 --> 00:14:31,353
‫zum Ende.

305
00:14:33,150 --> 00:14:34,340
‫Dann ist hier ein Monat und hier ist eine Zahl.

306
00:14:34,340 --> 00:14:35,310
‫Sagen wir meinen ganzen

307
00:14:37,010 --> 00:14:38,310
‫Namen hier und jetzt lass uns bezahlen.

308
00:14:39,260 --> 00:14:41,091
‫Und ich schaue mir die URL-Leiste an.

309
00:14:41,091 --> 00:14:42,100
‫Und tatsächlich erhalten

310
00:14:42,100 --> 00:14:45,020
‫wir unsere Homepage, also unsere Routen-URL, ohne den zuvor angegebenen Abfragestring.

311
00:14:45,020 --> 00:14:46,203
‫Das bedeutet also, dass etwas funktioniert.

312
00:14:47,060 --> 00:14:52,020
‫Werfen wir also einen Blick auf den Kompass und klicken Sie hier, um

313
00:14:52,020 --> 00:14:55,590
‫neu zu laden, und wir erhalten unsere Buchungssammlung.

314
00:14:55,590 --> 00:14:57,523
‫Und das ist ein gutes Zeichen.

315
00:14:59,970 --> 00:15:02,090
‫Und tatsächlich geht es los.

316
00:15:02,090 --> 00:15:06,440
‫Unser allererstes Dokument wird erstellt.

317
00:15:06,440 --> 00:15:10,280
‫Denken Sie also daran, dass das dieser Preis war.

318
00:15:10,280 --> 00:15:13,550
‫Werfen wir auch einen Blick auf

319
00:15:13,550 --> 00:15:18,400
‫die Benutzer-ID, die auf acht E drei B endet.

320
00:15:20,520 --> 00:15:23,180
‫Also acht E drei B, das ist richtig.

321
00:15:23,180 --> 00:15:24,540
‫Und ich gehe davon aus, dass die Tour auch richtig sein wird.

322
00:15:24,540 --> 00:15:26,742
‫So perfekt.

323
00:15:26,742 --> 00:15:30,360
‫Das hat auch funktioniert und so haben wir jetzt

324
00:15:30,360 --> 00:15:32,673
‫wirklich eine Möglichkeit, Buchungen zu

325
00:15:33,740 --> 00:15:36,350
‫erstellen, wenn eine Buchung mit Stripe stattfindet.

326
00:15:38,100 --> 00:15:41,653
‫Schauen wir uns auch hier noch einmal schnell unsere Dashboards an.

327
00:15:43,280 --> 00:15:46,640
‫Das macht richtig Spaß.

328
00:15:46,640 --> 00:15:50,100
‫Und ich glaube, ich muss hier einfach neu laden.

329
00:15:50,100 --> 00:15:51,220
‫Also mal sehen.

330
00:15:51,220 --> 00:15:52,540
‫Hier ist Jonas bei wie auch immer wir das heißen.

331
00:15:52,540 --> 00:15:56,200
‫Wir haben

332
00:15:56,200 --> 00:15:58,773
‫den

333
00:15:59,772 --> 00:16:04,040
‫Sportliebhaber und perfekt.

334
00:16:04,040 --> 00:16:05,770
‫Das funktioniert jetzt.

335
00:16:05,770 --> 00:16:07,720
‫Und die letzte Aufgabe.

336
00:16:13,662 --> 00:16:14,745
‫Schauen wir uns nun mailsac an.

337
00:16:15,770 --> 00:16:21,580
‫Postsack.

338
00:16:22,460 --> 00:16:23,860
‫com und sehen Sie, ob ich

339
00:16:23,860 --> 00:16:25,100
‫dort meine E-Mail habe.

340
00:16:25,100 --> 00:16:26,657
‫Und nun, eigentlich habe ich das nicht getan,

341
00:16:26,657 --> 00:16:27,900
‫aber das ist keine große Sache.

342
00:16:27,900 --> 00:16:30,410
‫Ich bin mir nicht sicher, vielleicht funktioniert es einfach nicht mit Testdaten.

343
00:16:31,390 --> 00:16:32,223
‫Das ist alles, was ich

344
00:16:32,223 --> 00:16:33,070
‫Ihnen über die Stripe-Integration zu zeigen habe.

345
00:16:34,316 --> 00:16:35,149
‫Auch

346
00:16:36,490 --> 00:16:39,060
‫hier werden wir nach der Bereitstellung einer Website

347
00:16:39,060 --> 00:16:39,923
‫tatsächlich Stripe Webhooks

348
00:16:42,190 --> 00:16:45,050
‫verwenden, um Buchungen sicherer und viel besser zu erstellen.

349
00:16:45,050 --> 00:16:46,840
‫Gut?

350
00:16:46,840 --> 00:16:51,200
‫Nehmen wir uns also noch einmal eine Minute Zeit, um zusammenzufassen, was wir hier gemacht haben.

351
00:16:51,200 --> 00:16:53,160
‫Im Grunde haben wir

352
00:16:53,160 --> 00:16:55,670
‫also alle Variablen, die wir zum Erstellen

353
00:16:55,670 --> 00:16:58,230
‫einer neuen Buchung benötigen, zur Erfolgs-URL hinzugefügt.

354
00:16:58,230 --> 00:17:00,690
‫Dann haben wir hier dem Stack

355
00:17:00,690 --> 00:17:03,320
‫genau dieser Route eine neue Middleware-Funktion hinzugefügt.

356
00:17:03,320 --> 00:17:05,050
‫Also dieser hier.

357
00:17:05,050 --> 00:17:06,320
‫Auf diese Weise

358
00:17:06,320 --> 00:17:11,320
‫versuchen wir immer, wenn diese URL hier erreicht wird, eine neue Buchung zu erstellen.

359
00:17:12,000 --> 00:17:14,010
‫Gut?

360
00:17:14,970 --> 00:17:18,070
‫Aber diese neue Buchung wird natürlich erst angelegt, wenn Tour, Benutzer und Preis

361
00:17:18,070 --> 00:17:19,327
‫in der Abfrage angegeben sind.

362
00:17:20,610 --> 00:17:24,320
‫Wenn sie also in dieser Middleware-Funktion gut in der Abfrage

363
00:17:24,320 --> 00:17:26,270
‫angegeben sind, erstellen wir hier

364
00:17:26,270 --> 00:17:27,790
‫eine neue Buchung.

365
00:17:27,790 --> 00:17:31,200
‫Danach entfernen wir die Abfragezeichenfolge aus der URL, um den

366
00:17:31,200 --> 00:17:34,387
‫gesamten Prozess für den Benutzer etwas weniger transparent

367
00:17:34,387 --> 00:17:35,220
‫zu machen.

368
00:17:35,220 --> 00:17:38,380
‫Grundsätzlich, damit die gesamte Abfragezeichenfolge

369
00:17:38,380 --> 00:17:43,290
‫nicht in der URL-Leiste unseres Browsers angezeigt wird.

370
00:17:43,290 --> 00:17:45,180
‫Und dann hier unten

371
00:17:45,180 --> 00:17:48,610
‫leiten wir unsere Bewerbung an diese neue Routen-URL weiter, okay?

372
00:17:48,610 --> 00:17:50,900
‫Auf diese Weise wird also diese Middleware

373
00:17:50,900 --> 00:17:53,870
‫hier übersprungen und dann wird unsere normale Homepage einfach gerendert.

374
00:17:53,870 --> 00:17:56,680
‫Gut?

375
00:17:56,680 --> 00:17:59,240
‫Lassen Sie uns diesen App-Fehler hier einfach loswerden

376
00:17:59,240 --> 00:18:02,880
‫und die Fabrik, die wir in der nächsten Vorlesung tatsächlich brauchen werden.

377
00:18:02,880 --> 00:18:05,400
‫In diesem nächsten Vortrag werden wir uns

378
00:18:05,400 --> 00:18:08,690
‫also tatsächlich um die Umsetzung eines letzten Teils unserer Website kümmern,

379
00:18:08,690 --> 00:18:11,940
‫der im Grunde diese Seite hier für meine Buchungen ist.

380
00:18:11,940 --> 00:18:15,650
‫Und diese Seite zeigt im Grunde eine Tourkarte für

381
00:18:15,650 --> 00:18:19,233
‫jede der von uns gebuchten Touren an.

382
00:18:20,530 --> 00:18:21,363
‫Sieht dieser

383
00:18:22,320 --> 00:18:25,630
‫Homepage also ziemlich ähnlich, aber nur mit den

384
00:18:26,510 --> 00:18:30,340
‫Touren, die der aktuell eingeloggte Benutzer gebucht hat, in Ordnung?

385
00:18:30,340 --> 00:18:33,660
‫Das ist also ein nettes Feature für eine Website, oder?

386
00:18:33,660 --> 00:18:36,950
‫Und darum kümmern wir uns im nächsten.

