Shopify から Webhook リクエストを受信するエンドポイントをセットアップしました。
Shopify からのリクエストには、共有秘密鍵とリクエストの本文から作成された HMAC ヘッダーが含まれます。
サーバーで HMAC を計算し、それをリクエスト ヘッダーの値と照合して、リクエストが本物であることを確認する必要があります。
一致する HMAC 値を作成するための適切なメカニズムを .NET で作成できないようです。
この時点での私のアルゴリズムは次のとおりです。
public static string CreateHash(string data)
{
string sharedSecretKey = "MY_KEY";
byte[] keyBytes = Encoding.UTF8.GetBytes(sharedSecretKey);
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
//use the SHA256Managed Class to compute the hash
System.Security.Cryptography.HMACSHA256 hmac = new HMACSHA256(keyBytes);
byte[] hmacBytes = hmac.ComputeHash(dataBytes);
//retun as base64 string. Compared with the signature passed in the header of the post request from Shopify. If they match, the call is verified.
return System.Convert.ToBase64String(hmacBytes);
}
Webhook を検証するための Shopify ドキュメントはこちらにありますが、含まれているのは PHP と Ruby のサンプルのみです。
誰かが私が間違っているかもしれないことを見ることができますか? JSON リクエスト本文全体を文字列としてこのメソッドに渡す必要がありますか?