La colonne de didacticiel suivante du framework thinkphp vous présentera le problème de l'échec de la vérification de la signature de rappel asynchrone Alipay sur le site Web thinkphp. J'espère qu'elle sera utile aux amis dans le besoin. !
Un projet en cours utilise le paiement du site Web mobile Alipay. Le projet est réalisé avec tp. Après avoir téléchargé le SDK Alipay et l'avoir modifié, il peut être appelé normalement. est également accessible, mais elle est asynchrone. La vérification de la signature de l'interface échoue toujours avec une erreur, et elle est attribuée à la ligne 580 de AopClient.php
La section de code inférieure
if ("RSA2" == $signType) { $result = (bool) openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256);//这句报错 } else { $result = (bool) openssl_verify($data, base64_decode($sign), $res); }
s'imprime print_r(openssl_error_string());
, et le le résultat est
error:0906D06C:PEM routines:PEM_read_bio:no start line
Baidu n'a aucun résultat, a dit quelqu'un. Les certificats étaient tellement foirés avec des erreurs qu'il était inutile pour moi de changer les certificats.
Plus tard, j'ai découvert par hasard qu'il y avait un problème avec la saisie, et j'ai finalement trouvé une raison :
Lorsque vous recevez des notifications asynchrones Alipay ici, vous ne pouvez pas utiliser la fonction I
$data=I("post.");//项目中这样写,导致支付宝传来的数据部分特殊字符被过滤,具体主要是fund_bill_list和sign这两部分 $data=$_POST;//写成这样就好了
Encore une chose :
Peu importe si la vérification de la signature est correcte ou non, openssl_error_string()
affiche toujours error:0906D06C:PEM routines:PEM_read_bio:no start line
C'est ma situation et je ne suis pas entré dans les détails.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!