新增簡訊簽名
新建 SmsSignRequestModel.php
touch app/Models/TencentCloud/SmsSignRequest.php # win 系統請將 "/" 更改成 "\", 或直接手動建立檔案
/* app/Http/Requests/Api/SmsSignRequest.php */
<?php
namespace App\Http\Models\TencentCloud;
use TencentCloud\Sms\V20190711\Models\AddSmsSignRequest;
class SmsSignRequest
{
/**
* 新增簡訊簽名 AddSmsSign
*
* @param String $signName 簽名名稱
* @param integer $signType 簽名型別。其中每種型別後面標註了其可選的 DocumentType(證明型別):
* 0:公司(0,1,2,3)。
* 1:APP(0,1,2,3,4) 。
* 2:網站(0,1,2,3,5)。
* 3:公眾號或者小程式(0,1,2,3,6)。
* 4:商標(7)。
* 5:政府/機關事業單位/其他機構(2,3)。
* 注:必須按照對應關係選擇證明型別,否則會稽核失敗。
* @param integer $documentType 證明型別:
* 0:三證合一。
* 1:企業營業執照。
* 2:組織機構程式碼證照。
* 3:社會信用程式碼證照。
* 4:應用後臺管理截圖(個人開發APP)。
* 5:網站備案後臺截圖(個人開發網站)。
* 6:小程式設定頁面截圖(個人認證小程式)。
* 7:商標註冊書。
* @param integer $international 是否國際/港澳臺簡訊:
* 0:表示國內簡訊。
* 1:表示國際/港澳臺簡訊。
* @param integer $usedMethod 簽名用途:
* 0:自用。
* 1:他用。
* @param String $proofImage 簽名對應的資質證明圖片需先進行 base64 編碼格式轉換,將轉換後的字串去掉字首data:image/jpeg;base64,再賦值給該引數。
* @param String $commissionImage 委託授權證明。選擇 UsedMethod 為他用之後需要提交委託的授權證明。
* 圖片需先進行 base64 編碼格式轉換,將轉換後的字串去掉字首data:image/jpeg;base64,再賦值給該引數。
* 注:只有 UsedMethod 在選擇為 1(他用)時,這個欄位才會生效。
* @param String $remark 簽名的申請備註。
* @return void
*/
public function addSmsSign(String $signName = '', int $signType = 0, int $documentType = 0, int $international = 0, int $usedMethod = 0, String $proofImage = '', String $commissionImage = '', String $remark)
{
// 例項化一個 sms 新增簽名請求物件,每個介面都會對應一個request物件。
$req = new AddSmsSignRequest();
$req->SignName = $signName;
$req->SignType = $signType;
$req->DocumentType = $documentType;
$req->International = $international;
$req->UsedMethod = $usedMethod;
$req->ProofImage = $proofImage;
$req->CommissionImage = $commissionImage;
$req->Remark = $remark;
return $req;
}
}
建立新增簡訊簽名的驗證類
php artisan make:request Api/SmsSignRequest
/* app/Http/Requests/Api/SmsSignRequest.php */
<?php
namespace App\Http\Requests\Api;
use Illuminate\Http\Request;
class SmsSignRequest extends FormRequest
{
protected $addSignRules = [
'signName' => 'required|String',
'signType' => 'required|integer',
'documentType' => 'required|integer',
'international' => 'required|integer',
'usedMethod' => 'required|integer',
'proofImage' => 'required|String',
'commissionImage' => 'String',
'remark' => 'String'
];
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(Request $request)
{
switch ($request->method) {
case 'POST':
$rules = $this->addSignRules;
break;
default:
$rules = $this->addSignRules;
break;
}
return $rules;
}
}
新建簡訊簽名控制器
php artisan make:controller Api/SmsSignController
/* app/Http/Controllers/Api/SmsSignController.php */
<?php
namespace App\Http\Controllers\Api;
use App\Http\Requests\Api\SmsSignRequest;
use App\Http\Models\TencentCloud\SmsSignRequest as SmsSignRequestModel;
use TencentCloud\Common\Exception\TencentCloudSDKException;
class SmsSignController extends Controller
{
public function addSign(SmsSignRequest $request,SmsSignRequestModel $addSmsSignRequestModel)
{
try {
$sms = app('tencentcloudSms');
$req = $addSmsSignRequestModel->addSmsSign($request->signName, $request->signType, $request->documentType, $request->international, $request->usedMethod, $request->proofImage, $request->commissionImage ?? '', $request->remark ?? '');
// 通過client物件呼叫DescribeInstances方法發起請求。注意請求方法名與請求物件是對應的
// 返回的resp是一個DescribeInstancesResponse類的例項,與請求物件對應
$resp = $sms->AddSmsSign($req);
list($AddSignStatus, $RequestId) = array_values(json_decode($resp->toJsonString(), true));
if ($AddSignStatus['SignId'] && $AddSignStatus['SignApplyId']) {
return response()->json([
'key' => $RequestId,
'code' => 0,
'message' => 'Ok',
'signId' => $AddSignStatus['SignId']
])->setStatusCode(201);
}
} catch (TencentCloudSDKException $e) {
return response()->json([
'key' => $e->getRequestId(),
'code' => $e->getErrorCode(),
'message' => $e->getMessage()
])->setStatusCode(500);
}
}
}
新增路由
/* routes/api.php */
<?php
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::prefix('v1')->namespace('Api')->name('api.v1.')->group(function () {
// 傳送簡訊
Route::post('sendsms', 'SmsController@send')
->name('sms.send');
// 新增簡訊簽名
Route::post('smsSign', 'SmsSignController@addSign')
->name('sms.sign.add');
});
測試
通過 PostMan 測試一下:
本作品採用《CC 協議》,轉載必須註明作者和本文連結