我正在尝试在 Magento 中创建一个新客户.这是我为此编写的 PHP 脚本
I am trying to create a new customer in Magento. Here's PHP script I wrote for that
<?php
$callbackUrl = "http://localhost/magento/webservices/NewCustomer1.php";
$temporaryCredentialsRequestUrl = "http://localhost/magento/oauth/initiate?oauth_callback=". urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://localhost/magento/admin/oauth_authorize';
$accessTokenRequestUrl = 'http://localhost/magento/oauth/token';
$apiUrl = 'http://localhost/magento/api/rest';
$consumerKey = 's3xt7w8lwhfrrfzrfvwm3lrilkf66d5n';
$consumerSecret = 'vr3eq1x899pz1cf4zzxjzx3q03t66r3n';
session_start();
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
$_SESSION['state'] = 0;
}
try {
$authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
$oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
$oauthClient->enableDebug();
if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
$requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
$_SESSION['secret'] = $requestToken['oauth_token_secret'];
$_SESSION['state'] = 1;
header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
exit;
} else if ($_SESSION['state'] == 1) {
$oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
$accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
$_SESSION['state'] = 2;
$_SESSION['token'] = $accessToken['oauth_token'];
$_SESSION['secret'] = $accessToken['oauth_token_secret'];
header('Location: ' . $callbackUrl);
exit;
} else {
$oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
$resourceUrl = "$apiUrl/customers/create";
$customerData = json_encode(array(
'firstname' => 'demofirstname',
'lastname' => 'demolastname',
'email_address' => 'demo@gmail.com',
'password' => 'demo1234',
'confirmation' => 'demo1234',
));
$headers = array('Content-Type' => 'application/json');
$oauthClient->fetch($resourceUrl, $customerData, OAUTH_HTTP_METHOD_POST, $headers);
print_r($oauthClient->getLastResponseInfo());
}
} catch (OAuthException $e) {
print_r($e);
}
?>
我收到此错误
OAuthException:无效的身份验证/错误请求(得到 405,预期为 HTTP/1.120X 或重定向)在 C:wampwwwmagentoWebServices ewcustomer1.php在第 47 行调用堆栈 #TimeMemoryFunctionLocation 10.0010386016{main}(.. ewcustomer1.php:0 20.0017391216OAuth->fetch().. ewcustomer1.php:47 )
OAuthException: Invalid auth/bad request (got a 405, expected HTTP/1.1 20X or a redirect) in C:wampwwwmagentoWebServices ewcustomer1.php on line 47 Call Stack #TimeMemoryFunctionLocation 10.0010386016{main}( ).. ewcustomer1.php:0 20.0017391216OAuth->fetch( ).. ewcustomer1.php:47 )
我是 Oauth 和 PHP 的新手.如果有人可以提供帮助,我会很高兴.
I am new to Oauth and PHP. Will be glad if someone can help.
这个自定义 API 我写的作品就像轻而易举.您需要从 Magento 管理面板创建一个 SOAP 用户并添加 SOAP 用户 &以下代码中的数据库凭据以使其工作.
This custom API I wrote works like a breeze. You will need to create a SOAP user from Magento Admin Panel and add SOAP user & DB credentials in following code to make it work.
require_once('../app/Mage.php' );
$dbhost = 'localhost';
$dbUsername = 'root';
$dbPassword = 'password';
$dbName = 'magento';
$soapUsername = 'soapuser';
$soapPassword = 'password';
Mage::app("default");
$store = Mage::app()->getStore();
$storeId = $store->getId();
$websiteId = Mage::app()->getStore()->getWebsiteId();
$email = $_POST['email'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$password = $_POST['password'];
$proxy = new SoapClient('http://yourdomain/magento/index.php/api/?wsdl'); // TODO : change url
$session = $proxy->login($soapUsername, $soapPassword);
try{
$result = $proxy->call($session,'customer.create',array(array('email' => "$email", 'firstname' => "$firstname", 'lastname' => "$lastname", 'password' => "$password", 'website_id' => "$websiteId", 'store_id' => "$storeId", 'group_id' => 1)));
echo json_encode("New Customer created with Id-$result");
$custId = $result;
$shoppingCartId = $proxy->call($session, 'cart.create', array(1));
$customer = array(
'firstname' => "$firstname",
'lastname' => "$lastname",
'email' => "$email",
'password' => md5("$password"),
'customer_id' => "$custId",
'mode' => 'customer',
'website_id' => "$websiteId",
'store_id' => "$storeId",
'group_id' => 1
);
$resultCustomerSet = $proxy->call($session, 'cart_customer.set', array( $shoppingCartId, $customer, $storeId) );
$db_handle = mysql_connect($dbhost, $dbUsername, $dbPassword) or die(mysql_error());
$db_found = mysql_select_db($dbName, $db_handle);
mysql_query("UPDATE `sales_flat_quote` SET `is_active` = '1' WHERE `customer_email` = '$email' ");
mysql_query("INSERT INTO `wishlist` VALUES('','$custId','0','','$timestamp')");
}
catch( Exception $e ) {
echo json_encode($e->getMessage());
}
这篇关于在 Magento 中创建一个新客户(RESTful,PHP)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
在 SELECT(MYSQL/PHP) 中加入 2 个表Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 个表)
如何使<option selected=“selected">由How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 设置?)
使用 PHP 中的数组自动填充选择框Auto populate a select box using an array in PHP(使用 PHP 中的数组自动填充选择框)
PHP SQL SELECT where like search item with multiple wordsPHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 从 MSSQL-SELECT 产生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(),名称 ASCMySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名称 ASC)