DRM-X 6.0 logo bồ câu và nhánh ô liuDRM-X 6.0Tài liệu
◎ Tiếng Việt

Ví dụ theo ngôn ngữ backend

Hiểu quy trình phát chung và tìm callback chính xác cần sửa trong Node.js, Django, Laravel, PHP, ASP.NET hoặc Java.

Xem MarkdownVí dụ chạy trực tiếpCập nhật 2026-09-25

Trang web của bạn quyết định ai có thể xem#

Giữ hệ thống đăng nhập, mua hàng, thành viên và đăng ký học. Ứng dụng cung cấp người dùng hiện tại và Content ID được phép. SDK gọi DRM-X và trình phát nạp video được bảo vệ.

Kết nối một lần với ứng dụng hiện có

Bạn quản lý đăng nhập và quyết định quyền truy cập. SDK cùng trình phát xử lý phát nội dung được bảo vệ.

  1. Giữ đăng nhập

    Người xem đăng nhập qua trang web hiện có của bạn.

  2. Kết nối hàm tra cứu của bạn

    Ứng dụng kiểm tra quyền và trả về DRM-X Content ID cho bài học đã chọn.

  3. Gọi qua SDK

    SDK backend dùng thông tin xác thực máy chủ để yêu cầu DRM-X cấp quyền phát.

  4. Hiển thị trình phát

    Trình phát nhận giấy phép DRM và phát nội dung mã hóa đã xuất bản.

Hiểu hai loại ID video#

Giá trịVí dụNguồn của giá trị
ID video của tranglesson-123Bản ghi bài học, sản phẩm hoặc video của bạn.
DRM-X Content IDyour-published-content-idNội dung bảo vệ được xuất bản trong DRM-X.
ID người dùngcustomer-456Phiên đăng nhập đã xác thực của bạn.

Liên kết bài học với Content ID bằng cơ sở dữ liệu, API hoặc mã ứng dụng hiện có. Tìm thấy video không có nghĩa người dùng được xem; hãy kiểm tra quyền trước khi trả về.

Chuẩn bị một lần, sau đó tích hợp#

  1. Mã hóa và xuất bản một video, rồi sao chép Content ID của video.
  2. Tạo thông tin xác thực phát cho cùng môi trường. Dùng Site ID, Site Key và Access Key trên máy chủ.
  3. Tải bộ đầy đủ hoặc bộ cho nền tảng của bạn. Dùng trình quản lý gói để cài SDK đi kèm.
  4. Kết nối callback kiểm tra quyền của người dùng đối với nội dung, rồi thêm trình phát vào trang.

SDK dùng nội dung đã xuất bản. Nó không thay công cụ đóng gói hoặc hệ thống thanh toán. Cài các phụ thuộc runtime của bên thứ ba có thể cần kết nối Internet.

Chọn ngôn ngữ lập trình#

Chọn ngôn ngữ lập trình để xem vị trí cần sửa.

Node.js / Express

Sửa ứng dụng của bạn: server.mjs

Kết nối: authorize(userId, videoId)

Trả về ánh xạ nội dung được phép hoặc null. Đọc người dùng từ middleware đăng nhập hiện có.

Mở hướng dẫn và lệnh cài đặt →

Python / Django

Sửa ứng dụng của bạn: authorization.py

Kết nối: authorize(user, video_id)

Trả về dictionary chứa content_id hoặc None. Đăng ký dưới dạng DRMX['AUTHORIZE'] trong settings.py.

Mở hướng dẫn và lệnh cài đặt →

PHP / Laravel

Sửa ứng dụng của bạn: app/Services/DrmxAccess.php

Kết nối: ContentAuthorizer.authorize(user, videoId)

Trả về mảng nội dung được phép hoặc null. Đăng ký dịch vụ trong AppServiceProvider.

Mở hướng dẫn và lệnh cài đặt →

PHP không dùng framework

Sửa ứng dụng của bạn: index.php

Kết nối: findAuthorizedVideo(userId, videoId)

Trả về mảng nội dung được phép hoặc null. Kết nối danh tính người dùng từ phiên PHP hiện có.

Mở hướng dẫn và lệnh cài đặt →

C# / ASP.NET Core

Sửa ứng dụng của bạn: Program.cs

Kết nối: QuickStartCatalog.FindAuthorizedVideoAsync

Trả về QuickStartVideo hoặc null. IDrmXContentEntitlement đối chiếu Content ID được yêu cầu với kết quả đó.

Mở hướng dẫn và lệnh cài đặt →

C# / ASP.NET Framework

Sửa ứng dụng của bạn: App_Code/DrmXPlayback.cs

Kết nối: ApplicationServices.Authorize

