ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して WeChat アプレット SMS 検証コードを実装するためのヒント

PHP を使用して WeChat アプレット SMS 検証コードを実装するためのヒント

WBOY
WBOYオリジナル
2023-06-01 09:42:052689ブラウズ

WeChat ミニ プログラムの人気に伴い、より便利なエクスペリエンスをユーザーに提供する開発プラットフォームとして WeChat ミニ プログラムを使用する開発者が増えています。中でもSMS認証コードは、ユーザー登録やログインなどの場面で欠かせないものです。この記事では主に、PHP を使用して WeChat ミニ プログラムの SMS 確認コードを実装する方法を紹介します。

1. WeChat access_token の取得

WeChat API を使用する前に、まず access_token を取得する必要があります。 Access_token は WeChat API の呼び出し資格情報です。WeChat API を呼び出すたびに、access_token をリクエスト ヘッダーに含める必要があります。具体的な取得方法は次のとおりです。

  1. WeChat パブリック プラットフォームでミニ プログラムを作成し、ミニ プログラムの開発設定で appId と appSecret を確認します。
  2. appId と appSecret に基づいて HTTP GET リクエストを送信して、access_token を取得します。具体的なコードは次のとおりです。
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
$res = json_decode(file_get_contents($url), true);
$access_token = $res['access_token'];

2. ランダムな検証コードを生成します

ランダムな検証コードを生成するプロセスは非常に簡単で、PHP の組み込み rand 関数を使用するだけです。 。具体的なコードは次のとおりです:

$code = rand(1000, 9999);

3. SMS API を呼び出して検証コードを送信します

access_token を取得してランダムな検証コードを生成した後、SMS API を呼び出して送信できます。確認コード。ここでは Tencent Cloud SMS を例として取り上げますが、他の SMS サービス プロバイダーも同様です。

  1. Tencent Cloud SMS コンソールでアプリケーションを作成し、アプリケーション ID、アプリケーション キー、SMS テンプレート ID を取得します。
  2. アプリケーション ID とアプリケーション キーに基づいて署名を生成し、SMS テンプレート ID とランダムな検証コードに基づいて SMS コンテンツを生成します。
  3. Tencent クラウド SMS API を使用してテキスト メッセージを送信します。具体的なコードは次のとおりです:
// 生成签名
$timestamp = time();
$sig = md5("appkey=".$appkey."&timestamp=".$timestamp);

// 生成短信内容
$content = "【签名】验证码为:".$code.",有效期5分钟,请勿泄露。如非本人操作,请忽略本短信。";

// 发送短信
$url = "https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=".$sdkappid."&random=".rand();
$data = array(
    "tel" => array("nationcode" => "86", "mobile" => $mobile),
    "type" => 0,
    "msg" => $content
);
$data = json_encode($data);
$header = array(
    "Content-type: application/json",
    "Authorization: ".$sig,
    "Timestamp: ".$timestamp
);
$options = array(
    "http" => array(
        "method" => "POST",
        "header" => implode("
", $header),
        "content" => $data
    )
);
$res = json_decode(file_get_contents($url, false, stream_context_create($options)), true);

4. 検証コードを Redis に保存します

検証コードの有効期間を確保するには、生成されたランダムなコードを保存する必要があります。確認コードを Redis に送信し、有効期間を設定します。具体的なコードは次のとおりです。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->setex($mobile, 300, $code);

5. 完全なコード

function send_sms($mobile, $appid, $appsecret, $sdkappid, $appkey, $templateid)
{
    // 获取access_token
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
    $res = json_decode(file_get_contents($url), true);
    $access_token = $res['access_token'];

    // 生成随机验证码
    $code = rand(1000, 9999);

    // 发送短信
    $timestamp = time();
    $sig = md5("appkey=".$appkey."&timestamp=".$timestamp);
    $content = "【签名】验证码为:".$code.",有效期5分钟,请勿泄露。如非本人操作,请忽略本短信。";
    $url = "https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=".$sdkappid."&random=".rand();
    $data = array(
        "tel" => array("nationcode" => "86", "mobile" => $mobile),
        "type" => 0,
        "msg" => $content
    );
    $data = json_encode($data);
    $header = array(
        "Content-type: application/json",
        "Authorization: ".$sig,
        "Timestamp: ".$timestamp
    );
    $options = array(
        "http" => array(
            "method" => "POST",
            "header" => implode("
", $header),
            "content" => $data
        )
    );
    $res = json_decode(file_get_contents($url, false, stream_context_create($options)), true);

    // 保存验证码到Redis
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    $redis->setex($mobile, 300, $code);

    return array("code" => $code);
}

6. 概要

この記事では、PHP を使用して WeChat ミニ プログラムの SMS 確認コードを実装する方法を紹介します。 access_token の取得を含む、ランダムな検証コードを生成し、SMS API を呼び出して検証コードを送信し、検証コードを Redis に保存します。これらのヒントは WeChat ミニ プログラムに適用されるだけでなく、他の種類のアプリケーションにも使用できます。この記事が皆さんのお役に立てば幸いです。

以上がPHP を使用して WeChat アプレット SMS 検証コードを実装するためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。