Quitar una relación de revendedor con un clienteRemove a reseller relationship with a customer

Se aplica aApplies To

  • Centro de partnersPartner Center

Quite una relación de revendedor con un cliente que ya no tenga transacciones.Remove a reseller relationship with a customer that you no longer have transactions with.

Requisitos previosPrerequisites

  • Credenciales tal como se describen en el artículo Autenticación del Centro de partners.Credentials as described in Partner Center authentication. Este escenario admite la autenticación solo con credenciales de aplicación y usuario.This scenario supports authentication with App+User credentials only.

  • Un id. de cliente (customer-tenant-id).A customer ID (customer-tenant-id). Si no conoces el identificador del cliente, puedes buscarlo en el panel del Centro de partners.If you don't know the customer's ID, you can look it up in the Partner Center dashboard. Selecciona CSP en el menú del Centro de partners, seguido de Clientes.Select CSP from the Partner Center menu, followed by Customers. En la lista de clientes, selecciona el cliente y, a continuación, elige Cuenta.Select the customer from the customer list, then select Account. En la página Cuenta del cliente, busca el Id. de Microsoft en la sección Información de la cuenta del cliente.On the customer’s Account page, look for the Microsoft ID in the Customer Account Info section. El identificador de Microsoft es el mismo que el de cliente (customer-tenant-id).The Microsoft ID is the same as the customer ID (customer-tenant-id).

  • Todos los pedidos de instancia reservada de máquina virtual de Azure deben cancelarse antes de que se quite una relación de revendedor.All Azure Reserved VM Instance orders must be canceled before a reseller relationship is removed. Llame al soporte técnico de Azure para cancelar cualquier pedido de instancia reservada de máquina virtual de Azure.Call Azure support for canceling any open Azure Reserved VM Instance orders.

C#C#

Para quitar la relación de revendedor de un cliente, asegúrese en primer lugar de que se cancele cualquier Azure Reserved VM Instances activo para ese cliente.To remove the reseller relationship for a customer, first ensure that any active Azure Reserved VM Instances for that customer are canceled. A continuación, asegúrese de que todas las suscripciones activas para ese cliente están suspendidas.Next, ensure that all active subscriptions for that customer are suspended. Para ello, determine el identificador del cliente para el que desea eliminar la relación de revendedor.To do so, determine the ID of the customer for whom you want to delete the reseller relationship. En el ejemplo de código siguiente, se solicita al usuario que proporcione el identificador del cliente.In the following code example, the user is prompted to provide the customer identifier.

Para determinar si se debe cancelar cualquier Azure Reserved VM Instances para el cliente, recupere la colección de derechos llamando al método colección iaggregatepartner. customers. ById con el identificador de cliente para especificar el cliente, y la propiedad de derechos para recuperar una interfaz para las operaciones de colección de derechos.To determine if any Azure Reserved VM Instances for the customer must be canceled, retrieve the collection of entitlements by calling the IAggregatePartner.Customers.ById method using the customer identifier to specify the customer, and the Entitlements property to retrieve an interface to entitlement collection operations. Llame al método Get o GetAsync para recuperar la colección de derechos.Call the Get or GetAsync method to retrieve the entitlement collection. Filtre la colección para todos los derechos con un valor de EntitlementType de EntitlementType. VirtualMachineReservedInstance y, si hay alguno, cancelo llamando a soporte técnico antes de continuar.Filter the collection for any entitlements with an EntitlementType value of EntitlementType.VirtualMachineReservedInstance and if there are any, cancel them by calling support before proceeding.

A continuación, recupere una colección de las suscripciones del cliente llamando al método colección iaggregatepartner. customers. ById con el identificador de cliente para especificar el cliente, y la propiedad de suscripciones para recuperar una interfaz para las operaciones de colección de suscripciones.Then, retrieve a collection of the customer's subscriptions by calling the IAggregatePartner.Customers.ById method using the customer identifier to specify the customer, and the Subscriptions property to retrieve an interface to subscription collection operations. Por último, llame al método Get o GetAsync para recuperar la colección de suscripciones del cliente.Finally, call the Get or GetAsync method to retrieve the customer's subscriptions collection. Recorra la colección de suscripciones y asegúrese de que ninguna de las suscripciones tenga un valor de propiedad subscriptions. status de SubscriptionStatus. Active.Traverse the subscription collection and ensure that none of the subscriptions have a Subscriptions.Status property value of SubscriptionStatus.Active. Si aún hay una suscripción activa, consulte suspensión de una suscripción para obtener información sobre cómo suspenderla.If a subscription is still active, see Suspend a subscription for information on how to suspend it.

Después de confirmar que se han cancelado todos los Azure Reserved VM Instances activos para ese cliente y que todas las suscripciones activas están suspendidas, puede quitar la relación de revendedor para el cliente.After confirming that all active Azure Reserved VM Instances for that customer are canceled and all active subscriptions are suspended, you can remove the reseller relationship for the customer. En primer lugar, cree un nuevo objeto [Customer/dotnet/API/Microsoft. Store. partnercenter. Models. customers. Customer) con la propiedad [Customer. RelationshipToPartner/dotnet/API/Microsoft. Store. partnercenter. Models. customers. Customer. RelationshipToPartner) establecida en CustomerPartnerRelationship. None.First, create a new [Customer/dotnet/api/microsoft.store.partnercenter.models.customers.customer) object with the [Customer.RelationshipToPartner/dotnet/api/microsoft.store.partnercenter.models.customers.customer.relationshiptopartner) property set to CustomerPartnerRelationship.None. Después, llame al método colección iaggregatepartner. customers. ById con el identificador del cliente para especificar el cliente y llame al método patch , pasando el nuevo objeto Customer.Then call the IAggregatePartner.Customers.ById method using the customer identifier to specify the customer, and call the Patch method, passing in the new customer object.

