|
Recientemente, estaba desarrollando cuentas oficiales en WeChat y tuve algunos problemas con el pago de WeChat, y estuve confundido durante 3 días, pero hoy por fin lo he conseguido. Durante este periodo, me gustaría dar las gracias a algunos grandes dioses por su ayuda, y compartiré mi experiencia con ellos mientras estén en forma. Antes de implementar WeChat Pay, Necesito ir a la plataforma de desarrollo de WeChat para la certificación, no diré mucho sobre esta información de autenticación y configuración, aquí es principalmente a nivel de código para realizar el pago. Documentación oficial: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7. Ante varios parámetros en JS, voy a dar una explicación principal:
Durante el proceso de desarrollo, hay 4 parámetros muy importantes: uno es appid, AppSecret, apikey y número de comerciante. El appID en js arriba es uno de ellos. timeStamp es una marca de tiempo, 10 dígitos, nonceStr es un número aleatorio, dentro de 32 bits, los dos parámetros más importantes aquí, y los más propensos a errores, son package y paySign. Déjame contártelo uno a uno. Hablemos primero del paquete, necesitamos usar prepay_id aquí, este parámetro es el número de pedido generado por WeChat, tenemos que llamar a la interfaz de pedido unificada para conseguirlo. Documentación oficial: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Como puedes ver en la documentación, para obtener prepay_id se necesitan muchos parámetros, y uno de los más importantes es la firma. Nota: La firma aquí es diferente de la firma de pago en JS. Hay dos puntos en el documento del algoritmo firmado, y yo solo recalco dos puntos. Uno es el orden de los parámetros, que deben empalmarse según ASCII de pequeño a grande, y el otro es que el apikey no debe estar equivocado, ¿dónde está este apikey? Inicia sesión en la plataforma de comerciantes para configurarlo. Después de empalmar las cadenas necesarias para la firma, se puede usar cifrado MD5 para obtener la firma. Luego combina la firma y todos los parámetros anteriores en una cadena de formato xml, y llama a la dirección URL de la interfaz:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。 Hablemos del último parámetro en JS, PaySign: PaySign. Lo mismo ocurre con el algoritmo de firma de pago, empalmando los otros 5 parámetros en JS en orden, más apikey, cifrado MD5, vale. El algoritmo de firma es el mismo, pero los valores de los parámetros son diferentes. Aquí hay algo a tener en cuenta. Al pagar por la firma, se utilizan el número aleatorio nonceStr y la marca de tiempo y la marca de tiempo, y estos dos parámetros se emplean al firmar Si los valores de estos dos parámetros en JS son los mismos, son el mismo número aleatorio y la misma marca de tiempo. ¿Por qué? Aunque la documentación no lo indica, tengo entendido que las firmas de pago se generan mediante números aleatorios y marcas de tiempo, Luego, al pagar, envía el número aleatorio, la marca de tiempo y la firma de pago juntos, y cuando WeChat lo verifique, también se basará en el número aleatorio y la marca de tiempo en JS para generar una firma y compararla con la firma de pago que enviaste. Si vuelves a obtener el nuevo número aleatorio y la marca de tiempo en js, la firma calculada será diferente de la que enviaste y se reportará un error: firma fallida.
Eso es todo por el nivel de código, y por supuesto, hay algunos otros puntos a tener en cuenta. Por ejemplo, el parámetro openid útil también debe obtenerse llamando a la interfaz y si el directorio de autorización de pago está configurado correctamente. Resumen de la última frase: Mira detenidamente el documento y finalmente pregunta a otros, puedes encontrar grupos relacionados con pagos en WeChat, hay muchos dioses en él, me encontré con un problema antes y luché durante 2 días sin resolverlo, (a veces solo mirar el documento no es suficiente), Luego añadió con enfado 8 grupos de desarrollo en WeChat y finalmente salió bajo la guía de los expertos. Gracias de nuevo. Los programadores son un grupo de personas a las que les encanta compartir, y están más que encantados de compartir lo que saben. Así que cuando no entiendas, pregunta más.
|