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

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

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

/*
 * @Author: 雪风@mud.ren
 * @Date: 2022-05-12 22:19:07
 * @LastEditTime: 2022-05-15 14:34:03
 * @LastEditors: 雪风
 * @Description: 短信验证码守护进程
 *  https://apis.baidu.com/store/detail/b1a3e224-2faa-462c-9075-8a42fc1e9e16
 */
inherit CORE_HTTP;

#include <ansi.h>

nosave string Url = "http://gwgp-wtxhytukujk.n.bdcloudapi.com/chuangxin/dxjk";
nosave string AppCode = "你的短信AppCode";
nosave object Receiver;

protected void response(mixed result)
{
    int n = strsrch(result, "{");
    Debug && debug_message("response: " + result);
    if (n > 0)
    {
        result = json_decode(trim(result[n..]));
        Debug && debug_message(sprintf("%O", result));
        if (result["ReturnStatus"] == "Success")
        {
            tell_object(Receiver, BCYN "消息已发送,请注意查收短信。\n" NOR);
        }
        else
        {
            tell_object(Receiver, BRED + result["Message"] + NOR "\n");
        }
    }
}

// 发送短信
void sms(object me, mixed code, mixed mobile)
{
    string tpl;

    Receiver = me;
    // Debug = 1;
    if (intp(code))
    {
        tpl = "【雪风】你的验证码是:" + code + ",请勿泄漏于他人!";
    }
    else
    {
        tpl = code;
    }

    Http::get(Url, (["content":tpl, "mobile":mobile]), (["Content-Type":"application/json;charset=UTF-8", "X-Bce-Signature":"AppCode/" + AppCode]));

    // 记录日志
    log_file("mobile", "[" + ctime() + "]" + mobile + "\t" + me->short() + "\t" + query_ip_number(me) + "\n");
}

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

因为是通过socket发起http请求,为了方便使用这里把HTTP功能单独封装为模块CORE_HTTP(点击查看源码),如果你使用了MUDCORE框架可直接继承,否则可以直接下载代码放到你的LIB中,关于此模块的使用文档参考:https://bbs.mud.ren/threads/255

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

炎黄MUD中有手机绑定演示,可以体验指令mobilefile

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

京ICP备13031296号-4