E签宝的接口对接PHP代码演示

// 这是我用的laravel 自带的请求扩展 HTTP请求,你们如果有合适的这里不用看
// 发送http请求
    public function http_send($url,$data=[],$method="GET",$headers=[]){
        $client = new Client();
        $params = [];
        if($method == 'GET'){
            $params['query'] = $data;
        }elseif($method == 'POST'){
            $params['form_params'] = $data;
        }elseif($method == 'json'){
            $method="POST";
            $params['json'] = $data;
        }elseif($method == 'PUT'){
            // $params['json'] = $data;
        }
        if(!empty($headers)){
            $params['headers'] = $headers;
        }
        // dd($params);
        $response = $client->request($method,$url,$params);
       
        return $response->getBody();
    }
我说下我这边的步骤啊,就是思路,反正百度谷歌好久都没找到相关资料。(我是商家入驻的合同)

1、注册账号获取密钥
2、做好模版设计好(你也可以自己用api上传,我这边是直接先自己在后台设计好模版上传到E签宝上去的)
3、商家入驻的时候创建个人账号,创建机构账号
4、根据模版创建签约文件
5、一键发起签署

// 这里是我的代码
// e签宝
    public function eqb($m='sign',$data = []){
        $url = "https://openapi.esign.cn";
        $path = public_path('/eqb_token.txt');
        // $url = $this->get_eqb($m);
        $appid = 'xxx';
        $secret='xxx';
        $grantType = 'client_credentials';

        $params = [];
        $headers = ['Content-Type'=>'application/json','X-Tsign-Open-Token'=>'','X-Tsign-Open-App-Id'=>$appid];
        switch ($m) {
            case 'sign':
                    $url = $url.'/v1/oauth2/access_token';
                    $params = ['appId'=>$appid,'secret'=>$secret,'grantType'=>$grantType];
                    if(!is_file($path)){
                        $info = $this->http_send($url,$params);
                        $infos = $info->getContents();
                        $access_token = json_decode($infos,true)['data']['token'];
                        file_put_contents($path,$access_token);
                    }else{
                        $times = time()-filemtime($path);
                        if($times>7100){
                            $info = $this->http_send($url,$params);
                            $infos = $info->getContents();
                            $access_token = json_decode($infos,true)['data']['token'];
                            file_put_contents($path,$access_token);
                        }else{
                            $access_token = file_get_contents($path);
                        }
                    }
                    return $access_token;
                break;
            // 模版创建文件  cc64d30f82bb4fec8bd600aeb1b22b87   9b8ddb0a85664b0c9776bd304354dee4
            case 'createByTemplate':
                    $url = $url.'/v1/files/createByTemplate';
                    $access_token = $this->eqb('sign');
                    $headers['X-Tsign-Open-Token'] = $access_token;

                    $params['name'] = '签约合同';
                    $params['simpleFormFields'] = ['bc51106fd81e439191361db77832c79c'=>$data['store_company_name']]; //,'e17ec4b6183249ab912a1c856409e8c5'=>'印章'
                    $params['templateId'] = 'ca1158703413449394471a0ed2a8d5ea';
                    $info = $this->http_send($url,$params,'json',$headers);
                    $infos = $info->getContents();
                    $contents = json_decode($infos,true);
                    return $contents;
                break;
            // 模版文件查询
            case 'docTemplates':
                $url = $url.'/v1/docTemplates/ca1158703413449394471a0ed2a8d5ea';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $info = $this->http_send($url,$params,'GET',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true);
                return $contents;
            break;
            // 模版创建
        
            case 'createByUploadUrl':  // 9e2decbb266b4f89a74013ac3b45c76a
                $url = $url.'/v1/docTemplates/createByUploadUrl';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $params['contentMd5'] = 'Jtls1+T8iPbrj7FM4xfX1Q==';
                $params['contentType'] = 'application/octet-stream';
                $params['fileName'] = '开发合同书.doc';
                $params['convert2Pdf'] = 'true';

                $info = $this->http_send($url,$params,'json',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true);
                return $contents;
            break;
            // 模版组件创建
            case 'components':  // 9e2decbb266b4f89a74013ac3b45c76a
                $url = $url.'/v1/docTemplates/9e2decbb266b4f89a74013ac3b45c76a/components';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $params['structComponent'] = [
                    'type'  =>  1,
                    'context'   =>[
                        'label' =>  'name',
                        'required' =>  true,
                        'style' =>[
                            'width' =>  120.0,
                            'height' =>  50.0,
                        ],
                        'pos'   =>[
                            'page'  =>  1,
                            'x'     =>  199.0,
                            'y'     =>  699.0,
                        ],
                    ],
                ];
                $info = $this->http_send($url,$params,'json',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true);
                return $contents;
            break;
            // 个人账号创建
            case 'accounts':
                $url = $url.'/v1/accounts/createByThirdPartyUserId';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $params['thirdPartyUserId'] = $data['id_card_no'];
                $params['name'] = $data['legal_person'];
                $params['idType'] = 'CRED_PSN_CH_IDCARD';
                $params['idNumber'] = $data['id_card_no'];
                $params['mobile'] = $data['emergency_contact_phone'];
                $info = $this->http_send($url,$params,'json',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true);
                return $contents;
            break;
            // 企业账号创建
            case 'organizations':
                $url = $url.'/v1/organizations/createByThirdPartyUserId';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $params['thirdPartyUserId'] = $data['business_license_no'];
                $params['creator'] = $data['signerAccountId'];
                $params['name'] = $data['store_company_name'];
                $params['idType'] = 'CRED_ORG_USCC';
                $params['idNumber'] = $data['business_license_no'];
                $info = $this->http_send($url,$params,'json',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true); // orgId:f109d2c52fa14ab59fc87b055188f7df
                return $contents;
            break;

            // 开启签署流程
            case 'start':
                $url = $url.'/v1/signflows/083a234bea6f4c209381cca5217a5439/start';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $info = $this->http_send($url,$params,'PUT',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true); 
                return $contents;
            break;
            
            // 一步发起签署  
            case 'signflows':
                $url = $url.'/api/v2/signflows/createFlowOneStep';
                $access_token = $this->eqb('sign');
                $headers['X-Tsign-Open-Token'] = $access_token;

                $params['docs'][] = [
                    'fileId'    =>$data['fileId'],
                ];
                $params['flowInfo'] = [
                    'autoArchive'=>true,
                    'autoInitiate'=>true,
                    'businessScene' =>'入驻合同',

                ];
                $params['signers'] = [
                    [
                        // 'platformSign'=>true,
                        'signOrder'=>1,
                        'signerAccount'=>[
                            'signerAccountId'=>$data['signerAccountId'],
                            'authorizedAccountId'=>$data['authorizedAccountId'],
                        ],
                        'signfields'=>[
                            [
                                // 'autoExecute'=>true,
                                'actorIndentityType'=>2,
                                'fileId'=>$data['fileId'],
                                'posBean'=>[
                                    'posPage'=>1,
                                    'posX'=>440,
                                    'posY'=>440,
                                ],
     
                ];
                $info = $this->http_send($url,$params,'json',$headers);
                $infos = $info->getContents();
                $contents = json_decode($infos,true); // orgId:f109d2c52fa14ab59fc87b055188f7df
                return $contents;
            break;
        }

    }
调用情况
// An highlighted block
$data2 = $data;
$data2['signerAccountId'] = $helper_model->eqb('accounts',$data2)['data']['accountId']; // 创建个人账号
$data2['authorizedAccountId'] = $helper_model->eqb('organizations',$data2)['data']['orgId']; // 创建企业账号
$data2['fileId'] = $helper_model->eqb('createByTemplate',$data2)['data']['fileId']; // 创建文件
// return $this->error_msg($helper_model->eqb('createByTemplate',$data2)['data']['fileId']);exit;
$rs = $helper_model->eqb('signflows',$data2); // 发起签署

代码有点乱,希望有帮助

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值