Typowe operacje

Na tej stronie przedstawiamy przykłady typowych operacji, które można wykonać w Bibliotece wspólnych sprzedawców na Androida:


Tworzenie obiektów ResellerService

Do tworzenia obiektów ResellerService używaj klas fabrycznych Samsung i Google. W przypadku obiektów ResellerService typowy zestaw metod umożliwia rejestrowanie urządzeń Samsung i innych urządzeń z Androidem.

Urządzenia Samsung

Poniższy przykład pokazuje, jak utworzyć obiekt ResellerService za pomocą klasy SamsungResellerServiceFactory do zarządzania urządzeniami Samsung.

Zanim to zrobisz, musisz zarejestrować się w programie wdrażania Knox.

ResellerService samsungResellerService = SamsungResellerServiceFactory.createResellerService(resellerId, serviceAccountKeyFilePath, clientIdentifier);

Inne urządzenia z Androidem

Poniższy przykład pokazuje, jak utworzyć obiekt ResellerService za pomocą klasy GoogleResellerServiceFactory do zarządzania innymi urządzeniami z Androidem (bez Samsunga). Zanim to zrobisz, musisz wykonać czynności opisane w artykule Rejestracja typu zero-touch, aby uzyskać resellerId i klucz konta usługi.

ResellerService googleResellerService = GoogleResellerServiceFactory.createResellerService(resellerId, serviceAccountKeyFilePath);

Tworzenie obiektów Customer

Klient, który kupuje urządzenia Samsung i inne firmy, potrzebuje 2 identyfikatorów.

Urządzenia Samsung

Do zarządzania urządzeniami Samsung używasz identyfikatora klienta Knox klienta. Aby uzyskać identyfikator klienta Knox, musisz najpierw utworzyć obiekt Customer. Aby to zrobić, wywołaj metodę createCustomer za pomocą metody SamsungResellerService utworzonej z SamsungResellerServiceFactory. Oto przykład:

CreateCustomerRequest request = CreateCustomerRequest.newBuilder()
    .setCustomerName("TestCustomer") .addPrimaryEmails("superAdmin@gmail.com")
    .putVendorParams("country", "US") .putVendorParams("firstName", "Avery")
    .putVendorParams("lastName", "Yamada") .putVendorParams("service", "KME")
    .build();
CreateCustomerResponse response = samsungResellerService.createCustomer(request);
String companyId = response.getCustomer().getCompanyReference().getCompanyId();

Jeśli żądanie się powiedzie, żądanie zwróci obiekt CreateCustomerResponse, z którego można wyodrębnić identyfikator klienta Knox.

Inne urządzenia z Androidem

W przypadku innych urządzeń z Androidem klient wymaga rejestracji typu zero-touch. Jeśli klient korzysta już z rejestracji typu zero-touch u innego sprzedawcy, użyj jego identyfikatora. W przeciwnym razie musisz utworzyć obiekt Customer. Aby to zrobić, wywołaj metodę createCustomer przy użyciu metody ResellerService utworzonej z GoogleResellerServiceFactory. np.:

CreateCustomerRequest request = CreateCustomerRequest.newBuilder()
    .setCustomerName("TestCustomer")
    .addPrimaryEmails("owner@gmail.com")
    .addSecondaryEmails("admin@gmail.com")
    .build();
CreateCustomerResponse response = googleResellerService.createCustomer(request);
String companyId = response.getCustomer().getCompanyReference().getCompanyId();

Jeśli operacja się powiedzie, żądanie zwróci obiekt CreateCustomerResponse. Możesz go pobrać z odpowiedzi.


Odbierz grupę urządzeń

Odebranie urządzenia powoduje powiązanie między nim a klientem. Jeśli na przykład sprzedajesz grupie urządzeń klientowi, możesz zarezerwować ich urządzenia.

Ten przykład pokazuje jeden sposób przetwarzania grupy urządzeń, która obejmuje zamówienia składane przez wielu producentów (Samsung i inne urządzenia z Androidem) od różnych klientów.

Krok 1. Uporządkuj urządzenia i klientów

Biorąc pod uwagę tablicę IMEI, producenta i identyfikatora klientów, którym urządzenia zostały sprzedane, jednym ze sposobów zarządzania zamówieniami jest podzielenie ich na dwie listy: zamówienia na urządzenia Samsung i inne zamówienia na urządzenia z systemem Android (inne niż Samsung). Następnie pogrupuj urządzenia według klientów. Przykład:

