Cómo solucionar el rendimiento inconsistente de WeChat Pay en Android e IOS
El problema es que los parámetros JSON para el pago deben ser todos cadenas (no leí la documentación correctamente y pensé que los pagos funcionarían bien en Android, así que no debe ser ningún problema para mí, lo admito). ).
Por ejemplo, mi error estuvo en el parámetro {"timeStamp":12312312}, es decir, el valor de la marca de tiempo es un número entero. Aunque puedes realizar pagos en Android, no puedes realizar pagos en IOS. ¡Y debe cumplir estrictamente con la documentación de que tanto las claves como los valores deben ser cadenas! ¡De esta manera {"timeStamp":"12312312"} es correcto!
El segundo problema es un poco desconcertante. Android puede obtener correctamente la dirección de envío del usuario, pero iOS informará err_msg:get_brand_grant_info:fail,err_desc:no autorizado buffer vacío
Este consejo es misterioso. Entonces ¿cómo lo soluciono? De una búsqueda en Google hace unas semanas o hace uno o dos meses, recordé vagamente que uno de los parámetros no podía ser demasiado largo...
Miré uno de los parámetros de dirección de envío Para Para el número aleatorio, utilicé 32 bits, que no era demasiado largo (para iOS), así que lo cambié a 12 bits de longitud. Problema resuelto, pero... la longitud de este número aleatorio no se menciona en la documentación
.