# Join\_meeting\_failed with 200 - Laravel PHP

**URL:** <https://devforum.zoom.us/t/join-meeting-failed-with-200-laravel-php/70232>\
**Category:** Web\
**Created:** [June 9, 2022, 12:13pm UTC](https://devforum.zoom.us/t/join-meeting-failed-with-200-laravel-php/70232 "2022-06-09T12:13:17Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![itlh2022](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/itlh2022/32/32179_2.png) [@itlh2022](https://devforum.zoom.us/u/itlh2022)\
**Post date:** [June 9, 2022, 12:13pm UTC](https://devforum.zoom.us/t/join-meeting-failed-with-200-laravel-php/70232/1 "2022-06-09T12:13:17Z")

</div>

**Description**  
Trying to integrate meeting web SDK using Laravel PHP

**Browser Console Error**

```auto
errorCode: 200
reason: "Fail to join the meeting."
type: "JOIN_MEETING_FAILED

```

**Which Web Meeting SDK version?**  
2.4.5

**Meeting SDK Code Snippets**  
Frontend Footer:

```auto
<script src="https://source.zoom.us/2.4.5/lib/vendor/react.min.js"></script>
    <script src="https://source.zoom.us/2.4.5/lib/vendor/react-dom.min.js"></script>
    <script src="https://source.zoom.us/2.4.5/lib/vendor/redux.min.js"></script>
    <script src="https://source.zoom.us/2.4.5/lib/vendor/redux-thunk.min.js"></script>
    <script src="https://source.zoom.us/2.4.5/lib/vendor/lodash.min.js"></script>
    <script src="https://source.zoom.us/2.4.5/zoom-meeting-embedded-2.4.5.min.js"></script>

    <script>
        const client = ZoomMtgEmbedded.createClient();
        let meetingSDKElement = document.getElementById('meetingSDKElement');
        client.init({
            debug: true,
            zoomAppRoot: meetingSDKElement,
            language: 'en-US'
        })

        client.join({
            sdkKey: '{{ config('services.zoom.key') }}',
            signature: '{{ $zoomSignature }}', // role in SDK Signature needs to be 0
            meetingNumber: '{{ $zoomMeetingId }}',
            // password: '',
            userName: 'John Doe'
        })
    </script>

```

Backend:

```auto
class CourseController extends Controller
{
    public function show(Request $request)
    {
        $zoomMeetingId = '89215861167';
        $zoomSignature = $this->generate_signature(
            config('services.zoom.key'),
            config('services.zoom.secret'),
            $zoomMeetingId,
            0
        );

        return view('student.course', compact('zoomSignature', 'zoomMeetingId'));
    }

    private function generate_signature($api_key, $api_secret, $meeting_number, $role)
    {
        $now = Carbon::now();

        //build the headers
        $headers = ['alg' => 'HS256', 'typ' => 'JWT'];
        $headers_encoded = $this->base64url_encode(json_encode($headers));

        //build the payload
        $payload = [
            'mn' => $meeting_number,
            'role' => $role,
            'iat' => $now->timestamp,
            'exp' => $now->addSeconds(1800)->timestamp
        ];
        $payload_encoded = $this->base64url_encode(json_encode($payload));

        //build the signature
        $signature = hash_hmac('SHA256', "$headers_encoded.$payload_encoded", $api_secret, true);
        $signature_encoded = $this->base64url_encode($signature);

        $token = "$headers_encoded.$payload_encoded.$signature_encoded";

        // Log::debug($token);
        return $token;
    }

    private function base64url_encode($data)
    {
        return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
    }
}

```

**Screenshots**

 ![Screenshot 2022-06-09 at 5.40.02 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/5/a/5a329a27253ddc31c70bef4e0c1e15440ebbf5b2.png)  
 ![Screenshot 2022-06-09 at 5.40.15 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/7/2/7278434cdcebddcad66346f66484b4435b67edc8.png)

**Device (please complete the following information):**

- Device: [Macbook Pro]
- OS: [macOS 12]
- Browser: [Chrome]
- Browser Version [e.g. 88.0.4324.150 (Official Build) (x86\_64)]

**Additional context**  
Already tried following the PHP signature generator mentioned at [Generate Signature](https://marketplace.zoom.us/docs/sdk/native-sdks/web/signature) which returns an invalid signature error. Then refactored backed signature logic to the above referring [SDK Authorization](https://marketplace.zoom.us/docs/sdk/native-sdks/auth/#generate-the-sdk-jwt)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [July 9, 2022, 10:14pm UTC](https://devforum.zoom.us/t/join-meeting-failed-with-200-laravel-php/70232/2 "2022-07-09T22:14:08Z")

</div>

Closed on July 9, 2022, 10:14pm UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
