Laravel6 使用腾讯云短信-修改短信签名
Laravel6 使用腾讯云短信
修改短信签名
SmsSignRequestModel.php
增加modifySmsSign
方法
/* app/Http/Requests/Api/SmsSignRequest.php */
<?php
namespace App\Http\Models\TencentCloud;
use TencentCloud\Sms\V20190711\Models\AddSmsSignRequest;
use TencentCloud\Sms\V20190711\Models\ModifySmsSignRequest;
class SmsSignRequest
{
·
·
·
/**
* 修改短信签名 ModifySmsSign
*
* @param integer $signId 待修改的签名 ID。
* @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 modifySmsSign(int $signId, String $signName = '', int $signType = 0, int $documentType = 0, int $international = 0, int $usedMethod = 0, String $proofImage = '', String $commissionImage = '', String $remark)
{
// 实例化一个 sms 修改签名请求对象,每个接口都会对应一个request对象。
$req = new ModifySmsSignRequest();
$req->SignId = $signId;
$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;
}
}
短信签名验证类增加修改签名的验证规则
/* app/Http/Requests/Api/SmsSignRequest.php */
<?php
namespace App\Http\Requests\Api;
use Illuminate\Http\Request;
class SmsSignRequest extends FormRequest
{
·
·
·
protected $modifySignRules = [
'signId' => 'required|integer',
'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;
case 'PUT':
$rules = $this->modifySignRules;
break;
default:
$rules = $this->addSignRules;
break;
}
return $rules;
}
}
SmsSignController.php
增加修改签名方法
/* 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 modifySign(SmsSignRequest $request,SmsSignRequestModel $modifySmsSignRequestModel)
{
try {
$sms = app('tencentcloudSms');
$req = $modifySmsSignRequestModel->modifySmsSign($request->signId, $request->signName, $request->signType, $request->documentType, $request->international, $request->usedMethod, $request->proofImage, $request->commissionImage ?? '', $request->remark ?? '');
// 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的
// 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应
$resp = $sms->ModifySmsSign($req);
list($ModifySignStatus, $RequestId) = array_values(json_decode($resp->toJsonString(), true));
if ($ModifySignStatus['SignId'] && $ModifySignStatus['SignApplyId']) {
return response()->json([
'key' => $RequestId,
'code' => 0,
'message' => 'Ok',
'signId' => $ModifySignStatus['SignId']
]);
}
} 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');
// 修改短信签名
Route::put('smsSign', 'SmsSignController@modifySign')
->name('sms.sign.modify');
});
测试
通过 PostMan 测试一下:
本作品采用《CC 协议》,转载必须注明作者和本文链接