Petua untuk melaksanakan kod pengesahan SMS applet WeChat menggunakan PHP

WBOY
Lepaskan: 2023-06-01 10:48:01
asal
2695 orang telah melayarinya

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'];
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan