<?php include '../bootstrap.php'; try { $instance = new interact(); $instance->debug = true; $instance->intitializeSoapClient($config_file['location']['wsdl'], $config_file['location']['endpoint']); if ($instance->login($config_file['auth_regular']['login'], $config_file['auth_regular']['pass'])) { $retrieve_obj = new retrieveListMembers(); $int_obj = new InteractObject(); $int_obj->setFolderName("Mason"); $int_obj->setObjectName("masonList1"); $retrieve_obj->setFieldListParam(array("RIID_", "EMAIL_ADDRESS_", "FIRST_NAME")); $retrieve_obj->setIdsToRetrieve(array("*****@*****.**")); $retrieve_obj->setListParam($int_obj); $retrieve_obj->setQueryColumn(QueryColumn::EMAIL2); $results = $instance->execute($retrieve_obj); // do something with results? print_r($results); $instance->logout(); } else { die("Login failed, no reason to go on..."); } } catch (SoapFault $fault) { print_r($fault); } catch (Exception $exception) { print_r($exception); }
<?php include '../bootstrap.php'; try { $instance = new interact(); $instance->debug == true; $instance->intitializeSoapClient('https://ws2.responsys.net/webservices/wsdl/ResponsysWS_Level1.wsdl', 'https://ws2.responsys.net/webservices/services/ResponsysWSService'); if ($instance->login('masonTest', 'XixXcbF30j')) { $listFolders_object = new listFolders(); $listFolders_result = $instance->execute($listFolders_object); foreach ($listFolders_result->result as $folder) { echo $folder->name . "\n"; } $instance->logout(); } else { die("Login failed, no reason to go on..."); } } catch (SoapFault $fault) { print_r($fault); } catch (Exception $exception) { print_r($exception); }
<?php include '../bootstrap.php'; try { $login = "******"; $pass = "******"; $folder = "Mark_J"; $list = "MJlist4"; $instance = new interact(); $instance->debug = true; $instance->intitializeSoapClient($config_file['location']['wsdl'], $config_file['location']['endpoint']); if ($instance->login($login, $pass)) { /* * merge call begin */ $merge_obj = new mergeListMembersRIID(); $interact_object = new InteractObject(); $interact_object->setFolderName($folder); $interact_object->setObjectName($list); $merge_obj->setListParam($interact_object); $rule = new ListMergeRule(); $status = new DefaultPermissionStatus(); $status->defaultPermissionStatus = DefaultPermissionStatus::OPT_IN; $rule->setDefaultPermissionStatus($status); $rule->setInsertOnNoMatch(true); $match1 = new MatchColumn(); $match1->matchColumn = $match1::EMAIL; $rule->setMatchColumn1($match1); $match_op = new MatchOperator(); $match_op->matchOperator = $match_op::_NONE_; $rule->setMatchOperator($match_op);
<?php include '../bootstrap.php'; try { $instance = new interact(); $instance->debug == true; $instance->intitializeSoapClient($config_file['location']['wsdl'], $config_file['location']['endpoint']); if ($instance->login($config_file['auth_regular']['login'], $config_file['auth_regular']['pass'])) { $listFolders_object = new listFolders(); $listFolders_result = $instance->execute($listFolders_object); foreach ($listFolders_result->result as $folder) { echo $folder->name . "\n"; } $instance->logout(); } else { die("Login failed, no reason to go on..."); } } catch (SoapFault $fault) { print_r($fault); } catch (Exception $exception) { print_r($exception); }
<?php include '../bootstrap.php'; try { $instance = new interact(); $instance->debug = true; $instance->intitializeSoapClient($config_file['location']['wsdl'], $config_file['location']['endpoint']); if ($instance->login($config_file['auth_regular']['login'], $config_file['auth_regular']['pass'])) { $campaign_object = new InteractObject(); $campaign_object->setFolderName("Mason"); $campaign_object->setObjectName("masonCampaign_promo"); $progressChunk = new ProgressChunk(); $progressChunk->setProgressChunk($progressChunk::CHUNK_10K); $preferences = new LaunchPreferences(); $preferences->setEnabledLimit(false); // Enabled limit on recipients $preferences->setEnableNthSampling(true); $preferences->setEnableProgressAlerts(true); $preferences->setProgressChunk($progressChunk); $preferences->setProgressEmailAddresses("*****@*****.**"); //$preferences->setRecipientLimit( 1 ); // Limit to only one recipient, good for testing. $preferences->setSamplingNthInterval(1); $preferences->setSamplingNthOffset(1); $preferences->setSamplingNthSelection(1); //$proof_options = new ProofLaunchOptions(); /* * To send a proof instead of real message set proof params ( to entire proof list or specified proof email address ) * or leave empty to send live campaign * $proof_launch_type = new ProofLaunchType();
<?php include '../bootstrap.php'; $instance = new interact(); // print out the XML of the requests and responses! $instance->debug = true; $instance->intitializeSoapClient($config_file['location']['wsdl'], $config_file['location']['endpoint']); if ($instance->login($config_file['auth_content_library']['login'], $config_file['auth_content_library']['pass'])) { // init some vars - these are pre-existing objects in my test account $content_folder_location = '/contentlibrary/1_mason'; $content_folder_file = 'randomFile_' . rand(1, 100) . '.htm'; $some_random_html = '<html><header><title>Masons api example</title></header><body><div><h1>Hello World!</h1></div><div>Goodbye cruel world</div></body></html>'; // sample of create document call $create_document_obj = new createDocument(); $int_obj = new InteractObject(); $int_obj->setFolderName($content_folder_location); $int_obj->setObjectName($content_folder_file); $create_document_obj->setDocumentParam($int_obj); $create_document_obj->setContentParam($some_random_html); $create_document_obj->setEncodingParameter($create_document_obj->char_sets[10]); $create_doc_result = $instance->execute($create_document_obj); // sample of setDocumentContent $set_content_obj = new setDocumentContent(); $int_obj = new InteractObject(); $int_obj->setFolderName($content_folder_location); $int_obj->setObjectName($content_folder_file); $set_content_obj->setDocumentParam($int_obj); $set_content_obj->setContentParam($some_random_html); $set_document_response = $instance->execute($set_content_obj); // sample of getDocumentContent $get_content_obj = new getDocumentContent();
/** * * @param string $user * @param string $byte_array_challenge * @param string $wsdl * @param string $endpoint * @param string $responsys_public_cert_path * @param string $client_private_key_path */ public function loginWithCertificate($user, $byte_array_challenge, $wsdl, $endpoint, $responsys_public_cert_path, $client_private_key_path) { if (self::$isLoggedIn) { if ($this->debug) { echo "Attempt to loginWithCertificate when already logged in"; } return false; } // RESPONSYS PUBLIC CERT $responsys_certificate_file = file_get_contents($responsys_public_cert_path); // PRIVATE KEY REQUIRED FOR ENCRYPTING SERVER CHALLENGE - obtained from openssl cert & key creation process $mdixon_certificate_file = file_get_contents($client_private_key_path); $byte_array = array(); $container = array(); $container2 = array(); $container3 = array(); // Convert to integer for java $len = strlen($byte_array_challenge); for ($i = 0; $i < $len; $i++) { $byte_array[] = ord($byte_array_challenge[$i]); } // Run authServer call to verify user and get a temporary sessionId for login call $result = $this->authServer($user, $byte_array, $wsdl, $endpoint); //print_r( $result ); $authId = $result->result->authSessionId; $encServerChallenge = $result->result->encryptedClientChallenge; $serverChallenge = $result->result->serverChallenge; // Hack to deal with null returns in challenge strings ( weak! ) // The trick is setting the null value to 128 - which should actually be out of range for java since it uses -128 through 127 but it works... foreach ($encServerChallenge as $key => $val) { $val = trim($val); if (isset($val) && $val !== null && $val !== "") { $container[] = $val; } else { $container[] = 128; } } // Now we have to decrypt the binary string $decryptMe = $this->packer($container); // USE RESP CERT TO DECYRPT THE VALUE AND DIFF ON ORIGINAL STRING VALUE !!! // GET A X509 INSTANCE, THEN GET THE PUBLIC KEY FOR openssl_public_decrypt $x509 = openssl_x509_read($responsys_certificate_file); openssl_x509_export($x509, $newX509); $pubKey = openssl_get_publickey($newX509); if (openssl_public_decrypt($decryptMe, $decrypted, $pubKey, OPENSSL_PKCS1_PADDING)) { $data = $decrypted; } else { throw new Exception("Failed to decrypt the challenge " . openssl_error_string()); } // Compare the original string to the decrypted data string // If this matches then the decryption logic is proper, and we proceed to login call if ($byte_array_challenge == $data) { // Get the private key for encrypting the return $private_key = openssl_get_privatekey($mdixon_certificate_file); foreach ($serverChallenge as $j => $b) { $val2 = trim($b); if (isset($val2) && $val2 !== null && $val2 !== "") { $container2[] = $val2; } else { $container2[] = 128; } } $encryptMe = $this->packer($container2); if (!openssl_private_encrypt($encryptMe, $encryptedData, $private_key, OPENSSL_PKCS1_PADDING)) { throw new Exception("Failed to Encrypt data with Private Key - exiting"); } // Now we have to unpack data which converts unsigned encrypted data to signed byte type // to play nice with java signed byte type $unpackedData = unpack('c*', $encryptedData); // Now iterate through bytes, and set the 128 values to null since API allows / sends nulls foreach ($unpackedData as $m => $d) { $val3 = trim($d); if ($val3 == 128) { $container3[] = null; } else { $container3[] = $val3; } } // Now we have all of the parts, set the authId as the session id for the login call, and send in the prepared encrypted server challenge // If all goes well we will get a sessionId in the result of the upcoming call. $this->setSoapHeaders($authId); $this->setSessionCookie(); $loginWithCertObj = new loginWithCertificate($container3); $result = $this->execute($loginWithCertObj); if ($result) { $this->sessionId = $result->result->sessionId; if (!$this->setSoapHeaders() || !$this->setSessionCookie()) { throw new Exception(self::SOAP_ERROR_HEADER); } self::$isLoggedIn = true; } else { throw new Exception(self::SOAP_ERROR_LOGIN); } //print_r( $result ); return $result; } else { throw new SoapFault("Problem during handshake - exiting"); } }
<?php include '../bootstrap.php'; try { $instance = new interact(); $instance->debug = true; $instance->intitializeSoapClient($config_file['hatm_location']['wsdl'], $config_file['hatm_location']['endpoint']); if ($instance->login($config_file['auth_hatm']['login'], $config_file['auth_hatm']['pass'])) { $merge_trigger_obj = new HAmergeTriggerEmail(); // Print out XML transmissions - nice to have! $merge_trigger_obj->debug = true; $rule = new ListMergeRule(); $status = new DefaultPermissionStatus(); $status->defaultPermissionStatus = DefaultPermissionStatus::OPT_IN; $rule->setDefaultPermissionStatus($status); $rule->setInsertOnNoMatch(true); $match1 = new MatchColumn(); $match1->matchColumn = $match1::RECIPIENT_ID; $rule->setMatchColumn1($match1); $match_op = new MatchOperator(); $match_op->matchOperator = $match_op::_NONE_; $rule->setMatchOperator($match_op); $reject_channel = new RejectChannel(); $reject_channel->rejectChannel = $reject_channel::EMAIL; $rule->setRejectChannel($reject_channel); $update = new UpdateOnMatch(); $update->updateOnMatch = $update::REPLACE; $rule->setUpdateOnMatch($update); $merge_trigger_obj->setMergeRuleParam($rule); $interact_object = new InteractObject(); $interact_object->setFolderName("z_ComprehensiveAccountTesting");