美文网首页
腾讯云市场自动交付接入实践

腾讯云市场自动交付接入实践

作者: 徐先生MrXu | 来源:发表于2019-12-25 15:10 被阅读0次

由于最近公司自主研发的第三方平台上线,需要上架腾讯云市场并打通商家入驻,试用,续费逻辑,我们开始了腾讯云市场自动交付api的接入
在线文档

流程

1.准备一个接收腾讯云事件的地址
2.在接收事件url中,实现如下图身份校验等六个接口


实现接口

3.进入腾讯云后台卖家控制台,配置参数如下图


参数配置
其中【发货url】即我们准备的接收事件url,【发货token】我们可以自行生成,用在接口中校验签名

开发

直接上代码
注:我已将所有业务方面的代码抽离了出去,所以本文提供的代码仅供参考,并不能直接运行使用,请结合自身项目情况实现接口

public function ship(Request $request){
        $param = $request->param();
        switch ($param['action']){
            case 'verifyInterface':
                //身份校验接口
                if(!$param['signature'] || !$param['timestamp'] || !$param['eventId']){
                    return 'param is miss';
                }
                $token = '这里换成你自己的token';
                $check = checkSignature($param['signature'],$token,$param['timestamp'],$param['eventId']);//这里使用的是腾讯云提供的签名校验函数
                if(!$check){
                    return 'Verification failed';
                }else{
                    $post_data = [
                        'echoback'=>$param['echoback']
                    ];
                    return json_encode($post_data);
                }
                break;
            case 'createInstance':
                $productInfo = $param['productInfo'];
                $signid = '我们生成11位的signid作为用户实例的标识';//同时我们需要向腾讯云返回一个免登后台地址,在这里我选用signid作为免登的token
                if($productInfo['isTrial'] == 'true'){
                    //试用版
                    //这里处理业务逻辑,创建商家,设置到期时间
                }else{
                    //正式版
                    $timeUnit = $productInfo['timeUnit'];
                    $timeSpan = $productInfo['timeSpan'];
                    switch ($timeUnit){
                        case 'y':
                            //购买年
                            $maturity_date = date('Y-m-d',strtotime("+".$timeSpan." year"));
                            break;
                        case 'm':
                            //购买月
                            $maturity_date = date('Y-m-d',strtotime("+".$timeSpan." month"));
                            break;
                        case 'd':
                            //购买日
                            $maturity_date = date('Y-m-d',strtotime("+".$timeSpan." day"));
                            break;
                    }
                  //这里根据腾讯云接口参数,获取商家购买时长,并处理业务逻辑
                }
               //这里构造个腾讯云接口规定的返回参数,返回
                $url = Config::base_uri;
                $post_data = [
                    'signId'=>$signid,//返回给腾讯云实例标识,之后的接口腾讯云会带着这个参数
                    'appInfo'=>[
                        'website'=>$url,//网站地址
                        'authUrl'=>$url.'/business?token='.$signid //后台免登地址
                    ],
                ];
                return json_encode($post_data);
                break;
            case 'renewInstance':
                //实例续费通知接口  
                $signid = $param['signId'];//这里是实例创建的时候我们生成的实例id,在这里返回,我们接收到之后处理对应商家的到期时间
                $instanceExpireTime = $param['instanceExpireTime'];//这个参数是datetime格式的实例到期日期,我们通过此参数修改数据库内的商家到期时间
                $data = [
                        'maturity_date'=>date('Y-m-d',strtotime($instanceExpireTime))
                    ];
                $post_data = [
                    'success'=>"true",
                ];
                return json_encode($post_data);
                break;
            case 'modifyInstance':
                //实例配置变更通知接口 这个接口是在商家试用转正式版支付完成时调用的
                $signid = $param['signId'];
                $instanceExpireTime = $param['instanceExpireTime'];
                 $data = [
                        'maturity_date'=>date('Y-m-d',strtotime($instanceExpireTime))
                    ];
                $post_data = [
                    'success'=>"true",
                ];
                return json_encode($post_data);
                break;
            case 'expireInstance':
                //实例过期通知接口 
                $post_data = [
                    'success'=>"true",
                ];
                return json_encode($post_data);
                break;
            case 'destroyInstance':
                //实例销毁通知接口
                $post_data = [
                    'success'=>"true",
                ];
                return json_encode($post_data);
                break;
        }
    }

/**
     * 腾讯云签名校验
     * @param $signature
     * @param $token
     * @param $timestamp
     * @param $eventId
     * @return bool
     */
    function checkSignature($signature, $token, $timestamp, $eventId)
    {
        $currentTimestamp = time();
        if ($currentTimestamp - $timestamp > 30) {
            return false;
        }
        $timestamp = (string)$timestamp;
        $eventId = (string)$eventId;
        $params = array($token, $timestamp, $eventId);
        sort($params, SORT_STRING);
        $str = implode('', $params);
        $requestSignature = hash('sha256', $str);
        return $signature === $requestSignature;
    }

在以上接口实现完毕之后,我们就可以登录卖家控制台配置参数并进行接口测试了
在接口测试无误后,即可创建商品,并提交审核,上架。

结语

分享几个在开发时遇到的有趣的事情


1577256946.jpg

看到了吗,腾讯云提供的测试数据有拼写错误,我在使用postman进行开发的时候用了测试数据进行开发,结果咖喱给给了~~
大家在开发的时候一定要以文档中的【请求参数】为准

1577257569(1).jpg

这个openId参数在用户没有接入开发平台时是没有的,所以并不能使用这个作为用户购买实例的标识,我们选择生成11位的不重复字符串signid返回给腾讯云作为实例标识
之后的接口腾讯云会带着signid请求,我们接收signid并处理不同接口的逻辑

以上就是我在腾讯云市场自动交付开发的经验,希望可以帮助到大家

相关文章

  • 腾讯云市场自动交付接入实践

    由于最近公司自主研发的第三方平台上线,需要上架腾讯云市场并打通商家入驻,试用,续费逻辑,我们开始了腾讯云市场自动交...

  • 腾讯云IM接入案列(一)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前端...

  • 腾讯云IM接入案列(二)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 上面...

  • 腾讯云IM接入案例(三)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 本篇内容 ...

  • 腾讯云IM接入案例(四)

    合集 腾讯云IM接入案列(一)腾讯云IM接入案列(二)腾讯云IM接入案列(三)腾讯云IM接入案列(四) 前言 前三...

  • iOS 腾讯云Web端接入短信人机验证

    由于腾讯云目前暂无支持APP直接SDK接入,APP要接入只能通过web的形式接入。详情请参考下方腾讯云链接:htt...

  • 腾讯IM推送问题怎么查?

    前言:对于新接入腾讯云IM即时通信的开发者来说,接入过程中,难免会遇到一些问题,接下来笔者将针对使用腾讯云IM接入...

  • 腾讯云短信接入

    因公司需要短信提醒功能,公司使用了腾讯云的短信包,对于第三方的短信开发功能。接入腾讯云短信还是很简单的,大致的思路...

  • 先接入腾讯云直播后再接入TIM聊天遇到的坑

    因项目需求先接入了腾讯云直播功能,后期加入tim聊天的tuikit库时遇到一些问题。 首先查看一下我们接入腾讯云时...

  • 爬虫实战:爬虫之 web 自动化终极杀手 ( 上)

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:陈象 爬虫之web自动化终极杀手 9/14/2...

网友评论

      本文标题:腾讯云市场自动交付接入实践

      本文链接:https://www.haomeiwen.com/subject/igjcoctx.html