Problem damit, den Stripe-Webhook in der Stripe-CLI zum Laufen zu bringen
Posted: 03 Jan 2025, 19:03
Ich verwende Stripe Checkout in einer ASP.NET Web Forms-App, um Leuten die Bezahlung von Abonnements zu ermöglichen, und dieser Teil des Codes funktioniert einwandfrei. Ich habe einen Webhook mit dem folgenden Code erstellt:
Also habe ich in Stripe einen Endpunkt erstellt, um diesen Webhook zu verwenden, und wenn ich die App ausführe, gibt das Dashboard einen Serverstatus von 200 OK zurück, aber keinen Code im Webhook wird ausgelöst.
Dann habe ich Stripe CLI eingerichtet, um den Webhook lokal zu testen. Ich verwende den folgenden Befehl, um CLI zu starten:
CLI gibt mir einen geheimen Schlüssel, den ich in den Webhook kopiert habe. Wenn ich die Web-App starte, läuft alles einwandfrei. Aber im CLI-Fenster erhalte ich Folgendes für jedes Ereignis, das Stripe an mich zurücksendet:
Ich weiß nicht, was die Fehlerquelle ist. Ich habe die Windows-Firewall heruntergefahren und es läuft nichts anderes, was stören könnte. Gibt es da draußen Hilfe?
Code: Select all
using Stripe;
using Stripe.Checkout;
using System.IO;
using System.Web;
using System;
namespace BNet {
public class spdata : IHttpHandler {
public void ProcessRequest ( HttpContext ctx ) {
try {
var epSecret = "whsec_u...";
var json = new StreamReader(ctx.Request.InputStream).ReadToEnd();
FileOps.WriteFile ("~/files/output.txt", "testing", out _, out _ );
var sig = ctx.Request.Headers["Stripe-Signature"];
try {
var se = EventUtility.ConstructEvent(
json,
sig,
epSecret
);
if ( se.Type == "checkout.session.completed" ) {
var session = se.Data.Object as Session;
ProcessSubscription ( session );
}
}
catch ( StripeException e ) {
FileOps.WriteFile ( "~/files/StripeLog.txt", e.Message, out _, out _ );
}
catch ( Exception ex ) {
FileOps.WriteFile ( "~/files/ErrorLog.txt", ex.Message, out _, out _ );
}
ctx.Response.Write ( "ok" );
ctx.Response.Flush ( );
}
catch (Exception exp) {
ctx.Response.Write ( exp.Message );
}
}
void ProcessSubscription (Session session) {
FileOps.WriteFile ( "StripeLog.txt", session.ToString ( ), out _, out _ );
}
public bool IsReusable {
get {
return false;
}
}
}
}
Dann habe ich Stripe CLI eingerichtet, um den Webhook lokal zu testen. Ich verwende den folgenden Befehl, um CLI zu starten:
Code: Select all
stripe listen --forward-to http://localhost:44357/spdata
Code: Select all
2021-06-08 15:38:23 --> checkout.session.completed [evt_1J0CctBQEZK85JIBn76jElzT]
2021-06-08 15:38:23 [ERROR] Failed to POST: Post "http://localhost:44357/spdata": read tcp [::1]:54739->[::1]:44357: wsarecv: An existing connection was forcibly closed by the remote host.