Al principio traté de responder a su pregunta usando reglas y userpoints módulo, pero vi que mientras que la adición de puntos de Grant a un usuario como una acción que no hay tal selector de datos para seleccionar el usuario que ha creado el producto. Encontré el selector de datos para seleccionar el usuario que es el propietario del pedido, pero ese no es su requisito. (Es por eso que aclaré esto en los comentarios).
Encontré una solución de módulo para su pregunta. El módulo usa hook_commerce_checkout_complete () . Desde la página de gancho:
Permite que los módulos realicen lógica de negocios cuando un pedido completa el pago.
Este enlace coincide con el evento "El cliente completa el pago". Solo se debe realizar la lógica de negocios cuando se invoca, como actualizar el estado del pedido, asignar el pedido a una cuenta de usuario o enviar correos electrónicos de notificación. En cambio, la interacción con el usuario debería ocurrir a través de los paneles de pago en la página de finalización del pago.
Esta es la codificación del módulo que diseñé:
Archivo YOURMODULE.info :
name = YOURMODULE
description = Module description
dependencies[] = commerce
dependencies[] = commerce_cart
dependencies[] = commerce_checkout
dependencies[] = userpoints
core = 7.x
ACTUALIZACIÓN
Según lo sugerido por Clive , he cambiado el archivo del módulo para que este módulo personalizado también funcione con sitios multilingües.
Archivo YOURMODULE.module :
/**
* Implements hook_commerce_checkout_complete().
*/
function YOURMODULE_commerce_checkout_complete($order) {
// Iterate through every commerce line item added in product.
foreach (field_get_items('commerce_order', $order, 'commerce_line_items') as $line_item_id) {
// Load commerce line item by line item id.
$line_item = commerce_line_item_load($line_item_id['line_item_id']);
// We do not want to include shipping cost in userpoints.
if ($line_item->type != 'shipping') {
// Load commerce product by product id.
$product = commerce_product_load(field_get_items('commerce_line_item', $line_item, 'commerce_product')[0]['product_id']);
// Create parameters.
$params = array(
'uid' => $product->uid,
'points' => commerce_currency_amount_to_decimal(field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['amount'], field_get_items('commerce_line_item', $line_item, 'commerce_total')[0]['currency_code']),
);
// Grant userpoints programmatically.
userpoints_userpointsapi($params);
}
}
}
Enlaces de referencia:
userpoints_userpointsapi ($ params)
comercio_checkout API
commerce_line_item_load ($ line_item_id)
commerce_product_load ($ product_id)
Puntos de usuario: deduzca puntos mediante programación
commerce_currency_amount_to_decimal ()