Created
January 28, 2025 04:35
-
-
Save gonzalesc/30652328b3f915c1379fc5e0d60b50c8 to your computer and use it in GitHub Desktop.
Create an user Moodle when the payment is completed in WooComerce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Payment Complete in WC | |
*/ | |
add_action( 'woocommerce_payment_complete', 'createMoodleUser' ); | |
/** | |
* Create Moodle User | |
* @param int $orderID | |
* @return void | |
* @see wp_remote_post | |
*/ | |
function createMoodleUser( int $orderID ): void { | |
// Get WC Order | |
$order = wc_get_order( $orderID ); | |
// Request Moodle User | |
$moodleUser = [ | |
'email' => $order->get_billing_email(), | |
'username' => $order->get_billing_email(), | |
'password' => wp_generate_password( 12, false ), | |
'firstname' => $order->get_billing_first_name(), | |
'lastname' => $order->get_billing_last_name(), | |
'customfields' => [ | |
[ | |
'type' => 'rol', | |
'value' => 'student' | |
] | |
], | |
]; | |
if ( $order->meta_exists( 'dni' ) ) { | |
$moodleUser['customfields'][] = [ | |
'type' => 'DNI', | |
'value' => $order->get_meta( 'dni' ) | |
]; | |
} | |
// Request Moodle | |
$moodleApiURL = 'https://tuwebmoodle.com/webservice/rest/server.php'; | |
$moodleToken = '52fcc38e*******************'; | |
$response = wp_remote_post( $moodleApiURL, [ | |
'timeout' => 10, | |
'body' => [ | |
'wstoken' => $moodleToken, | |
'wsfunction' => 'core_user_create_users', | |
'moodlewsrestformat' => 'json', | |
'users' => [ $moodleUser ] | |
] | |
] ); | |
// Response validation | |
if ( is_wp_error( $response ) ) { | |
$order->add_order_note( | |
sprintf( | |
esc_html__( 'Moodle user creation failed: %s', 'letsgo' ), | |
$response->get_error_message() | |
) | |
); | |
return; | |
} | |
$responseBody = wp_remote_retrieve_body( $response ); | |
$responseData = json_decode( $responseBody, true ); | |
if ( ! empty( $responseData['exception'] ) ) { | |
$order->add_order_note( | |
sprintf( | |
esc_html__( 'Moodle user creation exception (%s) : %s', 'letsgo' ), | |
$responseData['exception'], | |
$responseData['message'] | |
) | |
); | |
return; | |
} | |
// Get the first element | |
$moodleUserCreated = current( $responseData ); | |
// Success | |
$order->add_order_note( | |
sprintf( | |
esc_html__( 'Moodle user creation success: %s', 'letsgo' ), | |
$moodleUserCreated['id'] | |
) | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment