给个思路或者源码
https://blog.csdn.net/jal517486222/article/details/82726491
<?php
include 'Base.php';
/*
* 黎明互联
* https://www.liminghulian.com/
*/
/*
* 1.获取数据
* 2.验证签名
* 3.验证是否来自支付宝的请求
* 4.验证交易状态
* 5. 验证订单号和金额
* 6.更改订单状态
*
*/
class Notify extends Base
{
public function __construct() {
// 1.获取数据
$postData = $_POST;
//2.验证签名MD5和RSA
if($postData['sign_type'] == 'MD5'){
if(!$this->checkSign($postData)){
$this->logs('log.txt', 'MD5签名失败!');
exit();
}else{
$this->logs('log.txt', 'MD5签名成功!');
}
}elseif($postData['sign_type'] == 'RSA'){
if(!$this->rsaCheck($this->getStr($postData), self::ALIPUBKEY, $postData['sign']) ){
$this->logs('log.txt', 'RSA签名失败!');
exit();
}else{
$this->logs('log.txt', 'RSA签名成功!');
}
$this->logs('log.txt', '订单号:' . $postData['out_trade_no'] . '订单金额:' . $postData['total_amount']);
//更改订单状态
echo 'success';
}
}
$obj = new Notify();
如果要调用这个文件的代码是怎么调用呢 在程序里
在支付宝支付的配置文件中会有配置回调地址的地方,写上你调用文件的路径和方法就可以调用
这个会了 就是老是提示不是支付宝发来的通知
什么意思? 你的回调没有带值吗
* 1.获取数据
* 2.验证签名
* 3.验证是否来自支付宝的请求
* 4.验证交易状态
* 5. 验证订单号和金额
* 6.更改订单状态
就是这个第3步啊
判断上一级的来源
你用的是什么方法判断的
//验证是否来之支付宝的通知
public function isAlipay($arr){
$str = file_get_contents(self::CHECKURL . $arr['notify_id']);
if($str == 'true'){
return true;
}else{
return false;
}
}
RSA2签名成功!
不是来之支付宝的通知!
RSA2签名成功!
不是来之支付宝的通知!
RSA2签名成功!
不是来之支付宝的通知!
RSA2签名成功!
不是来之支付宝的通知!
RSA2签名成功!
不是来之支付宝的通知!
notify_id不是我的我就奇怪了
你的支付代码是正常的吗
那肯定啊
你的$arr参数是传过来的吗
都能正常取钱
get参数吗
这个是POST
异步
isAlipay 我的意思是看调用这个方法的地方的往前推
如果可以 你可以先改为get参数方便你查看和修改 2.查看支付的配置文件是否正确
云排查里看就是notify_id不是我的
要用云排查
你那样没有用吧
你们写要不要验证支付宝通知
云排查一样,会有些延迟,我们之前调用都是封装好的 配置一下 回调的之后验签,判断等等 支付宝验签都是一样的
验证都是一样的
你用的应该是DOME
没,之前也是别人改了一下,你是在重新封装吗
嗯
验签地址官方是不是改掉了
?
你们都不做验签吗
配置 那里
都要配置什么
做啊
CHECKURL
没有啊
你这个只验签了
PID 同步异步地址 网关 支付宝通知地址 公钥 秘钥
支付宝通知地址没有验证
很容易被人家伪装的发来信息
你是要用新的吗