通过反射类打造通用微信支付回调

// 支付回调接收
public function notify()
    {
        $inWechatpaySignature = $this->request->getHeaderLine('Wechatpay-Signature'); // 请根据实际情况获取
        $inWechatpayTimestamp = $this->request->getHeaderLine('Wechatpay-Timestamp'); // 请根据实际情况获取
        $inWechatpaySerial = $this->request->getHeaderLine('Wechatpay-Serial');       // 请根据实际情况获取
        $inWechatpayNonce = $this->request->getHeaderLine('Wechatpay-Nonce');         // 请根据实际情况获取
        $inBody = $this->request->getBody()->getContents();                           // 请根据实际情况获取,例如: file_get_contents('php://input');

        $params = [
            'inWechatpaySignature' => $inWechatpaySignature,
            'inWechatpayTimestamp' => $inWechatpayTimestamp,
            'inWechatpaySerial'    => $inWechatpaySerial,
            'inWechatpayNonce'     => $inWechatpayNonce,
            'inBody'               => $inBody,
        ];

        try {
            $res = $this->wxAppPayNotifyVerify($params, self::class, 'callbackNotify');
        } catch (\Exception $e) {
            var_dump($e->getMessage());
             return $this->response->withStatus(500)->json([
                'code'    => 'FAIL',
                'message' => '失败',
            ]);
        }
        if ($res) {
            return $this->response->json([
                'code'    => 'SUCCESS',
                'message' => '成功',
            ]);
        } else {
            return $this->response->withStatus(500)->json([
                'code'    => 'FAIL',
                'message' => '失败',
            ]);
        }

    }






// 支付回调执行方法
public function callbackNotify(array $params = [])
    {
        // 获取附加消息
        $attach = isset($params['attach']) ? json_decode($params['attach'], true) : [];
        if (!$attach) return false;

        // 校验附加消息
        $id = $attach['id'] ?? '';
        if (!$id) return false;

        
        // 业务处理

        return true;
    }












/**
     * 微信小程序支付回调
     * wxAppPayNotifyVerify($params, self::class, 'callbackNotify');
     *
     * @authors: Msy
     * @Created-Time: 2023/2/9 13:28
     * @param array $notifyData 回调返回的参数数组
     * @param $class      回调所在的类
     * @param $method     回调方法名
     * @return false|mixed|void
     * @throws \ReflectionException
     */
public function wxAppPayNotifyVerify(array $notifyData, $class, $method)
    {



//  start
       这里执行支付回调解密 , 自行查看官方文档
       https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml
//  end



            // 反射类执行回调
            $classObj = new \ReflectionClass($class);
            $class_instantce = $classObj->newInstance(); // 通过反射对象创建类的实例
            $method = $classObj->getMethod($method);
//  下两行注释也可达到同样效果 , 方法参数名需要对应 , 由于我的方法只有一个参数,所以直接用invoke了
//            $params = ['方法参数名' => $inBodyResourceArray];
//            return $method->invokeArgs($class_instantce, $params);
            return $method->invoke($class_instantce, $inBodyResourceArray);
        
    }









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗先生的PHP记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值