Obwohl BigCommerce webhooks mit würde die höchste Erfolgsquote der Ausführung Ihrer Kundengruppenzuordnung App gewährleisten, bedarf es einiges an Setup auf BigCommerce (die Schaffung eines Entwurf App, einen oAuth Schlüssel, Hampelmänner, etc.), und kann ein bisschen Overkill für Ihre Anforderungen sein.
Hier ist ein einfacher Weg, in meiner {meist} bescheidenen Meinung, die viel von dem ausnutzt, was Sie in Ihrer ursprünglichen Frage eingeschlossen haben. Jede Lösung erfordert jedoch einen externen Server, der die Kundengruppenzuordnung über die BigCommerce-API übernimmt.
Im BigCommerce Bedienfeld für den Benutzer in dem zusätzlichen Feld hinzufügen Formular anmelden, wie Sie erwähnen. 
So wie Sie das neue Eingabefeld sehen können, wurde nativ auf die Standardregistrierungsseite hinzugefügt: 
So, jetzt, wenn ein Benutzer ein Konto auf Ihrer Website erstellt, die Wert für das Signup Code
(das benutzerdefinierte Feld erstellt) wird direkt über die API für das Konto dieses Kunden verfügbar sein. Werfen Sie einen Blick auf das, was die JSON-Daten wie folgt aussieht: 
Okay, das ist schön und alle, aber wie wir es tun automatisieren?
Um dies zu tun, müssen wir unsere externe Anwendung wissen lassen, dass sich ein Kunde gerade registriert hat. Darüber hinaus benötigt unsere externe Anwendung einen Verweis auf diesen neu erstellten Kunden, damit er weiß, für welchen Kunden er die Kundengruppe aktualisieren soll. Normalerweise würde uns ein BigCommerce-Webhook davon in Kenntnis setzen, aber da wir keinen BigCommerce-Webhook verwenden, gibt es hier die alternative Methode, das externe Skript auszulösen.
- Wir werden unsere externe Anwendung über die Seite BigCommerce Registrierungsbestätigung auslösen -
createaccount_thanks.html
. Diese Seite wird sofort geladen, nachdem ein Kunde ein Konto erstellt hat. Daher ist dies der perfekte Ort, um unser Triggerscript einzufügen.
- Nachdem der Kunde angemeldet ist, können wir über eine BigCommerce Global-Systemvariable -
%%GLOBAL_CurrentCustomerEmail%%
- auf die E-Mail-Adresse des Kunden zugreifen.
- Wir sollten eine HTTP-Anfrage von dieser Seite an unsere externe Anwendung zusammen mit der E-Mail-Adresse des Kunden senden. Insbesondere können wir eine XMLHttpRequest über JavaScript erstellen, oder um modern zu sein, verwenden wir Ajax über jQuery. Dieses Skript sollte vor dem schließenden
</body>
-Tag unter createaccount_thanks.html
eingefügt werden.
Beispiel für POST-Anforderung (obwohl ein GET als auch ausreichen würde):
<script>
$(function() {
$('.TitleHeading').text('One moment, we are finalizing your account. Please wait.').next().hide(); // Let the customer know they should wait a second before leaving this page.
//** Configure and Execute the HTTP POST Request! **//
$.ajax({
url: 'the_url_to_your_script.com/script.php',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({email:"%%GLOBAL_CurrentCustomerEmail%%"}),
success: function() {
// If the customer group assignment goes well, display page and proceed normally. This callback is only called if your script returns a 200 status code.
$('.TitleHeading').text('%%LNG_CreateAccountThanks%%').next().show();
},
error: function() {
// If the customer group assignment failed, you might want to tell your customer to contact you. This callback is called if your script returns any status except 200.
$('.TitleHeading').text('There was a problem creating your account').after('Please contact us at +1-123-456-7890 so that we can look into the matter. Please feel free to continue shopping in the meantime.');
}
});
});
</script>
Nun endlich, Sie müssen nur verantwortlich Ihre serverseitige Anwendung erstellen, für die Anfrage über Handhabung und Aktualisierung des Kunden Kunden Gruppe. Sie können jede Sprache verwenden, die Sie wünschen, und BigCommerce sogar offers several SDK's können Sie verwenden, um Mega Entwicklungszeit zu speichern. Denken Sie daran, dass Sie es irgendwo online hosten müssen, und fügen Sie dann seine URL in das JS-Skript oben ein.
PHP Beispiel (quick & schmutzig):
git clone https://github.com/bigcommerce/bigcommerce-api-php.git
curl -sS https://getcomposer.org/installer | php && php composer.phar install
<?php
/**
* StackOverflow/BigCommerce :: Set Customer Group Example
* http://stackoverflow.com/questions/37201106/
*
* Automatically assigning a customer group.
*/
//--------------MAIN------------------------//
// Load Dependencies:
require ('bigcommerce-api-php/vendor/autoload.php');
use Bigcommerce\Api\Client as bc;
// Define BigCommerce API Credentials:
define('BC_PATH', 'https://store-abc123.mybigcommerce.com');
define('BC_USER', 'user');
define('BC_PASS', 'token');
// Load & Parse the Email From the Request Body;
$email = json_decode(file_get_contents('php://input'))->email;
// Execute Script if API Connection Good & Email Set:
if ($email && setConnection()) {
$customer = bc::getCollection('/customers?email=' .$email)[0]; //Load customer by email
$cgid = determineCustomerGroup($customer->form_fields[0]->value); //Determine the relevant customer group ID, via your own set string comparisons.
bc::updateCustomer($customer->id, array('customer_group_id' => $cgid)) ? http_send_status(200) : http_send_status(500); //Update the customer group.
} else {
http_send_status(500);
exit;
}
//-------------------------------------------------//
/**
* Sets & tests the API connection.
* @return bool true if the connection successful.
*/
function setConnection() {
try {
bc::configure(array(
'store_url' => BC_PATH,
'username' => BC_USER,
'api_key' => BC_PASS
));
} catch (Exception $e) {
return false;
}
return bc::getResource('/time') ? true : false; //Test Connection
}
/**
* Hard define the customer group & signup code associations here.
* @param string The code user used at signup.
* @return int The associated customergroup ID.
*/
function determineCustomerGroup($signupCode) {
switch ($signupCode) {
case 'test123':
return 1;
case 'codeIGaveToTheUser':
return 8;
default:
return 0;
}
}
Also dann würden Sie Ihre Kundengruppe String-Vergleiche direkt im Serverside-Programm tun. Ich würde empfehlen, dass Sie Ihr eigenes BC-API-Skript neu schreiben, da das oben genannte in der Qualität wirklich etwas in Richtung des funktionalen Pseudo-Codes ist, aber mehr vorhanden, um die allgemeine Idee zu zeigen. HTH
Um klar zu sein, wenn Support Ihnen sagt, dass etwas nicht getan werden kann, bedeutet es, dass es keine Einstellung gibt. Dies kann durch Anpassung erreicht werden.Es erfordert einen eigenen Webserver, der so konfiguriert ist, dass er nach Webhooks lauscht und den erstellten Kunden basierend auf Ihrer eigenen Geschäfts-/Code-Logik zuweist. – Alyss
Dank Alyssa, können Sie mir eine Vorstellung davon geben, wie kompliziert das ist, oder vielleicht etwas einfacher erklären? Ich bin kein kompletter Anfänger, aber diese Art von Projekt ist mir etwas fremd. Hinweis - Sind die BCs-Servereinstellungen von Nutzen? – Tron
Es gibt einen Tippfehler. Mein Name ist Alyss, nicht Alyssa :). BC-Servereinstellungen sind nicht von Nutzen. Sie müssten einen externen Server oder etwas wie Heroku haben, das könnte. Javascript würde wahrscheinlich nicht ausreichen. – Alyss