Urządzenia Samsung

Nazwa klienta Identyfikator klienta Samsung Knox Producent IMEI
Firma ABC 11 Samsung

1234567801

1234567802

Inne urządzenia z Androidem

Nazwa klienta Identyfikator klienta Producent IMEI
Firma ABC 21 Google 1234567803
Firma XYZ 22 Sony

1234567804

1234567805

Krok 2. Utwórz obiekt ClaimDevicesRequest

Urządzenia Samsung

// Note: You can only claim devices for a single customer in each request.
ClaimDevicesRequest claimSamsungDevicesRequest = ClaimDevicesRequest.newBuilder()
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567801")
                   .setManufacturer("Samsung")
                   .build())
       .build())
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567802")
                   .setManufacturer("Samsung")
                   .build())
           .build())
   .build();

Inne urządzenia z Androidem

ClaimDevicesRequest claimGoogleDevicesRequest = ClaimDevicesRequest.newBuilder()
    .addClaims(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("21")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .setManufacturer("Google")
                    .build())
            .build())
    .addClaims(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("22")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567804")
                    .setManufacturer("Sony")
                    .build())
            .build())
    .addClaims(
         DeviceClaim.newBuilder()
             .setCustomer(
                 CompanyReference.newBuilder()
                     .setVendor(Vendor.GOOGLE)
                     .setCompanyId("22")
                     .build())
             .setDeviceIdentifier(
                 DeviceIdentifier.newBuilder()
                     .setImei("1234567805")
                     .setManufacturer("Sony")
                     .build())
             .build())
    .build();

Krok 3. Zarezerwuj urządzenia klientów

Aby odebrać urządzenia klientów, zadzwoń na numer ClaimDevicesAsync. W tym przykładzie wymagane są 2 osobne żądania: jedno z obiektu Samsung ResellerService i jedno z obiektu ResellerService Google.

// Samsung devices
ClaimDevicesResponse samsungResponse = samsungResellerService.claimDevicesAsync(claimSamsungDevicesRequest);

// Other Android devices
ClaimDevicesResponse googleResponse = googleResellerService.claimDevicesAsync(claimGoogleDevicesRequest);

Żądanie ClaimDevicesAsync zwraca listę obiektów Operation, które zawierają stan żądania (w toku, ukończone, zakończone z błędami lub nieudane). Aby sprawdzić stan operacji (np. jeśli odpowiedź zwróciła wartość IN_PROGRESS), wywołaj funkcję getOperation.

// Samsung devices
GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

// Other Android devices
GetOperationRequest googleOperationRequest = GetOperationRequest.newBuilder().setOperationId(googleOperationId).build();
Operation googleOperation = googleResellerService.getOperation(googleOperationRequest);

Cofanie rezerwacji grupy urządzeń

Odłączenie urządzenia powoduje odłączenie go od klienta. Jeśli zamówienie na urządzenie zostanie anulowane lub nie uda się go przesłać, konieczne może być anulowanie zgłoszenia urządzenia. Aby anulować wybór grupy urządzeń:

Krok 1. Utwórz obiekt UnclaimDevicesRequest

Urządzenia Samsung

// Each request can only unclaim devices belonging to a single customer. The request must also
// include the customer's Samsung Knox customer ID.
UnclaimDevicesRequest unclaimSamsungDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .putVendorParams("customerId", "11")
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567801")
                    .build())
        .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567802")
                    .build())
            .build())
    .build();

Inne urządzenia z Androidem

UnclaimDevicesRequest unclaimGoogleDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .build())
            .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567804")
                    .build())
            .build())
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567805")
                    .build())
            .build())
    .build();

Krok 2. Anuluj rezerwację urządzeń

Aby anulować rezerwację urządzeń, zadzwoń na numer UnclaimDevicesAsync. W tym przykładzie wymagane są 2 osobne żądania: jedno z obiektu Samsung ResellerService i jedno z obiektu ResellerService Google.

UnclaimDevicesResponse samsungResponse = samsungResellerService.unclaimDevicesAsync(unclaimSamsungDevicesRequest);
UnclaimDevicesResponse googleResponse = googleResellerService.unclaimDevicesAsync(unclaimGoogleDevicesRequest);

Żądanie UnclaimDevicesAsync zwraca listę obiektów Operation, które zawierają stan żądania (w toku, ukończone, zakończone z błędami lub nieudane). Aby sprawdzić stan operacji (na przykład zwrócono odpowiedź IN_PROGRESS), wywołaj funkcję getOperation.

