코스모스팜 회원관리 정기결제 여부 필드 추가

안녕하세요, 코스모스팜 회원관리 플러그인 사용하고 있는 유저입니다. 

정기결제 상품 - 결제 여부에 따라 필드를 추가하여 회원을 관리하려고 하는데요. 

 

혹시 추가 필드에 아임포트에서 정상적으로 결제된 내역 + 결제 상태를 확인하여, 필드 값을 업데이트 해주는 기능을 따로 만들 수 있는 방법이 있을까요?

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    코스모스팜 회원관리 플러그인에서 상품 등록 시 사용자 역할(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', '');
    		}
    	}
    }

    실제 원하는 방향으로 코드를 적용하시려면

    프로그래밍에 대한 지식이 어느 정도 있어야 할 듯합니다.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요