· 5 years ago · Jun 03, 2020, 03:04 PM
1<?php namespace App\Services;
2
3use Illuminate\Http\Request;
4use Illuminate\Support\Facades\Auth;
5use Illuminate\Support\Facades\Log;
6
7/**
8 * Service gérant toute les opérations de Cheetah grâce à l'API CCMP
9 * url : https://apidoc.ccmp.eu/update-emailcampaigns/
10 */
11class CCMPService
12{
13 protected $arr_ret_sucess = [200, 201, 204];
14
15 // Tout les codes d'erreur en rapport avec l'API
16 protected $arr_ret_msg = [
17 0 => "Check for API Instability",
18 200 => 'Success with returned message',
19 204 => 'Success without returned message',
20 201 => 'Created',
21 400 => 'Bad request',
22 404 => 'Not found',
23 401 => 'Unauthorized',
24 405 => 'Method Not Allowed',
25 409 => 'Conflict',
26 500 => 'Internal Server Error'
27 ];
28
29 /**
30 * @author Lucas (TPZ)
31 * Vérifie et met en forme les data d'une campagne.
32 * Utilisé pour les opérations CREATE et UPDATE.
33 * @return array - Retourne les data vérifié pour la requête relative à la campagne.
34 * @param array $rawCampaignData - Data de la campagne passé en brut depuis le front
35 */
36 private function checkCampagnDataIsValid($rawCampaignData) {
37 $campaignData = $rawCampaignData; // Je clone le tableau
38 foreach($campaignData as $key => $data) { // Je parcours les data renseigné par l'user,
39 if (!isset($data)) { // Pour determiner si une manque.
40 $campaignData[$key] = ""; // Si oui remplace par un string vide.
41 }
42 }
43 return $campaignData;
44 }
45
46 /**
47 * @author Lucas (TPZ)
48 * Permet de selectionner le bon compte API en fonction de la langue passé en paramètre
49 * ainsi que les data, relative à l'environnement Cheetah, nécéssaire pour les opérations CRUD sur les campagnes
50 * A noté : l'environnement NMG_FR est le parent des autres environnements internationals (NMG_IT etc...);
51 * @return array - Retourne les data du compte
52 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
53 */
54 private function selectAccountAPI($codeLangue = 'NMG_FR') {
55
56 Log::info('CCMP - Selection du compte API : ' . $codeLangue);
57
58 # Choix du compte API en fonction du language
59 switch ($codeLangue) {
60 case 'NMG_FR':
61 return [
62 "clientId" => env('CLIENT_ID_FR'), // Id client du compte API
63 "consumerKey" => env('CONSUMER_KEY_FR'), // Clef secret du compte API
64 "consumerSecret" => env('CONSUMER_SECRET_FR'), // Clef secret consommateur du compte API
65 "custId" => 1076, // Id de l'environnement
66 "vmtaPool" => 100626, // Id de pool utilisé pour l'envoi
67 "entityId" => 113, // Id de la table de routage sur Cheetah
68 "linkTrackingDomainId" => 9084 // Id du tracking
69 ];
70 break;
71 case 'NMG_UK':
72 return [
73 "clientId" => env('CLIENT_ID_UK'), // Id client du compte API
74 "consumerKey" => env('CONSUMER_KEY_UK'), // Clef secret du compte API
75 "consumerSecret" => env('CONSUMER_SECRET_UK'), // Clef secret consommateur du compte API
76 "custId" => 100602, // Id de l'environnement
77 "vmtaPool" => 100302, // Id de pool utilisé pour l'envoi
78 "entityId" => 132, // Id de la table de routage sur Cheetah
79 "linkTrackingDomainId" => 9084 // Id du tracking
80 ];
81 break;
82 case 'NMG_DE':
83 return [
84 "clientId" => env('CLIENT_ID_DE'), // Id client du compte API
85 "consumerKey" => env('CONSUMER_KEY_DE'), // Clef secret du compte API
86 "consumerSecret" => env('CONSUMER_SECRET_DE'), // Clef secret consommateur du compte API
87 "custId" => 100604, // Id de l'environnement
88 "vmtaPool" => 100301, // Id de pool utilisé pour l'envoi
89 "entityId" => 132, // Id de la table de routage sur Cheetah
90 "linkTrackingDomainId" => 9084 // Id du tracking
91 ];
92 break;
93 case 'NMG_PTBR':
94 return [
95 "clientId" => env('CLIENT_ID_PTBR'), // Id client du compte API
96 "consumerKey" => env('CONSUMER_KEY_PTBR'), // Clef secret du compte API
97 "consumerSecret" => env('CONSUMER_SECRET_PTBR'), // Clef secret consommateur du compte API
98 "custId" => 100605, // Id de l'environnement
99 "vmtaPool" => 100286, // Id de pool utilisé pour l'envoi
100 "entityId" => 132, // Id de la table de routage sur Cheetah
101 "linkTrackingDomainId" => 9084 // Id du tracking
102 ];
103 break;
104 case 'NMG_ES':
105 return [
106 "clientId" => env('CLIENT_ID_ES'), // Id client du compte API
107 "consumerKey" => env('CONSUMER_KEY_ES'), // Clef secret du compte API
108 "consumerSecret" => env('CONSUMER_SECRET_ES'), // Clef secret consommateur du compte API
109 "custId" => 100598, // Id de l'environnement
110 "vmtaPool" => 100286, // Id de pool utilisé pour l'envoi
111 "entityId" => 132, // Id de la table de routage sur Cheetah
112 "linkTrackingDomainId" => 9084 // Id du tracking
113 ];
114 break;
115 case 'IT_FR':
116 return [
117 "clientId" => env('CLIENT_ID_SILICON_FR'), // Id client du compte API
118 "consumerKey" => env('CONSUMER_KEY_SILICON_FR'), // Clef secret du compte API
119 "consumerSecret" => env('CONSUMER_SECRET_SILICON_FR'), // Clef secret consommateur du compte API
120 "custId" => 100136, // Id de l'environnement
121 "vmtaPool" => 100300, // Id de pool utilisé pour l'envoi
122 "entityId" => 135, // Id de la table de routage sur Cheetah
123 "linkTrackingDomainId" => 4563 // Id du tracking
124 ];
125 break;
126 case 'IT_UK':
127 return [
128 "clientId" => env('CLIENT_ID_SILICON_INTERNATIONAL'), // Id client du compte API
129 "consumerKey" => env('CONSUMER_KEY_SILICON_INTERNATIONAL'), // Clef secret du compte API
130 "consumerSecret" => env('CONSUMER_SECRET_SILICON_INTERNATIONAL'), // Clef secret consommateur du compte API
131 "custId" => 100138, // Id de l'environnement
132 "vmtaPool" => 100300, // Id de pool utilisé pour l'envoi
133 "entityId" => 132, // Id de la table de routage sur Cheetah
134 "linkTrackingDomainId" => 4575 // Id du tracking
135 ];
136 break;
137 case 'IT_DE':
138 return [
139 "clientId" => env('CLIENT_ID_SILICON_INTERNATIONAL'), // Id client du compte API
140 "consumerKey" => env('CONSUMER_KEY_SILICON_INTERNATIONAL'), // Clef secret du compte API
141 "consumerSecret" => env('CONSUMER_SECRET_SILICON_INTERNATIONAL'), // Clef secret consommateur du compte API
142 "custId" => 100137, // Id de l'environnement
143 "vmtaPool" => 100300, // Id de pool utilisé pour l'envoi
144 "entityId" => 132, // Id de la table de routage sur Cheetah
145 "linkTrackingDomainId" => 4569 // Id du tracking
146 ];
147 break;
148 case 'IT_ES':
149 return [
150 "clientId" => env('CLIENT_ID_SILICON_INTERNATIONAL'), // Id client du compte API
151 "consumerKey" => env('CONSUMER_KEY_SILICON_INTERNATIONAL'), // Clef secret du compte API
152 "consumerSecret" => env('CONSUMER_SECRET_SILICON_INTERNATIONAL'), // Clef secret consommateur du compte API
153 "custId" => 100140, // Id de l'environnement
154 "vmtaPool" => 100300, // Id de pool utilisé pour l'envoi
155 "entityId" => 132, // Id de la table de routage sur Cheetah
156 "linkTrackingDomainId" => 6192 // Id du tracking
157 ];
158 break;
159 }
160 }
161
162 /**
163 * @author Lucas (TPZ)
164 * Connexion à l'API CCMP. C'est la première étape d'utilisation de l'API.
165 * Celui-ci ce fait en deux temps. D'abord la connexion au bon environnement
166 * avec les bon identifiants. Ensuite les opérations CRUD souhaitées.
167 * @return array - Data de l'authentification
168 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
169 *
170 */
171 public function apiConnect($codeLangue) {
172
173 // Selection du bon compte API et data de l'environnement Cheetah
174 $accountData = $this->selectAccountAPI($codeLangue);
175
176 // Header de la requête API pour l'accès au compte
177 $headers = [
178 "grant_type" => "password",
179 "client_id" => $accountData["clientId"],
180 "username" => $accountData["consumerKey"],
181 "password" => $accountData["consumerSecret"],
182 "content_type" => "application/x-www-form-urlencoded"
183 ];
184
185 $postText = http_build_query($headers);
186
187 // URL d'authentification à l'API CCMP
188 $url = "https://api.ccmp.eu/services/authorization/oauth2/token";
189
190 try {
191 // Initialisation de la session CURL
192 $curl = curl_init();
193 // Appel de l'URL en paramètre
194 curl_setopt($curl, CURLOPT_URL, $url);
195 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
196 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
197
198 // HTTP POST request
199 curl_setopt($curl, CURLOPT_POST, true);
200 curl_setopt($curl, CURLOPT_POSTFIELDS, $postText);
201
202 // Demande le résultat en chaîne de caractères
203 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
204
205 // Execution de la session CURL
206 $result = curl_exec($curl);
207 // Récupère le code de la réponse retournée
208 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
209 // Fermeture de la session CURL
210 curl_close($curl);
211
212 // Création d'un tableau contenant le code de retour et le résultat de la requête
213 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
214 } catch ( Exception $e ) {
215 throw new Exception("Error during the call. Here the message: " . $e -> Message);
216 }
217
218 $sucess = in_array($res['code'], $this->arr_ret_sucess) ? true : false;
219
220 if (!$sucess) Log::info("CCMP - ERREUR : échec de l'authentification sur l'API CCMP...");
221
222 return [
223 'sucess' => $sucess,
224 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
225 'param' => $headers,
226 'obj' => $res,
227 'custId' => $accountData["custId"],
228 'vmtaPool' => $accountData["vmtaPool"],
229 'entityId' => $accountData["entityId"],
230 'linkTrackingDomainId' => $accountData["linkTrackingDomainId"]
231 ];
232 }
233
234 /**
235 * Création de la campagne sur Cheetah
236 * @param array $campaignData
237 * @param string $codeLangue
238 * @return array - Réponse de l'API
239 */
240 public function createCampaign($rawCampaignData, $codeLangue) {
241
242 if (!$codeLangue) Log::info('CCMP - ERREUR: createCampaign - Code langue manquant');
243
244 if(!(count($rawCampaignData) > 0)) {
245 return [
246 'sucess' => false,
247 'msg' => 'Invalid values for Campaign data',
248 'param' => [],
249 'obj' => []
250 ];
251 } else {
252
253 $fromAddressId = null;
254 $url = "https://api.ccmp.eu/services2/api/EmailCampaign";
255 $campaignData = $this->checkCampagnDataIsValid($rawCampaignData);
256 $fromAddresses = $this->getFromAddresses($codeLangue);
257 $accountApi = $this->apiConnect($codeLangue); // Connexion à l'API sur le bon environnement utilisateur via la langue
258 $token = $accountApi['obj']['result']['access_token'];
259
260 // Selection du profil de l'envoyeur par rapport au mail saisi dans le champ "From Name" à la création/édition d'un model.
261 if ($fromAddresses['sucess']) { // On a recu les fromAddresses ?
262 foreach ($fromAddresses['obj']['result'] as $item) { // Parcours les
263 if ($item['Address'] == $campaignData['replyToAddress']) { // Si parmis les adresses mail reçu, il y a celle de saisie par l'utilisateur...
264 $fromAddressId = $item['Id']; // Prend son ID
265 break;
266 }
267 }
268 }
269
270
271 $json = '{
272 "CustId":"'. $accountApi['custId'] .'",
273 "EntityId":"'. $accountApi['entityId'] .'",
274 "TypeId":"REGULAR",
275 "ToFilterId":"'.$campaignData['filterId'].'",
276 "contBodies": [{
277 "type": "HTML",
278 "usageMask" : "ALL_EMAIL_STYLE_USAGE_MASK",
279 "body" : "'.$campaignData['body'].'"
280 }],
281 "linkTrackingUsageMask":"HTML_AND_TEXT",
282 "linkTrackingDomainId":"'. $accountApi['linkTrackingDomainId'] .'",
283 "EmailMsgTemplate": {
284 "FromName":"'.$campaignData['fromName'].'",
285 "ToName":"'.$campaignData['toName'].'",
286 "toAddressPropId": 10059,
287 "FromAddressId":"'.$fromAddressId.'",
288 "Subject":"'.$campaignData['subject'].'",
289 "vmtaPoolId":"'.$accountApi['vmtaPool'].'",
290 "replyToAddress":"'.$campaignData['replyToAddress'].'"
291 },
292 "campToList": {
293 "testListId":' .$campaignData['proofFilterId'].'
294 },
295 "campReviewFlags":{
296 "contCalculationFlag": 0,
297 "personalizationFlag": 0,
298 "sendingFlag": 0
299 },
300 "campParam":{
301 "sendSchedule":{
302 "timeZone":"W_Europe_Standard_Time",
303 "startTime":"'.$campaignData['startTime'].'",
304 "dayFrequency":{
305 "frequencyType": "Daily",
306 "daysInterval": 1
307 }
308 },
309 "queueSchedule":{
310 "timeZone": "W_Europe_Standard_Time"
311 }
312 },
313 "Obj":{
314 "display_name":"'.$campaignData['displayName'].'",
315 "parent_obj_id":"'.$campaignData['folderId'].'"
316 }
317 }';
318
319
320 try {
321
322 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
323 $curl = curl_init();
324 curl_setopt($curl, CURLOPT_URL, $url);
325 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
326 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
327 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
328 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
329 curl_setopt($curl, CURLOPT_POST, "POST");
330 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
331 $result = curl_exec($curl);
332 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
333 curl_close($curl);
334 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
335
336 } catch ( Exception $e ) {
337 throw new Exception("Error during the call. Here the message: " . $e -> Message);
338 }
339
340 if (in_array($res['code'], $this->arr_ret_sucess) ) {
341 $sucess = true;
342 } else {
343 $sucess = false;
344 }
345
346 if (!$sucess) Log::info('CCMP - ERREUR: échec de création de la campagne...');
347
348 return [
349 'sucess' => $sucess,
350 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
351 'param' => $json,
352 'obj' => $res
353 ];
354 }
355 }
356 /**
357 * @author Lucas (TPZ)
358 * Mise à jour de la campagne sur Cheetah
359 * @param int $campaingId - ID de la campagne ciblée
360 * @param array $campaignData - Data de la campagne
361 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
362 * @return array - Réponse de l'API
363 */
364 public function updateCampaign($campaignId, $rawCampaignData, $codeLangue) {
365
366 if (!$codeLangue) Log::info('CCMP - CCMP SERVICE : updateCampaign - Code langue manquant');
367
368 if (!($campaignId > 0 && count($rawCampaignData) > 0)) {
369 return array(
370 'sucess' => false,
371 'msg' => 'Invalid values for Campaign code or data',
372 'param' => [],
373 'obj' => []
374 );
375 } else {
376
377 $campaignData = $this->checkCampagnDataIsValid($rawCampaignData);
378 $fromAddresses = $this->getFromAddresses($codeLangue);
379 $accountApi = $this->apiConnect($codeLangue); // Connexion à l'API sur le bon environnement utilisateur via la langue
380 $token = $accountApi['obj']['result']['access_token'];
381 $url = "https://api.ccmp.eu/services2/api/EmailCampaign?id=" . $campaignId;
382
383 if(false !== $fromAddresses['sucess']) {
384 foreach ($fromAddresses['obj']['result'] as $item) {
385 if($item['Address'] == $campaignData['replyToAddress']){
386 $fromAddressId = $item['Id'];
387 break;
388 }
389 }
390 }
391
392 $json = '{
393 "CampId":"'.$campaignId.'",
394 "CustId":"'. $accountApi['custId'] .'",
395 "EntityId":"'. $accountApi['entityId'] .'",
396 "TypeId":"REGULAR",
397 "ToFilterId":"'.$campaignData['filterId'].'",
398 "contBodies": [{
399 "type": "HTML",
400 "usageMask" : "ALL_EMAIL_STYLE_USAGE_MASK",
401 "body" : "'.$campaignData['body'].'"
402 }],
403 "linkTrackingUsageMask":"HTML_AND_TEXT",
404 "linkTrackingDomainId": '. $accountApi['linkTrackingDomainId'] .',
405 "EmailMsgTemplate": {
406 "FromName":"'.$campaignData['fromName'].'",
407 "ToName":"'.$campaignData['toName'].'",
408 "toAddressPropId": 10059,
409 "FromAddressId":"'.$fromAddressId.'",
410 "Subject":"'.$campaignData['subject'].'",
411 "vmtaPoolId":"'.$accountApi['vmtaPool'].'",
412 "replyToAddress":"'.$campaignData['replyToAddress'].'"
413 },
414 "campToList": {
415 "testListId": "'.$campaignData['proofFilterId'].'"
416 },
417 "campReviewFlags":{
418 "contCalculationFlag": 0,
419 "personalizationFlag": 0,
420 "sendingFlag": 0
421 },
422 "campParam":{
423 "sendSchedule":{
424 "timeZone":"W_Europe_Standard_Time",
425 "startTime":"'.$campaignData['startTime'].'",
426 "dayFrequency":{
427 "frequencyType": "Daily",
428 "daysInterval": 1
429 }
430 },
431 "queueSchedule":{
432 "timeZone": "W_Europe_Standard_Time"
433 }
434 },
435 "Obj":{
436 "display_name":"'.$campaignData['displayName'].'",
437 "parent_obj_id":'.$campaignData['folderId'].'
438 },
439 "CampAction":"SAVE"
440 }';
441 }
442
443 try {
444
445 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
446 $curl = curl_init();
447 curl_setopt($curl, CURLOPT_URL, $url);
448 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
449 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
450 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
451 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
452 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
453 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
454 $result = curl_exec($curl);
455 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
456 curl_close($curl);
457 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
458
459 } catch ( Exception $e ) {
460 throw new Exception("Error during the call. Here the message: " . $e -> Message);
461 }
462
463 if (in_array($res['code'], $this->arr_ret_sucess)) {
464 $sucess = true;
465 } else {
466 $sucess = false;
467 }
468
469 if (!$sucess) Log::error('CCMP - ERREUR: échec de la mise à jour de la campagne...');
470
471 return [
472 'sucess' => $sucess,
473 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
474 'param' => $json,
475 'obj' => $res
476 ];
477 }
478
479 /**
480 * @author Lucas (TPZ)
481 * Change le statut d'une campagne , déclenchant par la suite une action (coté Cheetah) en fonction de celui-ci.
482 * ex : Envoyer la NL/ Diffuser la campagne, passer sur le status 'changed' etc...
483 * @param int $campaingId - ID de la campagne ciblée
484 * @param array $campaignData - Data de la campagne
485 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
486 */
487 public function actionCampaign(int $campaignId, array $rawCampaignData, string $codeLangue) : array {
488
489 Log::info('CCMP - actionCampaign() : ' . $rawCampaignData['status']);
490
491 if (!$codeLangue) Log::error('CCMP SERVICE : actionCampaign - Code langue manquant');
492
493 if ( !($campaignId > 0 && isset($rawCampaignData['status'])) ) {
494 return [
495 'sucess' => false,
496 'msg' => 'Invalid values for Campaign code or data',
497 'param' => [],
498 'obj' => []
499 ];
500 } else {
501 $status = isset($rawCampaignData['status']) ? $rawCampaignData['status'] : '';
502 $emailCampaign = [
503 "CampId" => $campaignId,
504 "CampAction" => strtoupper($status)
505 ];
506 }
507
508 $json = json_encode($emailCampaign);
509 $accountApi = $this->apiConnect($codeLangue);
510 $token = $accountApi['obj']['result']['access_token'];
511 $url = "https://api.ccmp.eu/services2/api/EmailCampaign?id=" . $campaignId;
512
513 try {
514
515 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
516 $curl = curl_init();
517 curl_setopt($curl, CURLOPT_URL, $url);
518 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
519 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
520 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
521 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
522 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
523 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
524 $result = curl_exec($curl);
525 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
526 curl_close($curl);
527 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
528
529 } catch ( Exception $e ) {
530 throw new Exception("Error during the call. Here the message: " . $e -> Message);
531 }
532
533 if(in_array($res['code'], $this->arr_ret_sucess)){
534 $sucess = true;
535 }else{
536 $sucess = false;
537 }
538
539 return [
540 'sucess' => $sucess,
541 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
542 'param' => $emailCampaign,
543 'obj' => $res
544 ];
545
546 }
547
548 /**
549 * @author Lucas (TPZ)
550 * Permet de récupérer les informations (data) d'une campagne spécifique via son ID
551 * sur l'API CCMP
552 * @return array - Data de la campagne demandée
553 * @param int $campaignId - ID de la campagne dont on souhaite récupérer les data
554 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
555 */
556 public function getCampaign($campaignId, $codeLangue) {
557
558 Log::info('CCMP - Récupération de la campagne ayant pour ID : ' . $campaignId);
559
560 if(!$campaignId) {
561 return [
562 'sucess' => false,
563 'msg' => 'Invalid values for Campaign code!',
564 'param' => [],
565 'obj' => []
566 ];
567 }
568
569 $campId = $campaignId;
570 $accountApi = $this->apiConnect($codeLangue);
571 $token = $accountApi['obj']['result']['access_token'];
572 $url = "https://api.ccmp.eu/services2/api/EmailCampaign?id=" . $campId;
573
574 try {
575
576 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
577 $curl = curl_init();
578 curl_setopt($curl, CURLOPT_URL, $url);
579 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
580 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
581 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
582 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
583 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
584 $result = curl_exec($curl);
585 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
586 curl_close($curl);
587 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
588
589 } catch ( Exception $e ) {
590 throw new Exception("Error during the call. Here the message: " . $e -> Message);
591 }
592
593 if (in_array($res['code'], $this->arr_ret_sucess)) {
594 $sucess = true;
595 } else {
596 $sucess = false;
597 }
598
599 if ($sucess) {
600 Log::info('CCMP - Récupération de la campagne réussi !');
601 } else {
602 Log::info('CCMP - ERREUR: échec de la récupération de la campagne ayant pour ID '. $campaignId .' ...');
603 }
604
605 return [
606 'sucess' => $sucess,
607 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
608 'param' => $campId,
609 'obj' => $res
610 ];
611 }
612
613 /**
614 * @author Lucas (TPZ)
615 * Suppression d'une campagne via son ID
616 * @param int $campaignId - ID de la campagne ciblée
617 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
618 */
619 public function deleteCampaign($campaignId, $codeLangue) {
620
621 Log::info('CCMP - Suppression de la campagne ayant pour ID ' . $campaignId . ' en cours...');
622
623 if (!($campaignId > 0)) {
624 return [
625 'sucess' => false,
626 'msg' => 'Invalid values for Campaign code!',
627 'param' => [],
628 'obj' => []
629 ];
630 }
631
632 $campId = $campaignId;
633 $accountApi = $this->apiConnect($codeLangue);
634 $token = $accountApi['obj']['result']['access_token'];
635 $url = "https://api.ccmp.eu/services2/api/EmailCampaign?id=" . $campId;
636
637 try {
638
639 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
640 $curl = curl_init();
641 curl_setopt($curl, CURLOPT_URL, $url);
642 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
643 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
644 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
645 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
646 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
647 $result = curl_exec($curl);
648 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
649 curl_close($curl);
650 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
651
652 } catch ( Exception $e ) {
653 throw new Exception("Error during the call. Here the message: " . $e -> Message);
654 }
655
656 if (in_array($res['code'], $this->arr_ret_sucess)) {
657 $sucess = true;
658 } else {
659 $sucess = false;
660 }
661
662 if ($sucess) {
663 Log::info('CCMP - Suppression de la campagne réussi !');
664 } else {
665 Log::info('CCMP - ERREUR: échec de la suppression de la campagne ayant pour ID '. $campaignId .' ...');
666 }
667
668 return [
669 'sucess' => $sucess,
670 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
671 'param' => $campId,
672 'obj' => $res
673 ];
674 }
675
676 /**
677 * @author Lucas (TPZ)
678 * Permet d'obtenir le filtre de la population ciblée ?
679 * @return array - Retourne les data du filtre de la population ciblée
680 * @param int $filterId - ID du filtre ciblé
681 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
682 */
683 public function getFilter($filterId, $codeLangue) {
684
685 Log::info('CCMP - Récupération du filtre, ayant pour ID ' . $filterId . ', de la population ciblée en cours...');
686
687 if (!($filterId > 0)) {
688 return [
689 'sucess' => false,
690 'msg' => 'Invalid values for Filter code!',
691 'param' => [],
692 'obj' => []
693 ];
694 }
695
696 $accountApi = $this->apiConnect($codeLangue);
697 $token = $accountApi['obj']['result']['access_token'];
698 $url = "https://api.ccmp.eu/services2/api/Filter?id=".$filterId;
699
700 try {
701 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
702 $curl = curl_init();
703 curl_setopt($curl, CURLOPT_URL, $url);
704 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
705 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
706 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
707 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
708 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
709 $result = curl_exec($curl);
710 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
711 curl_close($curl);
712 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
713 } catch ( Exception $e ) {
714 throw new Exception("Error during the call. Here the message: " . $e -> Message);
715 }
716
717 if (in_array($res['code'], $this->arr_ret_sucess)) {
718 $sucess = true;
719 } else {
720 $sucess = false;
721 }
722
723 if ($sucess) {
724 Log::info('CCMP - Récupération du filtre réussi !');
725 } else {
726 Log::info('CCMP - ERREUR: échec de la récupération du filtre ayant pour ID '. $filterId .' ...');
727 }
728
729 return [
730 'sucess' => $sucess,
731 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
732 'param' => $filterId,
733 'obj' => $res
734 ];
735 }
736
737 /**
738 * Création d'une publicité et upload de fichier relativement à celle-ci
739 * @return array - Réponse de l'API
740 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
741 */
742 public function createMedia($params, $codeLangue) {
743
744 Log::info('CCMP - Création du média et insertion en cours...');
745
746 $file = [
747 "cust_id" => 1076,
748 "filename" => $params['filename'],
749 "parent_obj_id" => "13283",
750 "encoding" => "base64",
751 "data" => $params['data']
752 ];
753
754 $json = json_encode($file);
755 $accountApi = $this->apiConnect($codeLangue);
756
757 $token = $accountApi['obj']['result']['access_token'];
758 $url = "https://api.ccmp.eu/services2/api/MediaUpload";
759
760 try {
761
762 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
763 $curl = curl_init();
764 curl_setopt($curl, CURLOPT_URL, $url);
765 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
766 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
767 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
768 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
769 curl_setopt($curl, CURLOPT_POST, "POST");
770 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
771 $result = curl_exec($curl);
772 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
773 curl_close($curl);
774 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
775
776 } catch (Exception $e) {
777 throw new Exception("Error during the call. Here the message: " . $e -> Message);
778 }
779
780 if (in_array($res['code'], $this->arr_ret_sucess)) {
781 $sucess = true;
782 } else {
783 $sucess = false;
784 }
785
786 if ($sucess) {
787 Log::info('CCMP - Création du média réussi !');
788 } else {
789 Log::info('CCMP - ERREUR: échec de la création du media...');
790 }
791
792 return [
793 'sucess' => $sucess,
794 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
795 'param' => $json,
796 'obj' => $res
797 ];
798 }
799
800 /**
801 * @author unknow
802 * Récupère la publicité via l'API (?)
803 * @return array - Data du media
804 * @param int $mediaId - ID du media ciblé
805 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
806 */
807 public function getMedia($mediaId, $codeLangue) {
808
809 Log::info('CCMP - Récupération du media ayant pour ID ' . $mediaId . ' en cours...');
810
811 $accountApi = $this->apiConnect("NMG_FR"); // TODO : à rendre dynamique pour l'internationalisation
812 $token = $accountApi['obj']['result']['access_token'];
813 $url = "https://api.ccmp.eu/services2/api/MediaUpload?id=".$mediaId;
814
815 try {
816
817 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
818 $curl = curl_init();
819 curl_setopt($curl, CURLOPT_URL, $url);
820 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
821 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
822 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
823 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
824 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
825 $result = curl_exec($curl);
826 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
827 curl_close($curl);
828 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
829
830 } catch ( Exception $e ) {
831 throw new Exception("Error during the call. Here the message: " . $e -> Message);
832 }
833
834 if (in_array($res['code'], $this->arr_ret_sucess)) {
835 $sucess = true;
836 } else {
837 $sucess = false;
838 }
839
840 if ($sucess) {
841 Log::info('CCMP - Récupération du media réussi !');
842 } else {
843 Log::info('CCMP - ERREUR: échec de la récupération du media ayant pour ID '. $mediaId .' ...');
844 }
845
846 return [
847 'sucess' => $sucess,
848 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
849 'param' => $mediaId,
850 'obj' => $res
851 ];
852 }
853
854 /**
855 * @author Lucas (TPZ)
856 * Permet d'obtenir le profil d'envois utilisé pour la campagne
857 * @return array - Retourne les data du profil d'envoi
858 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
859 */
860 public function getFromAddresses($codeLangue) {
861
862 Log::info('CCMP - Récupération des profiles d\'envois en cours...');
863
864 $accountApi = $this->apiConnect($codeLangue);
865 $token = $accountApi['obj']['result']['access_token'];
866 $url = "https://api.ccmp.eu/services/api/FromAddress/Get";
867
868 try {
869
870 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
871 $curl = curl_init();
872 curl_setopt($curl, CURLOPT_URL, $url);
873 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
874 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
875 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
876 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
877 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
878 $result = curl_exec($curl);
879 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
880 curl_close($curl);
881 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
882
883 } catch ( Exception $e ) {
884 throw new Exception("Error during the call. Here the message: " . $e -> Message);
885 }
886
887 if (in_array($res['code'], $this->arr_ret_sucess)) {
888 $sucess = true;
889 } else {
890 $sucess = false;
891 }
892
893 if ($sucess) {
894 Log::info('CCMP - Récupération des profiles d\'envois réussi !');
895 } else {
896 Log::info('CCMP - ERREUR: échec de la récupération des profiles d\'envois...');
897 }
898
899 return [
900 'sucess' => $sucess,
901 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
902 'obj' => $res
903 ];
904 }
905
906 /**
907 * @author Lucas (TPZ)
908 * Cette méthode permet d'obtenir les table d'un environnement Cheetah
909 * @param string - Code qui fait réference à l'environnement Cheetah
910 */
911 public function getTables($codeLangue) {
912
913 Log::info('CCMP - Récupération des tables de l\'environnement ' . $codeLangue . ' en cours...');
914
915 $accountApi = $this->apiConnect($codeLangue);
916 $token = $accountApi['obj']['result']['access_token'];
917 $url = "https://api.ccmp.eu/services2/api/Table";
918
919 try {
920
921 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
922 $curl = curl_init();
923 curl_setopt($curl, CURLOPT_URL, $url); // Url de la page à récupérer/communiquer.
924 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
925 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Nous voulons recevoir le résultat au lieu de l'afficher.
926 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
927 $result = curl_exec($curl); // Éxecute la requête.
928 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
929 curl_close($curl);
930
931 $res = array_merge(
932 array('code' => $code),
933 array('result' => json_decode($result, true))
934 );
935
936 if ($code == 200) {
937 Log::info('CCMP - Récupération de la table d\'environnement réussie !');
938 } else {
939 Log::info('CCMP - ERREUR: échec de la récupération des tables d\'environnement...');
940 }
941
942 return $res;
943
944
945 } catch ( Exception $e ) {
946 throw new Exception("Error during the call. Here the message: " . $e -> Message);
947 }
948 }
949
950 /**
951 * @author Lucas (TPZ)
952 * Cette méthode permet de récupérer le contenu d'une table par son nom.
953 * @param string $name Nom de la table.
954 * @param int $page Numéro de la page.
955 * @param int $count Nombre de lignes.
956 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
957 */
958 public function getTableByName($name, $page, $count, $codeLangue) {
959
960 Log::info('CCMP - Récupération de la table ' . $name . ' de l\'environnement '. $codeLangue . ' en cours...');
961
962 $accountApi = $this->apiConnect($codeLangue);
963 $token = $accountApi['obj']['result']['access_token'];
964 $url = "https://api.ccmp.eu/services2/api/Table?tableName=" . $name . "&page==" . $page . "&count=" . $count;
965
966 try {
967
968 $headers = [
969 'Accept: application/json',
970 'Content-Type: application/json',
971 'Authorization: Bearer ' . $token
972 ];
973
974 $curl = curl_init();
975 curl_setopt($curl, CURLOPT_URL, $url);
976 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
977 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
978 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
979 $result = curl_exec($curl);
980 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
981 curl_close($curl);
982
983 $res = array_merge(
984 array('code' => $code),
985 array('result' => json_decode($result, true))
986 );
987
988 if ($code == 200) {
989 Log::info('CCMP - Récupération de la table d\'environnement réussie !');
990 } else {
991 Log::info('CCMP - ERREUR: échec de la récupération de la table ' . $name . ' ...');
992 }
993
994 return $res;
995
996 } catch (Exception $e) {
997 throw new Exception("Erreur pendant l'appel de l'API : " . $e -> Message);
998 }
999
1000 }
1001
1002 /**
1003 * Crée un groupe de test. Celui-ci contiendra des emails de test.
1004 * @return array - Réponse de l'API CCMP
1005 * @param array $params - Paramètre de la requête
1006 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
1007 */
1008 public function createProofingGroup($params, $codeLangue) {
1009
1010 Log::info('CCMP - Création d\'un groupe de test en cours...');
1011
1012 $proofingGroup = [
1013 "name" => $params['name'],
1014 "table" => "recipient",
1015 "status" => "READY",
1016 "type" => "EMAIL",
1017 "records" => "RANDOM",
1018 "dynamicProofing" => "false"
1019 ];
1020
1021 $json = json_encode($proofingGroup);
1022 $accountApi = $this->apiConnect($codeLangue);
1023 $token = $accountApi['obj']['result']['access_token'];
1024 $url = "https://api.ccmp.eu/services2/api/ProofingGroups";
1025
1026 try {
1027
1028 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
1029 $curl = curl_init();
1030 curl_setopt($curl, CURLOPT_URL, $url);
1031 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
1032 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
1033 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
1034 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
1035 curl_setopt($curl, CURLOPT_POST, "POST");
1036 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
1037 $result = curl_exec($curl);
1038 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
1039 curl_close($curl);
1040 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
1041
1042 } catch ( Exception $e ) {
1043 throw new Exception("Error during the call. Here the message: " . $e -> Message);
1044 }
1045 if (in_array($res['code'], $this->arr_ret_sucess)){
1046 $sucess = true;
1047 } else {
1048 $sucess = false;
1049 }
1050
1051 if ($sucess) {
1052 Log::info('CCMP - Création du groupe de test réussie !');
1053 } else {
1054 Log::info('CCMP - ERREUR: échec de la création du groupe de test ' . $name . ' ...');
1055 }
1056
1057 return [
1058 'sucess' => $sucess,
1059 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
1060 'param' => $json,
1061 'obj' => $res
1062 ];
1063 }
1064
1065 /**
1066 * @author Lucas (TPZ)
1067 * Récupère le groupe d'adresse email de test
1068 * url : https://apidoc.ccmp.eu/get-proofinggroups-recipients/
1069 * @return array
1070 * @param int $proofingGroupId - Id du group
1071 * @param string $codeLangue - Code qui fait réference à l'environnement Cheetah
1072 */
1073 public function getProofingGroup($proofingGroupId, $codeLangue) {
1074
1075 Log::info('CCMP - Récupération du groupe de test ayant pour ID ' . $proofingGroupId . ' en cours ...');
1076
1077 $accountApi = $this->apiConnect($codeLangue);
1078 $token = $accountApi['obj']['result']['access_token'];
1079 $url = "https://api.ccmp.eu/services2/api/ProofingGroups/".$proofingGroupId."/Recipients";
1080
1081 try {
1082 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
1083 $curl = curl_init();
1084 curl_setopt($curl, CURLOPT_URL, $url);
1085 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
1086 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
1087 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
1088 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
1089 curl_setopt($curl, CURLOPT_POST, "GET");
1090 $result = curl_exec($curl);
1091 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
1092 curl_close($curl);
1093 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
1094
1095 } catch ( Exception $e ) {
1096 throw new Exception("Error during the call. Here the message: " . $e -> Message);
1097 }
1098
1099 if (in_array($res['code'], $this->arr_ret_sucess)) {
1100 $sucess = true;
1101 } else {
1102 $sucess = false;
1103 }
1104
1105 if ($sucess) {
1106 Log::info('CCMP - Récupération du groupe de test réussie !');
1107 } else {
1108 Log::info('CCMP - ERREUR: échec de la récupération du groupe de test ' . $proofingGroupId . ' ...');
1109 }
1110
1111 return [
1112 'sucess' => $sucess,
1113 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
1114 'obj' => $res
1115 ];
1116 }
1117
1118
1119 /**
1120 * @author Lucas (TPZ)
1121 * Met à jour un groupe d'email test
1122 * url : https://apidoc.ccmp.eu/addremove-proofinggroups-recipients/
1123 * @return array - Réponse de l'API
1124 * @param int - Id du groupe
1125 * @param array - Paramètre de la requête
1126 * @param string - Supprimé ou non le group
1127 * @param string - Code qui fait réference à l'environnement Cheetah
1128 */
1129 public function updateProofingGroup($proofingGroupId, $params, $remove, $codeLangue) {
1130
1131 Log::info('CCMP - Mise à jour du groupe de test en cours...');
1132
1133 $json = json_encode($params);
1134 $accountApi = $this->apiConnect($codeLangue);
1135 $token = $accountApi['obj']['result']['access_token'];
1136 $url = "https://api.ccmp.eu/services2/api/ProofingGroups/".$proofingGroupId."/Recipients?remove=" . $remove;
1137
1138 try {
1139 $headers = array('Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer ' . $token);
1140 $curl = curl_init();
1141
1142 curl_setopt($curl, CURLOPT_URL, $url);
1143 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
1144 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
1145 curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
1146 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
1147 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
1148 curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
1149
1150 $result = curl_exec($curl);
1151 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
1152 curl_close($curl);
1153 $res = array_merge(array('code' => $code), array('result' => json_decode($result, true)));
1154
1155 } catch ( Exception $e ) {
1156 throw new Exception("Error during the call. Here the message: " . $e -> Message);
1157 }
1158
1159 if (in_array($res['code'], $this->arr_ret_sucess)){
1160 $sucess = true;
1161 } else {
1162 $sucess = false;
1163 }
1164
1165 if ($sucess) {
1166 Log::info('CCMP - Mise à jour du groupe de test réussie !');
1167 } else {
1168 Log::info('CCMP - ERREUR: échec de la mise à jour du groupe de test ' . $proofingGroupId . ' ...');
1169 }
1170
1171 return array(
1172 'sucess' => $sucess,
1173 'msg' => $res['code'].' - '.$this->arr_ret_msg[$res['code']],
1174 'param' => $json,
1175 'obj' => $res
1176 );
1177
1178 }
1179
1180}