Urządzenia Samsung

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

Inne urządzenia z Androidem

GetOperationRequest googleOperationRequest = GetOperationRequest.newBuilder().setOperationId(googleOperationId).build();
Operation googleOperation = googleResellerService.getOperation(googleOperationRequest);

Wymiana urządzenia Samsung

Jeśli urządzenie wymaga wymiany z jakiegoś powodu, możesz je wymienić. W tym przykładzie zakładamy, że wymieniasz urządzenie Samsung na inne urządzenie Samsung.

Krok 1. Utwórz obiekt UnclaimDeviceRequest

// Note: The request must include the customer's Samsung Knox customer ID.
UnclaimDevicesRequest unclaimSamsungDevicesRequest = UnclaimDevicesRequest.newBuilder()
    .putVendorParams("customerId", "11")
    .addUnclaims(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567801")
                    .build())
        .build())
    .build();

Krok 2. Zadzwoń pod numer UnclaimDeviceAsync

UnclaimDevicesResponse samsungResponse = samsungResellerService.unclaimDevicesAsync(unclaimSamsungDevicesRequest);

Żądanie UnclaimDevicesAsync zwraca listę obiektów Operation, które zawierają stan żądania (w toku, ukończone, z błędami lub nieudane). Aby sprawdzić stan operacji (np. zwrócono odpowiedź IN_PROGRESS), wywołaj funkcję getOperation:

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

Krok 3. Utwórz obiekt ClaimDeviceRequest

ClaimDevicesRequest claimSamsungDevicesRequest = ClaimDevicesRequest.newBuilder()
   .addClaims(
       DeviceClaim.newBuilder()
           .setCustomer(
               CompanyReference.newBuilder()
                   .setVendor(Vendor.SAMSUNG)
                   .setCompanyId("11")
                   .build())
           .setDeviceIdentifier(
               DeviceIdentifier.newBuilder()
                   .setImei("1234567806")
                   .setManufacturer("Samsung")
                   .build())
       .build())
   .build();

Krok 4. Zadzwoń do firmy ClaimDeviceAsync

ClaimDevicesResponse samsungResponse = samsungResellerService.claimDevicesAsync(claimSamsungDevicesRequest);

Żądanie ClaimDevicesAsync zwraca listę obiektów Operation, które zawierają stan żądania (w toku, zakończone, ukończone z błędami lub nieudane). Aby sprawdzić stan operacji (np. zwrócono odpowiedź IN_PROGRESS), wywołaj funkcję getOperation:

GetOperationRequest samsungOperationRequest = GetOperationRequest.newBuilder().setOperationId(samsungOperationId).build();
Operation samsungOperation = samsungResellerService.getOperation(samsungOperationRequest);

Wymiana urządzenia z Androidem (innego niż Samsung)

Jeśli urządzenie wymaga wymiany z jakiegoś powodu, możesz je wymienić. W tym przykładzie zakładamy, że wymieniasz urządzenie z Androidem (inne niż Samsung), a nie urządzenie inne niż Samsung.

Krok 1. Utwórz obiekt UnclaimDeviceRequest

UnclaimDeviceRequest unclaimGoogleDeviceRequest = UnclaimDeviceRequest.newBuilder()
    .setUnclaim(
        DeviceUnclaim.newBuilder()
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567803")
                    .build())
            .build())
    .build();

Krok 2. Zadzwoń pod numer UnclaimDevice

googleResponse = googleResellerService.unclaimDevice(unclaimGoogleDeviceRequest);

Krok 3. Utwórz obiekt ClaimDeviceRequest

ClaimDeviceRequest claimGoogleDeviceRequest = ClaimDeviceRequest.newBuilder()
    .setClaim(
        DeviceClaim.newBuilder()
            .setCustomer(
                CompanyReference.newBuilder()
                    .setVendor(Vendor.GOOGLE)
                    .setCompanyId("21")
                    .build())
            .setDeviceIdentifier(
                DeviceIdentifier.newBuilder()
                    .setImei("1234567807")
                    .setManufacturer("Google")
                    .build())
            .build())
       .build();

Krok 4. Zadzwoń do firmy ClaimDevice

ClaimDeviceResponse response = googleResellerService.claimDevice(claimGoogleDeviceRequest);

Jeśli operacja się uda, wywołanie ClaimDeviceResponse zwróci obiekt zawierający deviceId. W przeciwnym razie zgłasza powszechny wyjątek zawierający kod błędu.