Second script shows how to import commission groups from a .csv file.
1. This simple example assumes that you already know the desired affiliate id, campaign id and commission group id.
<?php include 'affiliate/api/PapApi.class.php'; $session = new Pap_Api_Session("https://localhost/affiliate/scripts/server.php"); if(!$session->login("merchant@example.com", "demo")) { die("Cannot login. Message: ".$session->getMessage()); }else{ echo "Success"; } $request = new Gpf_Rpc_FormRequest("Pap_Features_CommissionGroups_AffiliateGroupForm", "add", $session); // Id should be blank, it is populated automatically $request->setField('Id',''); // Affiliate's user id. $request->setField('userid','252da3f5'); // Affiliate's status in the commission group. // A = Approved, R = Ascending, F = Descending, X = Fixed $request->setField('rstatus','A'); // Note about the affiliate in the commission group $request->setField('note',''); // Commission group id $request->setField('commissiongroupid','7afb3b88'); // Campaign id in which is the commission group $request->setField('campaignid','11111111'); try { // Send the request to PAP $request->sendNow(); } catch(Exception $e){ die("API call error: " . $e->getMessage()); } // Get response. Not required, but you might want to know if it was successful. $response = $request->getStdResponse(); // Display the response echo '<pre>' . print_r($response,true) . '</pre>'; ?>
2. This example assumes that you have affiliate username/email, campaign ID and commission group ID saved in a .csv file in this format:
username;campaignID;groupID
affiliate@email.com;11111111;22222222
<?php $papURL = "https://YOUR_ACCOUNT.postaffiliatepro.com"; //SET PATH TO YOUR POST AFFILIATE PRO ACCOUNT HERE $merchantUsername = "merchant_email"; //ENTER YOUR MERCHANT USERNAME HERE $merchantPassword = "merchant_password"; //ENTER YOUR MERCHANT PASSWORD HERE $pathToApiFile = 'PapApi.class.php'; //path to PapApi.class.php file(do not edit if it's in the same folder as this script) $handle = @fopen("YOUR_FILE_NAME.csv", "r"); //change the name or path to the .csv file here $separatorInFile = ";"; //separator of .csv file $aff = array(); if ($handle) { $i = 0; $changed = 0; while (($buffer = fgets($handle, 4096)) !== false) { if ($i == 0) { // SKIP FIRST ROW WHEN CSV FILE CONTAINS HEADER. IF NOT, REMOVE THESE 4 LINES (condition (IF)) $i++; continue; } $i++; $aff[$i] = explode($separatorInFile,$buffer); } if (!feof($handle)) { echo "Error: unexpected fgets() fail\n"; } fclose($handle); include_once ($pathToApiFile); $session = new Pap_Api_Session($papURL."/scripts/server.php"); if(!@$session->login($merchantUsername, $merchantPassword)) { die("Cannot login. Message: ".$session->getMessage()); } //$session->setDebug(); $cache = array(); foreach ($aff as $affiliate) { $username=trim($affiliate[0]); //AFFILIATE USER NAME/EMAIL $campaign=trim($affiliate[1]); //Campaign ID $group=trim($affiliate[2]); //Commission group ID if ($username == '') { file_put_contents("error.log", "Error importing affiliate email: '".$username."', campaign: " .$campaign."\n", FILE_APPEND); continue; } $userId = getAffiliateUserid($session, $username); if ($userId == '') { file_put_contents("error.log", "Error importing affiliate email: '".$username."', campaign: " .$campaign."\n", FILE_APPEND); continue; } $result = addToGroup($session, $userId, $campaign, $group); if (!$result) { file_put_contents("error.log", "Error importing affiliate email: '".$username."', campaign: " .$campaign."\n", FILE_APPEND); } } echo "Import finished<hr>Check the 'error.log' file for any errors that might occured\n"; } function addToGroup($session, $userId, $campaign, $group) { $request = new Gpf_Rpc_FormRequest("Pap_Features_CommissionGroups_AffiliateGroupForm", "add", $session); $request->setField('Id',''); // Affiliate's user id. $request->setField('userid', $userId); // Affiliate's status in the commission group. // A = Approved, R = Ascending, F = Descending, X = Fixed $request->setField('rstatus','A'); // Note about the affiliate in the commission group $request->setField('note',''); // Commission group id $request->setField('commissiongroupid', $group); // Campaign id in which is the commission group $request->setField('campaignid', $campaign); try { $request->sendNow(); } catch(Exception $e){ die("API call error: " . $e->getMessage()); } $responseForm = $request->getForm(); if($responseForm->isSuccessful()) { return true; } file_put_contents("error.log", "Error setting group: '".$responseForm->getErrorMessage()."', group: " .$group."\n", FILE_APPEND); return false; } function getAffiliateUserid($session, $username) { global $cache; if (array_key_exists($username, $cache)) { return $cache[$username]; } $request = new Pap_Api_AffiliatesGrid($session); $request->addFilter('username', Gpf_Data_Filter::EQUALS, $username); $request->setLimit(0, 30); $request->addParam('columns', new Gpf_Rpc_Array(array(array('id'), array('refid'), array('userid')))); // send request try { $request->sendNow(); } catch(Exception $e) { $errorMessage = $e->getMessage(); file_put_contents("error.log", date('Y-m-d H:i:s')."\n", FILE_APPEND); file_put_contents("error.log", "Error: " .$errorMessage."\n", FILE_APPEND); return; } $grid = $request->getGrid(); $recordset = $grid->getRecordset(); foreach($recordset as $rec) { $cache[$username] = $rec->get('userid'); return $rec->get('userid'); } } ?>
Guide explaining how to retrieve the commission group id for a campaign can be found here: https://support.qualityunit.com/235875-How-to-get-commission-group-id.