|
Récemment, je faisais du développement officiel de comptes WeChat, et j’ai rencontré quelques problèmes avec le paiement WeChat, et j’ai été confus pendant 3 jours, mais aujourd’hui j’ai enfin réussi. Pendant cette période, je voudrais remercier quelques grands dieux pour leur aide, et je partagerai mon expérience avec eux tant qu’ils ont chaud. Avant de mettre en place WeChat Pay, Je dois aller sur la plateforme de développement WeChat pour la certification, je ne dirai pas trop sur ces informations d’authentification et de configuration, ici c’est principalement au niveau du code pour réaliser le paiement. Documentation officielle : https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7. Face à plusieurs paramètres dans JS, je vais donner une explication principale :
Au cours du processus de développement, il y a 4 paramètres très importants : l’un est appid, AppSecret, apikey et numéro marchand. L’appID dans js ci-dessus en fait partie. timeStamp est un timestamp, 10 chiffres, nonceStr est un nombre aléatoire, avec une portée de 32 bits, les deux paramètres les plus importants ici, et les plus sujets à l’erreur sont package et paySign. Laissez-moi vous expliquer un par un. Parlons d’abord du package, nous devons utiliser prepay_id ici, ce paramètre est le numéro de commande généré par WeChat, nous devons appeler l’interface de commande unifiée pour l’obtenir. Documentation officielle : https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Comme vous pouvez le voir dans la documentation, pour obtenir prepay_id, de nombreux paramètres sont nécessaires, et l’un des paramètres les plus importants est la signature. Note : La signature ici est différente de celle du paiement dans JS. Il y a deux points dans le document algorithme signé, et je souligne juste deux points. L’une est l’ordre des paramètres, qui doivent être sépisés selon l’ASCII de petit à grand, et l’autre est que l’apikey ne doit pas être fausse : où se trouve cette apikey ? Connectez-vous à la plateforme marchande pour la configurer. Après avoir stallé les chaînes nécessaires à la signature, le chiffrement MD5 peut être utilisé pour obtenir la signature. Ensuite, combinez la signature et tous les paramètres précédents dans une chaîne de formats xml, et appelez l’adresse URL de l’interface :
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。 Parlons du dernier paramètre dans JS, PaySign : PaySign. Il en va de même pour l’algorithme de signature de paiement, en combinant les 5 autres paramètres dans JS dans l’ordre, plus apikey, chiffrement MD5, d’accord. L’algorithme de signature est le même, mais les valeurs des paramètres sont différentes. Voici une chose à noter. Lors du paiement pour la signature, le nombre aléatoire nonceStr et l’horodatage temporel sont utilisés, et ces deux paramètres sont utilisés lors de la signature Si les valeurs de ces deux paramètres dans JS sont identiques, elles correspondent au même nombre aléatoire et au même horodatage. Pourquoi ? Bien que la documentation ne le dis-le pas, d’après ce que je comprends, les signatures de paiement sont générées par des chiffres et des horodatages aléatoires, Ensuite, lors du paiement, envoyez ensemble le numéro aléatoire, l’horodatage et la signature de paiement, puis lorsque WeChat vérifie, cela sera aussi basé sur le numéro aléatoire et l’horodatage en JS pour générer une signature et la comparer à celle que vous avez envoyée. Si vous réobtenez le nouveau nombre aléatoire et l’horodatage en js, la signature calculée sera différente de celle que vous avez envoyée, et une erreur sera signalée : signature échouée.
C’est tout pour le niveau du code, et bien sûr, il y a quelques autres points à noter. Par exemple, le paramètre openid utile doit également être obtenu en appelant l’interface, et en vérifiant si l’annuaire d’autorisation de paiement est correctement configuré. Résumé de la dernière phrase : Regardez attentivement le document, puis demandez à d’autres personnes, vous pouvez trouver des groupes liés aux paiements sur WeChat, il y a beaucoup de dieux dedans, j’ai déjà rencontré un problème et j’ai eu du mal pendant 2 jours sans le résoudre (parfois, regarder simplement le document ne suffit pas), Puis, avec colère, il a ajouté 8 groupes de développement sur WeChat, et a finalement été lancé sous la direction des experts. Merci encore. Les programmeurs sont un groupe de personnes qui aiment partager, et ils sont plus qu’heureux de partager ce qu’ils savent. Alors quand tu ne comprends pas, demande plus.
|