Chỉ trả về true khi người dùng, Content ID và loại nội dung đều được phép truy cập. Đây là bộ tích hợp mã nguồn cho Windows/IIS.

Mở hướng dẫn và lệnh cài đặt →

Java / Spring Boot

Sửa ứng dụng của bạn: DrmxAccess.java

Kết nối: ContentEntitlement.authorize(userId, videoId)

Trả về Optional<AuthorizedVideo> hoặc Optional.empty(). Kết nối controller và bean kiểm tra quyền với lớp truy cập dữ liệu hiện có.

Mở hướng dẫn và lệnh cài đặt →

Cấu hình máy chủ của bạn#

Ví dụBiến môi trường
Node, Django, Java, PHP SDK, LaravelDRMX_SITE_ID, DRMX_SITE_KEY, DRMX_ACCESS_KEY
ASP.NET Core và ASP.NET FrameworkDRMX_PLAYBACK_SITE_ID, DRMX_PLAYBACK_SITE_KEY, DRMX_PLAYBACK_ACCESS_KEY

Nạp các giá trị trong tiến trình máy chủ. Content ID là dữ liệu riêng của từng video; không ghi đè thông tin xác thực dùng chung hoặc cấu hình toàn cục để đổi người dùng hay video. Giữ việc chọn chính sách trên máy chủ.

PHP: kết nối trang web hiện có#

Tải bộ tích hợp nền tảng này

SDK bản xem trước, ví dụ ứng dụng và mã nguồn. Giữ cấu trúc thư mục sau giải nén.

Mọi nền tảng và bộ đầy đủ · Hiểu quy trình tích hợp

  1. Cấu hình

    Môi trường máy chủ

    Đặt DRMX_SITE_ID, DRMX_SITE_KEY và DRMX_ACCESS_KEY.

  2. Cấp quyềnexamples/sdk/php/index.php

    Sửa findAuthorizedVideo($userId, $videoId) và đọc ID người dùng từ phiên hiện có.

  3. Nhúng

    Trang bài học của bạn

    Dùng lại mã đánh dấu trình phát và giữ videoId đã chọn trong endpoint phiên.

cd examples/sdk/php
composer install
# Set server credentials and DRMX_LOCAL_DEMO=1 for a localhost demo only.
php -S 127.0.0.1:8106 index.php

Lần thử đầu tiên, thay your-published-content-id trong findAuthorizedVideo. Mở http://127.0.0.1:8106/?videoId=1 và dùng Local demo sign in. PHP cần hỗ trợ cURL và ZIP; dùng PHP 8.2 trở lên.

Trong ứng dụng thực tế, thay hàm demo bằng truy vấn của bạn. Lệnh gọi lớp truy cập dữ liệu sau chỉ là ví dụ; hãy triển khai bằng cơ sở dữ liệu của bạn:

function findAuthorizedVideo(string $userId, string $videoId): ?array {
    $video = customerFindAuthorizedVideo($userId, $videoId);
    if ($video === null) return null;
    return ['contentId' => $video['drmx_content_id'],
            'contentType' => 'vod', 'title' => $video['title'],
            'policy' => 'multi-tier-standard'];
}

Đọc $userId từ xác thực máy chủ thông thường. Giữ kiểm tra origin, xác minh yêu cầu và so sánh chính xác nội dung, loại trong ví dụ. Chọn chính sách khớp nội dung đã xuất bản. PlaybackClient thực hiện yêu cầu DRM-X; nó không thể suy ra quy tắc mua hàng của bạn.

Ngôn ngữ khác và tích hợp API#

Go, Ruby và các ngôn ngữ máy chủ khác có thể gọi API phiên phát sau khi xác thực người dùng và kiểm tra quyền nội dung. Bản này không có thư viện SDK Go hoặc Ruby. Ưu tiên SDK đi kèm cho bảy cách tích hợp nêu trên.

Kiểm tra trước khi đưa vào vận hành#

  • Đăng nhập bằng người dùng được phép và phát video đã xuất bản trên trình duyệt được hỗ trợ.
  • Thử người chưa đăng nhập và chưa thanh toán, rồi thu hồi quyền hoặc cho quyền hết hạn. Yêu cầu phiên mới phải bị từ chối.
  • Thử đổi Content ID trong trình duyệt hoặc ID video của trang. Máy chủ phải kiểm tra lựa chọn mới.
  • Đặt đúng origin HTTPS công khai, giữ bảo vệ phiên/CSRF của framework và tắt mã danh tính demo.

Phiên và giấy phép DRM hiện có có thời hạn riêng. Yêu cầu mới kiểm tra thay đổi quyền nhưng không xóa giấy phép đã cấp.

PHP: chạy trang demo đầy đủ#

Thử demo PHP trực tuyến · Tải demo PHP đầy đủ · SHA-256

