抖音团购券码核销 PHP TP5

 

抖音团购券码核销是指商家在抖音平台上发布的团购活动中,用户购买后会收到一个团购券码,商家需要对这些团购券码进行核销,确保用户在消费时享受团购优惠。

核销团购券码的步骤如下:

  1. 商家在抖音平台上发布团购活动,并设置相应的团购券码。
  2. 用户购买团购活动后,会收到一个团购券码,可以是数字、字母或二维码形式。
  3. 商家收到用户团购券码后,在抖音平台上进入核销界面。
  4. 商家输入或扫描用户的团购券码,系统会验证团购券码的有效性。
  5. 如果团购券码有效,商家将确认核销,确认后团购券码将变为已使用状态。
  6. 商家在完成核销后,用户可以在抖音平台上查看团购券码的使用情况。

通过团购券码核销,商家可以方便地管理团购活动的使用情况,并确保用户享受到相应的优惠。同时,用户可以通过团购券码核销的方式方便地使用团购券,享受到团购活动带来的优惠。

<?php

/*
 * 抖音店铺团购券核销
 * 
 */
class DouyinTest
{
    protected $Appid = '';//appid
    protected $AppSecret = '';//秘钥
    protected $pro_id = ''; // 门店id 需要抖音店铺id 否则提示商家授权

    /*
     *  这里是核销的方法
     */
    public function DouyinAfterVerification(){
        $encrypted_data = '100000000000000';   // code  格式 100000000000000
        $url = 'https://open.douyin.com/goodlife/v1/fulfilment/certificate/prepare/';
        $client_token = $this->getClientToken();
        if(!$client_token){
            die('token 获取失败');
        }
        $res = $this->prepareCertificate($client_token,'',$encrypted_data);
        $v = $res['data']['verify_token'];
        $code = $res['data']['certificates'][0]['encrypted_code'];
        $hexiao = $this->verifyCoupon($v,$client_token,$this->pro_id,[$code]);
        //核销成功后执行...
        //业务逻辑
        print_r($hexiao);
    }

    /**
     * @param $access_token
     * @param $encrypted_data
     * @param null $code
     * @return mixed
     * 通过code 核销券码准备
     */
    public function prepareCertificate($access_token, $encrypted_data, $code = null) {
        $url = 'https://open.douyin.com/goodlife/v1/fulfilment/certificate/prepare/';

        $params = [];
        if (!empty($encrypted_data)) {
            $params['encrypted_data'] = urlencode($encrypted_data);
        } elseif (!empty($code)) {
            $params['code'] = $code;
        } else {
            throw new Exception("encrypted_data 和 code 参数不能同时为空");
        }
        $back = $this->douyinRequest($url,$params,$access_token,0);
        return $back;
    }

    /**
     * @param $verifyToken
     * @param $client_token
     * @param $poiId
     * @param $encryptedCodes
     * @param null $codes
     * @param null $orderId
     * @param null $codeWithTimeList
     * @param null $voucher
     * @return mixed
     */
    public function verifyCoupon($verifyToken,$client_token, $poiId, $encryptedCodes, $codes = null, $orderId = null, $codeWithTimeList = null, $voucher = null) {
        $url = 'https://open.douyin.com/goodlife/v1/fulfilment/certificate/verify/';
        $data = array(
            'verify_token' => $verifyToken,
            'poi_id' => $poiId,
            'encrypted_codes' => $encryptedCodes,
            'codes' => $codes,
        );

        $response = $this->douyinRequest($url,$data,$client_token);
        return $response;
    }

    /**
     * @return mixed
     * 获取token
     */
    public function getClientToken(){
        //正式环境:https://open.douyin.com/oauth/client_token/
        //沙盒环境:https://open-sandbox.douyin.com/oauth/client_token/
        $url = 'https://open.douyin.com/oauth/client_token/';
        $param = [
            'client_key' => $this->Appid,
            'client_secret' => $this->AppSecret,
            'grant_type' => 'client_credential'
        ];

        $res = $this->requestUrl($url,$param);
        $back = json_decode($res,true);
        if($back['data']['error_code'] == 0){
            return $back['data']['access_token'];
        }

    }

    /** curl 提交*/
    public function requestUrl($url,$data=null,$https=true,$method='post'){
        //1.初始化url
        $ch = curl_init($url);
        //2.设置相关的参数
        //字符串不直接输出,进行一个变量的存储
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        //判断是否为https请求
        if($https === true){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }
        //判断是否为post请求
        if($method == 'post'){
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:multipart/form-data'));
        //3.发送请求
        $str = curl_exec($ch);
        //4.关闭连接
        curl_close($ch);
        //6.返回请求到的结果
        return $str;
    }


    /**
     * 抖音请求方法
     * @param $url
     * @param $client_token
     * @param array $data
     * @param int $is_post
     * @return mixed
     */
    public function douyinRequest($url,$data = [],$client_token = '',$is_post = 1){
        $headers = [
            'Content-Type: application/json',
            'access-token: ' . $client_token,
        ];
        $curl = curl_init();
        if($is_post){
            curl_setopt_array($curl, array(
                CURLOPT_URL => $url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => json_encode($data),
                CURLOPT_HTTPHEADER => $headers,
            ));
        }else{
            $data = http_build_query($data);
            curl_setopt_array($curl, [
                CURLOPT_URL => "$url?$data",
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_HTTPHEADER => $headers,
            ]);
        }
        $response = curl_exec($curl);
        curl_close($curl);
        return json_decode($response,true);
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值