Ich versuche, einen Webhook für Mailchimp Veranstaltungen mit API-Version drei zu schreiben, und ich habe ein bisschen wegen ihrer fehlenden Bibliothek, Dokumentation und grundlegende Beispiele zu kämpfen, sondern auch mein Mangel an Erfahrung.Holen Sie sich die Daten von MailChimp API V3 Webhook
Ich weiß, wir sollten den Webhook durch ein Geheimnis in der URL zu sichern, das ist in Ordnung. Übrigens erlaubt MailChimp keine Konfiguration der grundlegenden Zugangsauthentifizierung in ihrem Portal.
Sie sagen: "Während wir HTTP POST für tatsächliche Daten senden, sendet unser Webhook Validator nur HTTP GET-Anfragen. Sie müssen beide zulassen, damit Ihr Webhook ordnungsgemäß funktioniert." Ok, ich denke, ich kann Request.HttpMethod verwenden, um einen Erfolgsstatuscode zurückzugeben, wenn es ein GET ist, und einige Daten zu verarbeiten, wenn es ein POST ist.
Nicht sicher, wie man Sachen aus der Anfrage obwohl, und im Idealfall möchte nicht, Haufen von Klassen und Eigenschaften zu schreiben, um alle Event-Typen zu decken, C# statisch getippt, obwohl ich denke, das dynamische Schlüsselwort ist auch ein Möglichkeit.
Muss ich JESON deserialisieren? Ich habe zuvor nur einen Webhook für eine andere API mit Hilfe einer Bibliothek geschrieben. Sie könnten ein API-Ereignis mit einer Zeichenfolge, einem Stream oder einem Textreader erstellen, die aus der Anfrage stammen. Die Bibliothek hat alles sehr einfach gemacht.
als Referenz, gibt es auch diese Frage, die zeigt, wie einige Daten bekommen PHP: How to pass email address to webhook from mailchimp
Die Daten, die geschrieben wie folgt aussieht wird (angeblich, es scheint, keine Dokumentation für V3 zu sein):
"type": "unsubscribe",
"fired_at": "2009-03-26 21:40:57",
"data[action]": "unsub",
"data[reason]": "manual",
"data[id]": "8a25ff1d98",
"data[list_id]": "a6b5da1054",
"data[email]": "[email protected]",
"data[email_type]": "html",
"data[merges][EMAIL]": "[email protected]",
"data[merges][FNAME]": "MailChimp",
"data[merges][LNAME]": "API",
"data[merges][INTERESTS]": "Group1,Group2",
"data[ip_opt]": "10.20.10.30",
"data[campaign_id]": "cb398d21d2",
"data[reason]": "hard"
Ich brauche nur im Grunde diese Daten in Variablen zu bekommen, damit ich es mit meiner Datenbank synchronisieren kann.
Hier ist mein (Skelett) Controller so weit:
[Route("mailchimp/newsletter-webhook/super-secret-key-goes-here")]
public HttpStatusCodeResult ChargeBeeWebhook()
{
return new HttpStatusCodeResult(200);
}
könnte Dieser Beitrag helfen http://stackoverflow.com/questions/15020807/using-mailchimp-webhooks-feature – RedJandal
MailChimp sendet Webhook-Daten mit [Formularcodierung] (https://en.wikipedia.org/wiki/Percent-encoding#The_application.2Fx-www-form-urlencoded_type), nicht JSON. Sie möchten diese POSTs genauso behandeln, wie Sie einen POST von einem Webformular aus behandeln. – TooMuchPete
Ich habe kürzlich festgestellt, dass Mailchimp aus meinen Logfiles nichts mit Webhooks zurückgeschickt hat. Ich schätze, es passierte nachdem die V2 veraltet war. –