Chọn ví dụ PHP SDK ở trên để tích hợp nhỏ qua Composer vào trang hiện có. Chọn bản demo đầy đủ nếu cần một trang chạy ngay với ví dụ danh sách phát, proxy token và chẩn đoán. Demo đầy đủ dùng bộ tích hợp mã nguồn, cần PHP 8.2+ và cURL nhưng không cần Composer hoặc cơ sở dữ liệu. Cả hai giữ thông tin xác thực trên máy chủ và yêu cầu bạn triển khai kiểm tra quyền.

  1. Lần phát đầu tiênconfig/drmx.php

    Đặt siteId, siteKey, accessKey, content.id, content.type và licensePolicyTemplate phù hợp. Giữ phần còn lại của mảng.

  2. Khách hàng của bạnsrc/bootstrap.php

    Kết nối authenticated_user_id() với đăng nhập; thay user_can_play_content() bằng kiểm tra hiện tại về giao dịch mua, thành viên hoặc đăng ký khóa học.

  3. Danh mục video của bạnsrc/bootstrap.php + public/index.php

    Thay hàm hỗ trợ danh mục demo bằng truy vấn video hiện có. Chỉ hiển thị Content ID và loại được phép; giữ kiểm tra máy chủ cho mọi yêu cầu phiên.

# Windows, inside the extracted drmx-php-sample folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\run-local.ps1
# macOS / Linux:
bash ./run-local.sh

Mở http://127.0.0.1:8086/ và nhấn Play. Phát trực tuyến tự tìm manifest đã đăng ký. Demo cục bộ đăng nhập một người xem thử; đây chỉ là kiểm tra phát lần đầu.

Cho trang thực tế, đặt demo.allowLogin, demo.autoAuthenticateLocalhost và demo.autoAuthenticatePublicDemo thành false trong config/drmx.php, hoặc tắt các biến tiến trình tương ứng. Dùng đăng nhập và kiểm tra quyền hiện tại của bạn; không dùng danh sách quyền trong phiên demo làm cơ sở dữ liệu mua hàng. public/api/playback-session.php và playback-release.php xử lý API phát; giữ kiểm tra yêu cầu và ràng buộc nội dung của chúng. Đặt thư mục gốc công khai là public/ và dùng định tuyến của máy chủ web. Trình khởi chạy đi kèm chỉ dùng để thử cục bộ.

Các hàm hỗ trợ danh mục là demo_content_id(), demo_content_type(), player_playlist() và configured_content(). Với trang có nhiều video, hãy lấy các giá trị này từ danh mục hiện có và kiểm tra quyền đối với đúng nội dung đã chọn. Không cần đồng bộ giao dịch mua vào bảng DRM-X. Giấy phép DRM đã cấp có thời hạn riêng; phiên mới sẽ kiểm tra lại quyền đã bị thu hồi hay chưa.

Xem README đi kèm để biết đầy đủ về chính sách, lưu trữ, proxy token và native offline. Trước phát hành, qua HTTPS và trình duyệt được hỗ trợ, thử phát được phép, người dùng bị từ chối hoặc thu hồi quyền, thay thế nội dung và Stop.

Một Content ID cho mọi loại lưu trữ#

Mã tích hợp streaming không cần nhập URL manifest. Với 1aicloud hoặc S3 đã cấu hình, DRM-X dùng URL phương tiện được lưu khi xuất bản gói. Nếu tải tệp mã hóa lên máy chủ riêng, trước hết đăng ký URL phương tiện DASH/HLS trong DRM-X. Sau đó dùng cùng Content ID trong PHP, ASP.NET hoặc tích hợp khác. Máy chủ vẫn phải kiểm tra quyền hiện tại của người dùng trước khi yêu cầu phát.

  1. Xuất bản hay đăng ký một lầnDRM-X content settings

    Xác nhận đã đăng ký đúng URL phương tiện DASH/HLS được bảo vệ cho Content ID của bạn.

  2. Kết nối trang web của bạn

    Callback kiểm tra quyền của bạn

    Kiểm tra đăng nhập và quyền mua, thành viên hoặc đăng ký khóa học. Trả về Content ID được phép.

  3. PhátDRM-X playback session

    DRM-X xác định gói đã xuất bản và trả về manifest phù hợp cùng DRM License Token.

Nếu không tìm thấy manifest đã đăng ký, sửa thông tin xuất bản hoặc đăng ký URL phương tiện trong DRM-X. Không dùng URL tùy ý do trình duyệt gửi lên làm địa chỉ dự phòng. Endpoint native offline của demo PHP đầy đủ là ví dụ nâng cao riêng; cách ánh xạ thủ công hiện tại được mô tả trong advanced/OFFLINE.md.