有一个自定义签出字段电子邮件类型,用于验证电子邮件是否存在于远程服务器中。我使用此字段将JSON数据发送到远程服务器。
如果电子邮件存在JSON响应,通常:
{
"success": "ok",
"responseCode": "200",
"token": "I0b6uSNelqwGv+sCHpTV6LYI08hxcwoBIMVHh5mKVx+fkRFscUKbvUBF8+rl0vACgMImcffCzLsf571KLQVkSYcvdUfdwsu8mrBQ8mBw5J1LZtFs/7PwXerjNS2HjBAB0tc+RqZhYJ9Ne1efn7fq7Df4kAQ+QO7CjBKUwp8k7pFYslLMcWuxfb+KKsotZP82gkk5oKZEeh30a6K2I7dAxRj+B3RqyqND/uRO1uqQ1IA="
}
其中“token”值随请求而变化。
检查响应代码=200后,我想在订单中保存令牌元数据
使用$order->update_meta_data( \'received_token_key\', $token );
不是独自工作,我知道我有一个大错误,但我找不到这个。
也许用另一个WooCommerce钩子?可能使用wc\\U会话?也许可以保存到另一个地方并回忆起来?
我需要在结帐前进行验证,来自自定义字段的电子邮件,如果没有,wc_add_notice($response_message, \'error\');
将被触发。
// start here
add_action( \'woocommerce_checkout_process\', (custom_checkout_field_process_valid\' );
function custom_checkout_field_process_valid($order_id) {
$url = \'https://remoteserver.com/api/checking-email-registered-user.json\';
$body = array("email"=>($_POST[\'email_pasajero\']),); //from custom field
$response2 = wp_remote_post( $url,
array(
\'headers\' => array(\'Content-Type\' => \'application/json; charset=utf-8\'),
\'method\' => \'POST\',
\'timeout\' => 75,
\'body\' => json_encode($body),));
// check and use the response
$response_code = wp_remote_retrieve_response_code( $response2 );
$response_message = wp_remote_retrieve_response_message( $response2 );
$bodyarray = json_decode( wp_remote_retrieve_body( $response2 ));
$token = $bodyarray["token"];
if ($response_code == 200) {
// I want to save $token or its value, in this step, how metadata for later use
// maybe directly from the response?
// $order->update_meta_data( \'token_received_key\', $token ); not work
}
else {
wc_add_notice($response_message, \'error\');
return $response_code ;
}
}