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

리버스
Lv. 7
댓글 0