用户登录

不管是要使用支付宝同步返回里带的数据,还是异步通知里带的数据,都要先去验证数据里的签名。在插件里可以添加一个验证签名用的函数 ...

添加一个函数 .. 名字是 woocommerce_alipay_verify_sign .. 函数接收一个 $data 参数 .. 表示要验证的数据 .. 还有一个 $gateway .. 表示支付方法 .. 主要是要使用它里面带的一些数据还有功能 ..

先用一下 $gateway 上的 log 方法输出一条日志 .. --- 验证支付宝返回的数据 ---..

然后添加一个 $alipay_public_key .. 它的值在 $gateway 里面,名字是 alipay_public_key ,表示支付宝的公钥 .. 签名的 $sign_type 应该是 RSA2 ..

用一下 $gateway .. aop_client .. 它是在创建支付宝支付方法实例的时候,我们加上的一个支付宝 SDK 实例 ..

设置一下它里面的 alipayrsaPublicKey .. 让它等于 $alipay_public_key ..

再添加一个 $sign_verified ,它的值就是验证的结果 .. 用一下 $gateway 上的 aop_client .. 执行一下它里面的 rsaCheckV1 这个方法 .. 验证的数据是 $data .. 支付宝公钥在 $alipay_public_key 里面 .. 签名的类型是 $sign_type ..

下面做一下判断 .. 检查一下验证的结果 .. 如果验证成功 .. 就输出一条日志 .. 数据验证成功 ... 不然的话 ... 也输出一条日志信息 .. 输出的是 数据验证失败 .. 级别是 error ..

最后再 return 一下这个验证的结果 .. 就是 $sign_verified 它的值 ..

使用验证功能

下面在这个 woocommerce_alipay_thank_you 函数里用一下它 .. 先添加一个 $order .. 它的值用一下 wc_get_order 函数 .. 把订单的 id 号交给它 ..

再根据这个订单得到它的支付方法 .. $gateway .. 用一下wc_get_payment_gateway_by_order ... 订单是 $order .

然后添加一个 $sign_verified .. 它的值就是 woocommerce_alipay_verify_sign 函数返回的值,给它要验证的数据,这里就是 $vars .. 还有 $gateway ..

预览

再回到这个感谢页面 .. 刷新一下这个页面 ... 然后再去看一下日志 .. 这里会显示正在验证支付宝返回的数据 .. 并且数据验证成功 .. 说明数据没问题 .. 可以放心使用 ..

再试一下 .. 修改一下地址里的参数数据 , .. 执行一下 ..

回到日志 .. 这回会显示 .. 数据验证失败了 .. 因为数据里的签名是根据数据创建的 .. 数据如果有变化,签名也应该会有变化 .. 我们修改了数据 .. 但是签名是其它数据的签名 .. 所以在验证这些数据的时候就会失败 ...

把它再改成跟之前完全一样的数据 .. 执行一下 .. 再去看一下日志 .. 这回又会提示 数据验证成功 ..

验证支付宝数据签名《 电商网站案例:支付通知 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点