
Código necessário para criar um cliente no Magento programaticamente, cadastrando também os endereços de entrega e cobrança.
Vamos ao código!
Primeiro passo, vamos carregar o model dos clientes “customers”.
$customer = Mage::getModel("customer/customer"); Setando os principais atributos.
$customer->setWebsiteId($websiteId) ->setStore($store) ->setGroupId(1) ->setFirstname($first_name) ->setLastname($last_name) ->setEmail($email) ->setDob($dob) ->setPassword($password);
GrouId: Grupo do usuário, número 1 é grupo “comum”.
Dob: Data de nascimento (formato: yyyy-mm-dd)
Website: Relaciona o cadastro com um website.
Store: Relaciona o cadastro com uma loja.
Você consegue saber qual é a loja / website que está sendo utilizando usando:
$websiteId = Mage::app()->getWebsite()->getId(); $storeId = Mage::app()->getStore();
Os demais campos são auto-explicativos.
Caso você tenha adicionado (ou exista) um campo personalizado no cadastro do cliente, basta utilizar “setNomedocampo()”, sendo o “set” minusculo e a primeira letra do campo maiúscula.
Para salvar o cadastro utilize o código abaixo:
$customer->save();
Para verificar se o e-mail do cliente já está cadastrado utilize
$websiteId = Mage::app()->getWebsite()->getId();
$customer = Mage::getModel("customer/customer");
$customer->setWebsiteId($websiteId);
$customer->loadByEmail($email);
if ($customer->getId()) {
echo "Email já cadastrado!";
} É importante fazer essa verificação, evitando mensagens de erro genéricas na sua integração.
Primeiro, carregamos o model do endereço “address”.
$address = Mage::getModel("customer/address"); Definindo os principais campos.
$address->setCustomerId($customer->getId())
->setFirstname($customer->getFirstname())
->setLastname($customer->getLastname())
->setCountryId('BR')
->setRegionId('50')
->setPostcode('31000')
->setCity('São Paulo')
->setTelephone('00 0000-0000')
->setStreet('Rua'); CountryId: ID do pais, no nosso caso “BR”.
RegionId: ID do estado.
Use código abaixo para descobrir qual é o RegionId de um estado pelo sigla:
$regionCollection = Mage::getModel('directory/region_api')->items("BR");
$UF = "SP";
foreach($regionCollection as $region) {
if( $region['code'] == $UF ){
$regionId = $region['region_id'];
break;
}
}
var_dump( $regionId ); Código acima é só uma maneira de fazer isso, aconselho a utilização do array_column ou array_column (PHP 5.5).
Para definir este endereço como padrão para entrega, utilize:
$address->setIsDefaultShipping('1');
Como endereço padrão de cobrança:
$address->setIsDefaultBilling('1');
Adicionar a cadastros de endereços do cliente:
$address->setSaveInAddressBook('1');
Para salvar o endereço utilize:
$address->save();
Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…
Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.
O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…
A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…
Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…
Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…