Мне нужно записать stripe_customer_id в метаданные пользователя базы данных wordpress, чтобы у меня была форма интерфейса, которую пользователь может использовать для отмены подписки в Stripe.Пользователь создаст учетную запись и подпишется на подписку в той же форме.
Я пытался выполнить это с помощью действия и фильтра, но не смог успешно сделать это, потому что пользователь не вошел в систему, когдаподписка Stripe создана.
Я нашел другого разработчика, который помог мне, и они достигли конечной цели, записав stripe_customer_id в текстовый файл, войдя в систему пользователя, а затем добавили идентификатор в метаданные пользователя..
Может кто-нибудь сказать мне, если следующие действия в файле functions.php представляют какую-либо угрозу безопасности?
add_action('gform_stripe_customer_after_create', 'save_stripe_customer_id',10,4);
function save_stripe_customer_id( $customer, $feed, $entry, $form)
{
$fp = fopen("stripdata.txt","w");
fwrite($fp,$customer->id);
fclose($fp);
}
add_action("gform_user_registered", "autologin", 10, 4);
function autologin($user_id, $config, $entry, $password) {
wp_set_auth_cookie($user_id, false, '');
$fp = fopen("stripdata.txt","r");
$customer_id = trim(fgets($fp));
fclose($fp);
update_user_meta($user_id, '_stripe_customer_id',$customer_id);
}
Спасибо за отзыв @EdCottrell.Разработчик переписал код, используя переменную сеанса.Не могли бы вы посмотреть на этот код очень быстро и сообщить мне ваши мысли?
// login user after they register
add_action("gform_user_registered", "autologin", 10, 4);
function autologin($user_id, $config, $entry, $password){
wp_set_auth_cookie($user_id, false, '');
update_user_meta($user_id, '_stripe_customer_id',$_SESSION['customer_id']);
unset($_SESSION['customer_id']);
}
add_action('gform_stripe_customer_after_create', 'save_stripe_customer_id',10,4);
function save_stripe_customer_id( $customer, $feed, $entry, $form)
{
// $email = rgar( $entry,'14');
if(!session_id())
{
session_start();
}
$_SESSION['customer_id'] = $customer->id;
}