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(); } } }
결과물
정기결제 등록 버튼을 클릭해 라이선스를 구매하면
아래와 같이 라이선스 키가 메일로 날아옵니다~