Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua untuk melaksanakan kod pengesahan SMS applet WeChat menggunakan PHP

Petua untuk melaksanakan kod pengesahan SMS applet WeChat menggunakan PHP

WBOY
WBOYasal
2023-06-01 09:42:052687semak imbas

Dengan populariti program mini WeChat, semakin ramai pembangun mula menggunakan program mini WeChat sebagai platform pembangunan untuk memberikan pengguna pengalaman yang lebih mudah. Antaranya, kod pengesahan SMS adalah bahagian yang sangat diperlukan dalam pendaftaran pengguna, log masuk dan senario lain. Artikel ini terutamanya memperkenalkan cara menggunakan PHP untuk melaksanakan kod pengesahan SMS untuk program mini WeChat.

1. Dapatkan access_token WeChat

Sebelum menggunakan WeChat API, anda perlu mendapatkan access_token terlebih dahulu. Access_token ialah bukti kelayakan panggilan untuk WeChat API Setiap kali anda memanggil WeChat API, access_token perlu dibawa dalam pengepala permintaan. Kaedah pemerolehan khusus adalah seperti berikut:

  1. Buat program mini dalam platform awam WeChat, dan kemudian lihat appId dan appSecret dalam tetapan pembangunan program mini.
  2. Hantar permintaan HTTP GET berdasarkan appId dan appSecret untuk mendapatkan access_token. Kod khusus adalah seperti berikut:
$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. Hasilkan kod pengesahan rawak

Proses menghasilkan kod pengesahan rawak adalah sangat mudah, hanya gunakan fungsi rand terbina dalam PHP . Kod khusus adalah seperti berikut:

$code = rand(1000, 9999);

3 Panggil API SMS untuk menghantar kod pengesahan

Selepas mendapatkan akses_token dan menjana kod pengesahan rawak, anda boleh menghubungi API SMS untuk menghantar. kod pengesahan. Di sini kami mengambil Tencent Cloud SMS sebagai contoh, dan pembekal perkhidmatan SMS lain adalah serupa.

  1. Buat aplikasi dalam konsol SMS Tencent Cloud dan dapatkan id aplikasi, kunci aplikasi dan id templat SMS.
  2. Jana tandatangan berdasarkan ID aplikasi dan kunci aplikasi, dan hasilkan kandungan SMS berdasarkan ID templat SMS dan kod pengesahan rawak.
  3. Gunakan Tencent Cloud SMS API untuk menghantar mesej teks. Kod khusus adalah seperti berikut:
// 生成签名
$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. Simpan kod pengesahan ke Redis

Untuk memastikan tempoh sah kod pengesahan, anda perlu menyimpan rawak yang dijana kod pengesahan kepada Redis dan tetapkan tempoh sah. Kod khusus adalah seperti berikut:

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

5. Kod lengkap

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. Ringkasan

Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan kemahiran pengesahan SMS applet WeChat kod, termasuk mendapatkan access_token , menjana kod pengesahan rawak, hubungi API SMS untuk menghantar kod pengesahan dan menyimpan kod pengesahan ke Redis. Petua ini digunakan bukan sahaja untuk program mini WeChat, tetapi juga untuk jenis aplikasi lain. Semoga artikel ini bermanfaat kepada semua.

Atas ialah kandungan terperinci Petua untuk melaksanakan kod pengesahan SMS applet WeChat menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn