我在做畢設,項目中想用短信驗证功能,就找到了阿裡大魚,價格貌似目前最低,其他什麽都好弄,就是導入到項目中,不知道怎麽用,一直報錯,網上查了,大都是和文档案例一樣,沒用,tp裡還有專欄範例,估計都是舊版本,也沒用。最後搞出來了,特在此記錄一下。
下載SDK,解壓引入Autoload.php、TopSdk.php及aliyun和top兩個文档夾。
我引入的位置是 APP_PATH/Common/Lib/Alidayu/,不動tp文档我覺得好些。
新建一個類文档 SendMSM.class.php,這個根據自己需求來。
<?php
namespace Lib\Alidayu;
include('TopSdk.php');
// 就是下面兩句把我搞慘了,別嫌棄,我只是入門了而已
use TopClient;
use AlibabaAliqinFcSmsNumSendRequest;
class SendMSM
{
public function send($recNum='', $smsParam='', $smsTemplateCode='SMS_8525079', $smsFreeSignName='短信測試'){
$c = new TopClient;
$c->format = "json";
$c->appkey = C('AlidayuAppKey');
$c->secretKey = C('AlidayuAppSecret');
$req = new AlibabaAliqinFcSmsNumSendRequest;
//$req->setExtend("123456");
$req->setSmsType("normal");
$req->setSmsFreeSignName($smsFreeSignName);
$req->setSmsParam($smsParam);
$req->setRecNum($recNum);
$req->setSmsTemplateCode($smsTemplateCode);
$resp = $c->execute($req);
return $resp;
}
}我把AppKey 和 secret 放到了單獨的配置文档,以便後期重置了可以在後台修改。
然後就是使用了,
<?php
namespace Admin\Controller;
use Think\Controller;
use Lib\Alidayu\SendMSM;
class IndexController extends Controller
{
public function index()
{
$this->sendMSM();
}
protected function sendMSM()
{
$alidayu = new SendMSM();
$result = $alidayu->send('13000000000','{"code":"123456"}');
dump($result);
}
}測試結果:
object(stdClass)[11] public 'result' => object(stdClass)[12] public 'err_code' => string '0' (length=1) public 'model' => string '101550887105^1102084861016' (length=26) public 'success' => boolean true public 'request_id' => string '12cl9hupqvkgh' (length=13)