Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 16619|Odpowiedź: 0

[Interfejs] C# implementuje płatności WeChat

[Skopiuj link]
Opublikowano 15.03.2019 11:59:31 | | |

Ostatnio tworzyłem oficjalne konto na WeChat i napotkałem problemy z płatnościami na WeChat, przez co przez 3 dni byłem zdezorientowany, ale dziś w końcu udało mi się to zrobić. W tym czasie chciałbym podziękować wielkim bogom za ich pomoc i podzielę się z nimi moimi doświadczeniami, póki będą gorące.

Przed wdrożeniem WeChat Pay,

Muszę udać się do platformy deweloperskiej WeChat po certyfikację, nie będę dużo mówił o tych informacjach o uwierzytelnianiu i konfiguracji, tutaj głównie z poziomu kodu, aby zrealizować płatności.

Oficjalna dokumentacja: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Stawiając czoła kilku parametrom w JS, przedstawię główne wyjaśnienie:


W trakcie procesu tworzenia istnieją 4 bardzo ważne parametry: jeden to appid, AppSecret, apikey oraz numer handlowca. AppID w js powyżej jest jednym z nich. timeStamp to znacznik czasowy, 10 cyfr, nonceStr to liczba losowa, mieszcząca się w 32 bitach, dwa najważniejsze parametry tutaj i najbardziej podatne na błędy to package i paySign. Pozwól, że opowiem wam po kolei. Porozmawiajmy najpierw o pakiecie, musimy użyć prepay_id tutaj – ten parametr to numer zamówienia wygenerowany przez WeChat, musimy wywołać zunifikowany interfejs zamówienia, aby go otrzymać. Oficjalna dokumentacja: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Jak widać w dokumentacji, aby uzyskać prepay_id, potrzeba wielu parametrów, a jednym z najważniejszych jest podpis. Uwaga: Podpis tutaj różni się od podpisu płatności w JS. W dokumencie podpisanego algorytmu są dwa punkty, na które zwracam uwagę. Jeden to kolejność parametrów, które muszą być połączone zgodnie z ASCII od małych do dużych, a drugi, że apikey nie może być błędny, gdzie jest ten apikey? Zaloguj się na platformie handlowej, aby ją skonfigurować.

Po połączeniu ciągów znaków wymaganych do podpisu, można użyć szyfrowania MD5 do uzyskania podpisu. Następnie połącz sygnaturę i wszystkie poprzednie parametry w ciąg w formacie xml i wywołaj adres URL interfejsu:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Porozmawiajmy o ostatnim parametrze w JS, PaySign: PaySign. To samo dotyczy algorytmu podpisu płatniczego, łączącego pozostałe 5 parametrów w JS w kolejności, plus apikey, szyfrowanie MD5, ok.
Algorytm sygnatury jest taki sam, ale wartości parametrów są różne. Warto zauważyć jedną rzecz. Podczas płatności za podpis używa się losowej liczby nonceStr oraz znacznika czasu timeStamp, a te dwa parametry są wykorzystywane podczas podpisywania
Jeśli wartości tych dwóch parametrów w JS są takie same, to ta sama liczba losowa i ten sam znacznik czasu. Dlaczego? Chociaż dokumentacja tego nie mówi, z tego co rozumiem, podpisy płatności są generowane przez losowe liczby i znaczniki czasu,
Następnie, podczas płatności, wyślij losową liczbę, znacznik czasu i podpis płatności, a gdy WeChat to zweryfikowa, będzie to również oparte na losowej liczbie i znaczniku czasu w JS, aby wygenerować podpis i porównać go z wysłanym podpisem płatności.
Jeśli ponownie uzyskasz nową losową liczbę i znacznik czasu w js, obliczony podpis będzie inny niż ten, który wysłałeś, a błąd zostanie zgłoszony: podpis nie powiódł.

To wszystko na poziomie kodu, a oczywiście warto zwrócić uwagę na kilka innych kwestii. Na przykład użyteczny parametr openid również należy uzyskać wywołując interfejs oraz sprawdzić, czy katalog autoryzacji płatności jest poprawnie skonfigurowany.
Podsumowanie ostatniego zdania: Dokładnie przyjrzyj się dokumentowi, a na końcu zapytaj innych, znajdziesz grupy związane z płatnościami na WeChat, jest tam wielu bogów, miałem kiedyś problem i przez 2 dni walczyłem bez jego rozwiązania (czasem samo spojrzenie na dokument nie wystarcza),
Następnie ze złością dodał 8 grup deweloperskich na WeChat i ostatecznie wyszedł pod kierunkiem ekspertów. Jeszcze raz dziękuję. Programiści to grupa ludzi, którzy uwielbiają dzielić się i chętnie dzielą się tym, co wiedzą. Więc gdy nie rozumiesz, pytaj więcej.






Poprzedni:Przykład funkcji wiadomości push szablonu w interfejsie WeChat C#
Następny:Czuję się wobec systemu obsługi klienta w dużych firmach
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com