>PHP 프레임워크 >ThinkPHP >thinkphp 웹사이트 Alipay 비동기 콜백 서명 확인 실패 문제

thinkphp 웹사이트 Alipay 비동기 콜백 서명 확인 실패 문제

藏色散人
藏色散人앞으로
2020-07-03 13:26:583405검색

다음 튜토리얼 칼럼인 thinkphp Framework에서는 thinkphp 웹사이트의 Alipay 비동기 콜백 확인 실패 문제를 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

thinkphp 웹사이트 Alipay 비동기 콜백 서명 확인 실패 문제

현재 프로젝트는 Alipay 모바일 웹사이트 결제를 사용하고 있습니다. 프로젝트는 Alipay SDK를 다운로드하고 수정한 후 정상적으로 작동하지만 비동기 인터페이스 서명 확인은 항상 실패합니다. AopClient.php의 580번째 줄을 추적하면 하위 코드 섹션 AopClient.php的580行,下段代码处

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);
}

打印print_r(openssl_error_string());,输出的是

error:0906D06C:PEM routines:PEM_read_bio:no start line

百度无果,有说证书错误的乱七八糟,本人换证书也没用。

后来偶然发现输入有问题,最终找到一个原因:

这里接收支付宝异步通知的时候,不能使用I函数

$data=I("post.");//项目中这样写,导致支付宝传来的数据部分特殊字符被过滤,具体主要是fund_bill_list和sign这两部分
$data=$_POST;//写成这样就好了

还有一点:

无论签名验证是否正确,openssl_error_string()始终输出error:0906D06C:PEM routines:PEM_read_bio:no start linerrreee

print_r(openssl_error_string());을 인쇄하고 출력은 🎜rrreee🎜Baidu입니다. 결과가 없습니다. 어떤 사람들은 인증서가 오류로 인해 너무 엉망이어서 인증서를 변경하는 것이 쓸모가 없다고 말합니다. 🎜🎜나중에 실수로 입력에 문제가 있다는 것을 발견하고 마침내 이유를 찾았습니다: 🎜🎜Alipay에서 비동기 알림을 받을 때 I 함수를 사용할 수 없습니다. 🎜rrreee🎜또 다른 점: 🎜🎜서명 확인 여부에 관계없이 올바른지 여부는 openssl_error_string()항상 <code>error:0906D06C:PEM routines:PEM_read_bio:no start line을 출력합니다. 이것은 내 상황이므로 자세히 설명하지 않았습니다. 🎜

위 내용은 thinkphp 웹사이트 Alipay 비동기 콜백 서명 확인 실패 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제