easy WeChat 配置 企业微信代开发模板回调URL(PHP版本)

这篇给大家梳理下 使用easyWeChat 配置 企业微信代开发模板回调URL功能

使用的框架:

think PHP 5.1

easy WeChat :4.2.23


 话不多说直接上代码

<?php

use callback\CommonFunc;
use EasyWeChat\Factory;
$config = [
    'corp_id' => '服务商的corp_id',
    'secret' => '实测这里填啥都可以 企业微信好像不验证',
    'token' => '企业微信随机生成的 回调token',
    'aes_key' => '企业微信 生成的 EncodingAESKey',
    'reg_template_id' => '',
];
$app = Factory::openWork($config);
$server = $app->server;
$server->push(function ($message) {
    //指令回调
    if (isset($message['InfoType'])) {
        switch ($message['InfoType']) {
            //推送suite_ticket
            case 'suite_ticket':
                // 这里可以做 把suite_ticket 存到redis或者其他缓存的操作,后续获取代开发的secret会用到

                break;
            //授权成功通知
            case 'create_auth':
                break;
            //变更授权通知
            case 'cancel_auth':
                break;
            //通讯录事件通知
            case 'change_contact':
                switch ($message['ChangeType']) {
                    case 'create_user':
                        return '新增成员事件';
                        break;
                    case 'update_user':
                        return '更新成员事件';
                        break;
                    case 'delete_user':
                        return '删除成员事件';
                        break;
                    case 'create_party':
                        return '新增部门事件';
                        break;
                    case 'update_party':
                        return '更新部门事件';
                        break;
                    case 'delete_party':
                        return '删除部门事件';
                        break;
                    case 'update_tag':
                        return '标签成员变更事件';
                        break;
                }
                break;
            // 重新获取 select 触发
            case "reset_permanent_code":
                // 这里可操作 获取代开发的 select
                break;
            default:
                return 'fail';
                break;
        }
    }

    //数据回调
    if (isset($message['MsgType'])) {
        switch ($message['MsgType']) {
            case 'event':
                return '事件消息';//详情 https://work.weixin.qq.com/api/doc/90001/90143/90376#%E5%88%A0%E9%99%A4%E6%88%90%E5%91%98%E4%BA%8B%E4%BB%B6
                break;
            case 'text':
                return '文本消息';//详情 https://work.weixin.qq.com/api/doc/90001/90143/90375#%E5%9B%BE%E7%89%87%E6%B6%88%E6%81%AF
                break;
            case 'image':
                return '图片消息';
                break;
            //等等...不再一一举例
            default:
                return '其他消息';
                break;
        }
    }

});
$response = $server->serve();
$response->send();

在 Laravel 框架中实现 EasyWeChat v3 的微信支付回调接口,需要处理以下几个关键步骤: ### 路由配置 首先,在 `routes/web.php` 或者 `routes/api.php` 中定义一个路由来接收微信支付的异步通知。通常使用 POST 方法来确保数据的安全性。 ```php Route::post('/pay/notify', [PayController::class, 'handlePaymentNotification']); ``` ### 控制器方法 接着,在控制器中编写处理微信支付回调的方法。EasyWeChat 提供了验证签名和解析回调数据的功能,可以确保请求来自微信服务器并有效防止伪造请求。 以下是一个示例码片段,展示了如何在控制器中处理微信支付回调: ```php use Illuminate\Http\Request; use EasyWeChat\Payment\Application as PaymentApplication; use Symfony\Component\HttpFoundation\Response; class PayController extends Controller { public function handlePaymentNotification(Request $request) { // 获取微信支付应用实例 $payment = app('wechat.payment'); // 确保已经正确绑定 EasyWeChat 的服务提供者 // 处理支付结果通知 try { $response = $payment->handlePaidNotify(function($message, $reqInfo) use ($request) { // 验证数据完整性 if ($message['return_code'] === 'SUCCESS' && $message['result_code'] === 'SUCCESS') { // 支付成功逻辑 $transactionId = $message['transaction_id']; // 微信交易单号 $outTradeNo = $message['out_trade_no']; // 商户订单号 $totalAmount = $message['total_fee']; // 支付金额(分) $orderStatus = $message['trade_state']; // 交易状态 // 更新数据库中的订单状态 // Order::where('order_number', $outTradeNo)->update(['status' => 'paid']); return new Response('success'); // 返回 success 表示处理成功 } return new Response('fail'); // 其他情况返回失败 }); return $response; } catch (\Exception $e) { // 记录错误日志 \Log::error("微信支付回调异常: " . $e->getMessage()); return new Response('fail'); } } } ``` ### 关键点说明 1. **签名验证**:EasyWeChat 在处理回调时会自动验证微信服务器发送的数据签名,以确保数据未被篡改[^1]。 2. **业务逻辑处理**:在回调处理函数中,主要任务是检查支付状态,并根据支付结果更新订单状态或执行其他业务逻辑。 3. **响应微信服务器**:微信服务器期望收到明确的响应(如 `"success"`),以便确认回调已被正确处理。如果未收到有效响应,微信可能会多次重发通知。 4. **安全性**:建议对所有敏感操作进行日志记录,并添加适当的异常捕获机制,以防止因意外错误导致支付状态无法更新。 ### 安全与调试 - **日志记录**:在生产环境中,务必启用详细的日志记录功能,以帮助排查问题。 - **测试环境**:在正式上线前,建议使用沙箱环境进行充分测试,以确保回调接口能够正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值