在MUD中发送手机验证码短信的接口

根据国家法律法规,要求网络用户实名制,而使用手机号码注册可以满足国家相关法律法规的网络实名制要求。在MUD中绑定手机号也是推荐的行为,而且也可以通过手机号找回密码等。

怎么在MUD中发送手机验证码短信呢?实现起来非常简单,通过socket调用短信发送API接口即可。这里直接上示例代码:

/**
 * @file sms.c 短信验证码接口
 * @author 雪风@mud.ren
 * @brief https://apis.baidu.com/store/detail/b1a3e224-2faa-462c-9075-8a42fc1e9e16
 * @version 1.0
 *
 * @copyright Copyright (c) 2021 mud.ren
 *
 */
#include <ansi.h>

#define STREAM 1
#define EESUCCESS 1

nosave string host = "gwgp-wtxhytukujk.n.bdcloudapi.com";
nosave string addr = "153.37.235.160 80";
nosave string path = "/chuangxin/dxjk";
nosave string AppCode = env("AppCode");
nosave mapping status = ([]);
nosave object receiver;

protected void write_data(int fd)
{
    socket_write(fd, status[fd]["http"]);
}

protected void receive_data(int fd, mixed result)
{
    int n = strsrch(result, "{");

    if (n > 0)
    {
        result = json_decode(trim(result[n..]));
        // debug_message(sprintf("%O", result));
        if (result["ReturnStatus"] == "Success")
        {
            tell_object(receiver, BCYN "短信验证码已发送,请注意查收~\n" NOR);
        }
    }

    // 释放连接
    socket_close(fd);
}

protected void receive_callback(int fd, mixed result, string addr)
{
}

protected void socket_shutdown(int fd)
{
    socket_close(fd);
}

// 发送短信
void sms(object me, string code, string mobile)
{
    int fd;
    int ret;
    string tpl = "【雪风】你的验证码是:" + code + ",请勿泄漏于他人!";
    string arg = "?content=" + tpl + "&mobile=" + mobile;

    receiver = me;

    fd = socket_create(STREAM, "receive_callback", "socket_shutdown");
    status[fd] = ([]);
    status[fd]["http"] = "GET " + path + arg + " HTTP/1.1\nHost: " + host + "\nContent-Type: application/json;charset=UTF-8\nX-Bce-Signature: AppCode/" + AppCode + "\r\n\r\n";

    ret = socket_connect(fd, addr, "receive_data", "write_data");
    if (ret != EESUCCESS)
    {
        tell_object(receiver, "服务器连接失败。\n");
        socket_close(fd);
    }
}

这里直接使用了百度API商城中的短信接口,很便宜,具体文档:https://apis.baidu.com/store/detail/b1a3e224-2faa-462c-9075-8a42fc1e9e16

可以把这个文件做为守护进程SMS_D,在游戏中调用接口发送短信:SMS_D->sms(user,"1234","13800138000")即可,你可以把生成的验证码做为临时存档变量存在玩家身上,验证完成后清除,具体实现就不多说了。

炎黄MUD中有手机绑定演示,可以体验: file

如果不想自己购买短信包,想直接使用示例代码发短信的,可以找我要AppCode,只是短信模版只能为【雪风】你的验证码是:" + code + ",请勿泄漏于他人!code为数字验证码。

京ICP备13031296号-4