hotopay의 트리거를 활용해서 특정 상품 결제시 메일을 보내는 코드를 짜보았습니다.

 

저는 G-Shop에서 Hotopay Pro 라이선스를 구매했을때, 자동으로 구매자 메일에 라이선스를 보내주는 방식으로 활용하고 있습니다.

 

트리거 문서 : https://develop-hotopay.potatosoft.kr/triggers#hotopay.activepurchase-after

 

public function afterActivePurchase($obj)
{
    $member_srl = $obj->member_srl;
    $purchase_srl = $obj->purchase_srl;

    $oHotopayModel = HotopayModel::getInstance();
    $purchase_item = $oHotopayModel->getPurchaseItems($purchase_srl); // 결제한 아이템 목록
    $extra_info_list = $oHotopayModel->getPurchaseExtraInfo($purchase_srl); // 추가입력폼 입력 데이터 목록

    $domain = null;
    foreach ($extra_info_list as $extra_info)
    {
        if ($extra_info->key_name == 'domain') // 추가입력폼의 키 이름이 domain이라면
        {
            $domain = $extra_info->value; // 도메인을 가져온다.
        }
    }

    $config = $this->getConfig();

    foreach ($purchase_item as $item)
    {
        if ($item->product_srl == 11318) // HotoPay Pro 상품의 상품 번호
        {
            // Hotopay Pro
            $expirationDate = date('Y-m-d', strtotime('+1 year +7 days'));
            $license_type = 'new';
            $generator = new LicenseGenerator();
            $licenseKey = $generator->generateLicenseKey('hotopay Pro', $expirationDate, $domain, $license_type); // 라이선스 생성

            $oTemplate = TemplateHandler::getInstance();
            $mail_title = 'HotoPay Pro 라이선스 키입니다. ('.$domain.')';

            // 템플릿 컴파일시에 필요한 변수
            $input = array(
                'license_type' => $license_type,
                'domain' => $domain,
                'expiration_date' => $expirationDate,
                'license_key' => $licenseKey,
            );
            foreach ($input as $key => $value) Context::set($key, $value, true); // 변수 할당
            $licenseKeyHtml = $oTemplate->compile($this->module_path . 'views/admin', 'license_mail.html');

            $member_info = MemberModel::getMemberInfoByMemberSrl($member_srl);

            $oMail = new Mail();
            $oMail->setSubject($mail_title); // 메일 제목
            $oMail->setBody($licenseKeyHtml); // 메일 내용
            $oMail->addTo($member_info->email_address, $member_info->nick_name); // 수신자 메일 주소
            $oMail->send();
        }
    }
}

 

 


결과물

스크린샷 2023-07-16 오후 9.14.22.png

 

정기결제 등록 버튼을 클릭해 라이선스를 구매하면

 

스크린샷 2023-07-16 오후 9.13.13.png.jpg

 

아래와 같이 라이선스 키가 메일로 날아옵니다~

리버스

profile
모듈 제작하는 현역 대학생 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146