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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!