/** * connect to salesforce, get sforceClient * @return SforcePartnerClient */ public static function getClient() { if (self::$_sForceClient == NULL) { $sforceClient = new SforcePartnerClient(); // TODO now only partner client supported. $soapClient = $sforceClient->createConnection(self::$wsdlPartner); if (PHP_SAPI != 'cli') { @session_start(); if (isset($_SESSION[self::SESSION_KEY])) { $conf = $_SESSION[self::SESSION_KEY]; $sforceClient->setEndpoint($conf->location); $sforceClient->setSessionHeader($conf->sessionId); } else { $sforceLogin = $sforceClient->login(self::$username, self::$password . self::$securityToken); $conf = new stdClass(); $conf->location = $sforceClient->getLocation(); $conf->sessionId = $sforceClient->getSessionId(); $_SESSION[self::SESSION_KEY] = $conf; } } else { $sforceLogin = $sforceClient->login(self::$username, self::$password . self::$securityToken); } self::$_sForceClient = $sforceClient; } return self::$_sForceClient; }
// API でログインするセールスフォースのアカウントです。 define("LOGIN_ID", "*****@*****.**"); // パスワードの後ろにセキュリティトークンを付けます。 define("LOGIN_PASS", "sis-515user" . SECURITY_TOKEN); // 接続用クラスを生成します。 $sforce_connection = new SforcePartnerClient(); $soap_client = $sforce_connection->createConnection(PARTNER_WSDL_FILE, null); try { // セールスフォースへログインを実行します。 $login = $sforce_connection->login(LOGIN_ID, LOGIN_PASS); //var_dump($login); } catch (Exception $e) { var_dump($e); } // SOAPクライアントを作成します $parsedURL = parse_url($sforce_connection->getLocation()); define("_SFDC_SERVER_", substr($parsedURL['host'], 0, strpos($parsedURL['host'], '.'))); define("_WS_NAME_", "WS_TwilioDemo"); define("_WS_ENDPOINT_", 'https://login.salesforce.com/services/wsdl/class/' . _WS_NAME_); define("_WS_NAMESPACE_", 'http://soap.sforce.com/schemas/class/' . _WS_NAME_); $client = new SoapClient(WS_TWILIO_WSDL_FILE); $sforce_header = new SoapHeader(_WS_NAMESPACE_, "SessionHeader", array("sessionId" => $sforce_connection->getSessionId())); $client->__setSoapHeaders(array($sforce_header)); try { // GETされたユーザの入力を分割 // Parameterが無い場合は終了する if (empty($_GET['Digits'])) { echo "Oh! No Param."; return; } // call the web service via post
foreach ($response as $result) { echo $result->success == 1 ? $result->id . " deleted<br/>\n" : "Error: " . $result->errors->message . "<br/>\n"; } echo "</td><td>"; echo "Now let's use the partner client<br/><br/>\n"; $mySforceConnection = new SforcePartnerClient(); $mySforceConnection->createConnection("soapclient/partner.wsdl.xml"); if (isset($_SESSION['partnerSessionId'])) { $location = $_SESSION['partnerLocation']; $sessionId = $_SESSION['partnerSessionId']; $mySforceConnection->setEndpoint($location); $mySforceConnection->setSessionHeader($sessionId); echo "Used session ID for partner<br/><br/>\n"; } else { $mySforceConnection->login(USERNAME, PASSWORD . SECURITY_TOKEN); $_SESSION['partnerLocation'] = $mySforceConnection->getLocation(); $_SESSION['partnerSessionId'] = $mySforceConnection->getSessionId(); echo "Logged in with partner<br/><br/>\n"; } $query = "SELECT Id, FirstName, LastName, Phone from Contact"; $response = $mySforceConnection->query($query); $queryResult = new QueryResult($response); echo "Results of query '{$query}'<br/><br/>\n"; for ($queryResult->rewind(); $queryResult->pointer < $queryResult->size; $queryResult->next()) { $record = $queryResult->current(); // Id is on the $record, but other fields are accessed via // the fields object echo $record->Id . ": " . $record->fields->FirstName . " " . $record->fields->LastName . " " . $record->fields->Phone . "<br/>\n"; } echo "<br/>Now, create some records<br/><br/>\n"; $records = array();