Para volver a establecer la relación, repita el proceso de [solicitud de una relación reseller/Partner-Center/desarrollo/solicitud-reseller-relación).To re-establish the relationship, repeat the process of [requesting a reseller relationship/partner-center/develop/request-reseller-relationship).

// IAggregatePartner partnerOperations;

// Prompt the user the enter the customer ID.
var customerIdToDeleteRelationshipOf = this.Context.ConsoleHelper.ReadNonEmptyString("Please enter the ID of the customer you want to delete the relationship with", "The customer ID can't be empty");

// Determine if there are any active Azure Reserved VM Instances for this customer.
ResourceCollection<Entitlement> entitlements = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Entitlements.Get();

If (entitlements.Items.Where(x => x.EntitlementType == EntitlementType.VirtualMachineReservedInstance).Any())
{
    this.Context.ConsoleHelper.Warning("Please cancel Azure Reserved Virtual Machine Instance orders through support and try again. Aborting the delete customer relationship operation");
               return;
}

// Verify that there are no active subscriptions.
ResourceCollection<Subscription> customerSubscriptions = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Subscriptions.Get();
IList<Subscription> subscriptions = new List<Subscription>(customerSubscriptions.Items);

foreach (Subscription customerSubscription in subscriptions)
{
    if (customerSubscription.Status == SubscriptionStatus.Active)
    {
        this.Context.ConsoleHelper.Warning(String.Format("Subscription with ID :{0}  OfferName: {1} cannot be in active state, ", customerSubscription.Id, customerSubscription.OfferName));
        this.Context.ConsoleHelper.Warning("Please Suspend all the Subscriptions and try again. Aborting the delete customer relationship operation");
               return;
    }
}

// Delete the customer's relationship to the partner.
Customer customer = new Customer();
customer.RelationshipToPartner = CustomerPartnerRelationship.None;
customer = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Patch(customer);

if (customer.RelationshipToPartner == CustomerPartnerRelationship.None)
{
    this.Context.ConsoleHelper.Success("Customer Partner Relationship successfully deleted");
}

Ejemplo: aplicación de prueba de consola.Sample: Console test app. Proyecto: PartnerSDK. FeatureSample ( clase): DeletePartnerCustomerRelationship.CSProject: PartnerSDK.FeatureSample Class: DeletePartnerCustomerRelationship.cs

Solicitud RESTREST request

Sintaxis de la solicitudRequest syntax

MétodoMethod URI de la solicitudRequest URI
PATCHPATCH {baseurl}/v1/customers/{customer-tenant-ID}/http/1.1{baseURL}/v1/customers/{customer-tenant-id}/ HTTP/1.1

Parámetro de URIURI parameter

En esta tabla se enumeran los parámetros de consulta necesarios para quitar una relación de revendedor.This table lists the required query parameters to remove a reseller relationship.

NombreName TipoType ObligatorioRequired DescripciónDescription
customer-tenant-idcustomer-tenant-id guidguid YY El valor es un identificador de inquilino de cliente con formato de GUID que identifica al cliente.The value is a GUID formatted customer-tenant-id that identifies the customer.

Encabezados de solicitudRequest headers

Para obtener más información, consulta Encabezados REST del Centro de partners.For more information, see Partner Center REST headers.

Cuerpo de la solicitudRequest body

Se requiere un recurso de cliente en el cuerpo de la solicitud.A Customer resource is required in the request body. Asegúrese de que la propiedad RelationshipToPartner se ha establecido en none.Ensure the RelationshipToPartner property has been set to none.

Ejemplo de solicitudRequest example

PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id> HTTP/1.1
Authorization: Bearer <token>
Content-Length: 74
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 9b4bf2ca-f374-4d51-9113-781ca87b8380
MS-RequestId: 9fef8b23-6e3e-45d2-8678-e9fe89c35af5
Date: Fri, 12 Jan 2018 00:31:55 GMT

{
    "relationshipToPartner":"none",
    "attributes":{
        "objectType":"Customer"
    }
}

Respuesta RESTREST response

Si se realiza correctamente, este método quita una relación de revendedor para el cliente especificado.If successful, this method removes a reseller relationship for the specified customer.

Códigos de error y de respuesta correctosResponse success and error codes

Cada respuesta incluye un código de estado HTTP que indica si la operación se ha realizado correctamente o con errores y proporciona información de depuración adicional.Each response comes with an HTTP status code that indicates success or failure and additional debugging information. Use una herramienta de seguimiento de red para leer este código, el tipo de error y los parámetros adicionales.Use a network trace tool to read this code, error type, and additional parameters. Para obtener la lista completa, consulta Códigos de error de REST del Centro de partners.For the full list, see Partner Center REST error codes.

Ejemplo de respuestaResponse example

HTTP/1.1 200 OK
MS-RequestId: 7988dde4-b516-472c-b226-6d53fb18f04e
MS-CorrelationId: 9b4bf2ca-f374-4d51-9113-781ca87b8380
X-Locale: en-US
Content-Type: application/json
Content-Length: 242
Expect: 100-continue

{
    "Id":null,
    "CommerceId":null,
    "CompanyProfile":null,
    "BillingProfile":null,
    "RelationshipToPartner":"none",
    "AllowDelegatedAccess":null,
    "UserCredentials":null,
    "CustomDomains":null,
    "AssociatedPartnerId":null,
    "Attributes":{
        "ObjectType":"Customer"
    }
}