안녕하세요, 코스모스팜 회원관리 플러그인 사용하고 있는 유저입니다.
정기결제 상품 - 결제 여부에 따라 필드를 추가하여 회원을 관리하려고 하는데요.
혹시 추가 필드에 아임포트에서 정상적으로 결제된 내역 + 결제 상태를 확인하여, 필드 값을 업데이트 해주는 기능을 따로 만들 수 있는 방법이 있을까요?
안녕하세요~^^
코스모스팜 회원관리 플러그인에서 상품 등록 시 사용자 역할(Role)을 설정하시면
이용기간 동안 사용자의 역할(Role)을 변경하며 정기결제 사용자만 별도로 관리하실 수 있습니다.
코스모스팜 회원관리 플러그인의 cosmosfarm_members_subscription_request_pay 액션을 활용하시면
정기결제 시 user meta를 설정할 수 있습니다.
cosmosfarm_members_subscription_expiry 액션을 활용하시면
정기결제 만료 시 user meta를 설정할 수 있습니다.
어떤 이유로 별도의 필드 값을 업데이트하시려는지 알려주시면
저희도 도움 드릴 방법을 찾아보겠습니다.
고맙습니다.
네, 정기결제여부 / 구매한 상품 등을 구분하여 회원별로 관리하기 위해 메타 데이터를 추가하려고 합니다.
사용자의 역할 같은 경우는 필드가 1개라서요. 때에 따라 원하는 만큼 추가할 수 있으면 좋을 거 같습니다.
저희가 A상품 정기결제자와 B상품 정기결제자에게 서로 다른 서비스를 제공하려고 해서요. 서로 다른 서비스라 중복구매도 예상하고 있어서, 필드 상에서 분리가 필요합니다.
그리고, 결제가 정상적으로 진행되지 않았을 때 정기결제 상태를 또 필드로 구분해서 정상/결제재시도/결제실패 등으로 값을 나눠서
결제 재시도를 하는 회원에게 문자, 이메일 등을 보낼 수 있도록 DB에서 데이터를 추출하려고 해서 이 역시 필드 추가가 필요합니다.
wp_members 플러그인의 경우 필드를 자유롭게 추가할 수는 있는 것 같더라고요. 그래서 위 케이스들에 따라 데이터를 추가할 수 있는 함수 설정이 필요할 거 같습니다.
필요기능 정리
- 정기결제 상품 수만큼 필드를 추가하고, 상품별 역할 부여 -> 구매상품별 서비스 제공
- 필드를 추가하여 상품별 결제상태 구분. (완료/결제 재시도/미결제) value값 기준으로 이메일, 문자 서비스 등과 API연결 예정. -> A상품 미결제, B상품 결제완료의 경우 B상품 서비스만 진행하기 위해서
- 정기결제 기간이 지나고 결제 실패했을 때도 약 7일 정도 서비스를 더 사용할 수 있게 하는 등 기간 설정.
감사합니다.
상품별 정기결제 및 만료 시 user meta를 변경하는 예제 코드를 작성해봤습니다.
아래 코드를 활용해보시겠어요?
add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 10, 1);
function my_cosmosfarm_members_subscription_request_pay($product){
// 정기 결제 시 실행됩니다.
$product_id = $product->ID();
$user_id = get_current_user_id();
if($user_id){
if($product_id == '1'){ // 실제 상품 id로 적용해주세요.
update_user_meta($user_id, 'product1', '1');
}
if($product_id == '2'){
update_user_meta($user_id, 'product2', '1');
}
}
}
add_action('cosmosfarm_members_subscription_expiry', 'my_cosmosfarm_members_subscription_expiry', 10, 1);
function my_cosmosfarm_members_subscription_expiry($old_order, $product){
// 정기 결제 만료 시 실행됩니다.
$product_id = $product->ID();
$user_id = get_current_user_id();
if($user_id){
if($product_id == '1'){
update_user_meta($user_id, 'product1', '');
}
if($product_id == '2'){
update_user_meta($user_id, 'product2', '');
}
}
}
실제 원하는 방향으로 코드를 적용하시려면
프로그래밍에 대한 지식이 어느 정도 있어야 할 듯합니다.
고맙습니다.