WeChat token doğrulaması
Tekrar gel
1. WeChat halka açık platformunun erişim yöntemi, 4 parametreden (imza, zaman damgası, nonce, echostr) ve 1 token (her iki tarafa karşılık gelir) ilerliyor
2. Token, zaman damgası ve nonce sözlüklerini sıraladıktan sonra, onları "SHA1" dizesine göre şifreleyin. Bir tmpStr dizesi (küçük harfa dönüştürülmüş) verir.
3. Sonra tmpStr'in imzaya eşit olup olmadığını karşılaştırın; eşitse, bu talebin WeChat'ten geldiği anlamına gelir.
4. İsteğin WeChat'ten geldiğinden emin olursan, büyük bir adım atmış olursun. Geri kalan ise, echostr parametresinin WeChat kamu platformuna iletilmesi işi.
İmza doğrulamam başarılı oldu, ancak WeChat hâlâ token iade edemiyor çünkü xml formatında bir diziyi döndürdüm, aşağıdaki gibi:
Çözüm:
Burada vurgulanmalıdır ki, PHP'nin echo $echoStr, WebFrom'un Response.Write(echoStr) gibi özelliklerine atıfta bulunuyor. Tekrar tekrar hata ayıklama yaptıktan sonra, WeChat'in kabul yönteminin sadece "application/x-www-form-urlencoded" olarak kabul edileceği belirlendi, bu yüzden çıktı yöntemini belirtmek için HttpResponseMessage kullandım. Sonunda test başarılı oldu!
Ancak, yukarıdaki cümlenin yanlış olmadığını düşünüyorum, ama test etmek için tembel davranıyorum ve "metin/sade" kelimesini karşılık gelen tipe ayarlamam sorun olmaz.
POST dönüşleri
Son zamanlarda, WeChat ödeme fonksiyonu WeChat mini programlarının geliştirilmesinde ve arayüz geliştirme için ASP.NET WEB API'sinde kullanılmıştır;
Ödeme başarılı olduktan sonra, arayüz ödeme bildirim sonucunu WeChat sunucusundan alır, verileri işler ve verileri WeChat servisine geri döndürür.
WeChat sunucusu geri dönen verileri tanımaz, bu da tekrarlanan bildirimlere yol açar.
Nihai çözüm kodu şöyledir:
|