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

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

藏色散人
풀어 주다: 2020-07-03 13:26:58
앞으로
3431명이 탐색했습니다.

다음 튜토리얼 칼럼인 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