v7‰PNG
IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0AºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT
home/ajdemo/public_html/mempro/application/cc/plugins/smart-debit.php 0000644 00000077553 15210163312 0022044 0 ustar 00 getDi()->blocks->add(new Am_Block('thanks/success', 'SmartDebit Statement', 'smart-debit-statement', $this, array($this, 'renederStatement')));
}
public function onPdfInvoiceColLeft(Am_Event $e)
{
$invoice = $e->getInvoice();
if ($invoice->paysys_id == $this->getId()) {
$c = $e->getCol();
$c->ddr = ___('Direct Debit Reference: %s', self::REF_PREFIX . $invoice->public_id);
}
}
public function renederStatement(Am_View $v)
{
if (isset($v->invoice) && $v->invoice->paysys_id == $this->getId()) {
$ref = self::REF_PREFIX . $v->invoice->public_id;
$legal_name = $this->getConfig('legal_name');
$legal_address = $this->getConfig('legal_address');
return <<
Thank you for your purchase.
Your Direct Debit Reference Number is $ref. The company name which will appear on your bank statement against the Direct Debit is $legal_name.
Should you have any queries regarding your Direct Debit please do not hesitate to contact us.
That completes the Direct Debit Instruction, thank you. An email confirming the details wil be sent within 3 working days or not later than 10 working days before first collection. Please find a copy of Direct Debit Guarantee below.
The Direct Debit Gurantee
- This Gurantee is offered by all banks and building societies that accept instructions to pay Direct Debit.
- If there are any changes to the amount, date or frequency of your Direct Debit $legal_name will notify you five (5) working days in advance of your account being debited or as otherwise agreed. If you request $legal_name to collect a payment, confirmation of the amount and date will be given to you at the time of the request.
- If an error is made in the payment of your Direct Debit, by $legal_name or your bank or building society, you are entitled to a full and immediate refund of the amount paid from your bank or building society. If you receive a refund you are not entitled to, you must pay it back when $legal_name asks you to.
- You can cancel a Direct Debit at any time by simply contacting your bank or building society. Written confirmation may be required. Please also notify us.
$legal_name
$legal_address
CUT;
}
}
protected function _initSetupForm(Am_Form_Setup $form)
{
$form->addText('login')
->setLabel('API Login')
->addRule('required');
$form->addPassword('passwd')
->setLabel('API Password')
->addRule('required');
$form->addText('pslid')
->setLabel('PSLID (Service User)')
->addRule('required');
$form->addText('sun')
->setLabel('Service User Number (SUN)')
->addRule('required');
$form->addText('lead_time')
->setLabel('Lead time, days')
->default = 12;
for ($i = 1; $i <= 28; $i++) {
$options[$i] = ___("%d-th day", $i);
}
$payment_day = $form->addMagicSelect('payment_day')
->setLabel(___("Process Payment Day"))
->loadOptions($options);
$payment_day->default = 8;
$payment_day->addRule('required');
$form->addText('legal_name', array('class' => 'el-wide'))
->setLabel(___("Legal Name\n" .
"Please enter the legal name of your organisation " .
"which will be included in the Direct Debit Guarantee statement"))
->addRule('required');
$form->addTextarea('legal_address', array('class' => 'el-wide', 'rows' => 5))
->setLabel(___("Legal Address\n" .
"Please enter the legal address of your organisation " .
"which will be included in the Direct Debit Guarantee statement"))
->addRule('required');
$form->addAdvCheckbox('auddis', array('id' => 'auddis'))
->setLabel("Log AUDDIS reports as Tickets in helpdesk\n" .
"helpdesk module should be enabled");
$form->addText('auddis_login', array('id' => 'auddis-login'))
->setLabel('Username of user for AUDDIS reports');
$form->addScript()
->setScript(<<getUser();
if ($doFirst) {
$request = new Am_HttpRequest(self::API_ENDPOINT . '/ddi/adhoc/create',
Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$params = array(
'adhoc_ddi[reference_number]' => self::REF_PREFIX . $invoice->public_id,
'adhoc_ddi[first_name]' => $echeck->name_f,
'adhoc_ddi[last_name]' => $echeck->name_l,
'adhoc_ddi[address_1]' => $echeck->street,
'adhoc_ddi[town]' => $echeck->city,
'adhoc_ddi[postcode]' => $echeck->zip,
'adhoc_ddi[country]' => $echeck->country,
'adhoc_ddi[account_name]' => $echeck->account_name,
'adhoc_ddi[sort_code]' => $echeck->sort_code,
'adhoc_ddi[account_number]' => $echeck->account_number,
'adhoc_ddi[service_user][pslid]' => $this->getConfig('pslid'),
'adhoc_ddi[payer_reference]' => sprintf('U%07d', $user->pk()),
'adhoc_ddi[title]' => preg_replace('/[^- .&/a-zA-Z0-9]/', '', $invoice->getLineDescription()),
'adhoc_ddi[email_address]' => $user->email
);
if ((float) $invoice->first_total) {
$params['adhoc_ddi[debits][debit][][amount]'] = $invoice->first_total * 100;
$params['adhoc_ddi[debits][debit][][date]'] = $this->getPaymentDate(true);
}
$request->addPostParameter($params);
} else {
$request = new Am_HttpRequest(self::API_ENDPOINT . sprintf('/ddi/adhoc/%s/update', self::REF_PREFIX . $invoice->public_id),
Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$params = array(
'adhoc_ddi[debits][debit][][amount]' => $invoice->second_total * 100,
'adhoc_ddi[debits][debit][][date]' => $this->getPaymentDate()
);
$request->addPostParameter($params);
}
$tr = new Am_Paysystem_Transaction_SmartDebit_Create($this, $invoice, $request, $doFirst);
$t = new DateTime($this->getPaymentDate($doFirst) . date(' H:i:s', $this->getDi()->time));
$tr->setPaymentDate($t->format('Y-m-d H:i:s'));
$tr->run($result);
}
function cancelInvoice(Invoice $invoice)
{
$request = new Am_HttpRequest(self::API_ENDPOINT . sprintf('/ddi/adhoc/%s/cancel', self::REF_PREFIX . $invoice->public_id),
Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$tr = new Am_Paysystem_Transaction_SmartDebit_Cancel($this, $invoice, $request, false);
$tr->run(new Am_Paysystem_Result);
}
function getPaymentDate($lead_time = false)
{
$n = $lead_time ? strtotime(sprintf('+ %d days', $this->getConfig('lead_time')), $this->getDi()->time) : $this->getDi()->time;
$nd = date('d', $n);
$days = $this->getConfig('payment_day');
sort($days);
foreach ($days as $d) {
if ($d > $nd)
return date('Y-m-' . sprintf("%02d", $d), $n);
}
return date('Y-m-' . sprintf("%02d", $days[0]), strtotime('+1 month', $n));
}
function onDaily(Am_Event $e)
{
//ARUDD
$request = new Am_HttpRequest(self::API_ENDPOINT . '/arudd/list', Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$query = array(
'query[service_user][pslid]' => $this->getConfig('pslid'),
'query[id_from]' => (int) $this->getDi()->store->get(self::STORE_KEY_ARUDD) + 1
);
$request->addPostParameter($query);
$response = $request->send();
if ($response->getStatus() == 200) {
$xml = simplexml_load_string($response->getBody());
$log = $this->logRequest($request, 'ARUDD-LIST');
$log->add($response);
$log->add($xml->asXml());
$id = 0;
foreach ($xml->arudd as $arudd) {
$id = max($id, (int) $arudd->arudd_id);
$this->processARUDD((string) $arudd['uri']);
}
if ($id > $this->getDi()->store->get(self::STORE_KEY_ARUDD))
$this->getDi()->store->set(self::STORE_KEY_ARUDD, $id);
}
//ADDACS
$request = new Am_HttpRequest(self::API_ENDPOINT . '/addac/list', Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$query = array(
'query[service_user][pslid]' => $this->getConfig('pslid'),
'query[id_from]' => (int) $this->getDi()->store->get(self::STORE_KEY_ADDACS) + 1
);
$request->addPostParameter($query);
$response = $request->send();
if ($response->getStatus() == 200) {
$xml = simplexml_load_string($response->getBody());
$log = $this->logRequest($request, 'ADDACS-LIST');
$log->add($response);
$log->add($xml->asXml());
$id = 0;
foreach ($xml->addac as $addac) {
$id = max($id, (int) $addac->addac_id);
$this->processADDACS((string) $addac['uri']);
}
if ($id > $this->getDi()->store->get(self::STORE_KEY_ADDACS))
$this->getDi()->store->set(self::STORE_KEY_ADDACS, $id);
}
//AUDDIS
if ($this->getConfig('auddis') && $this->getDi()->modules->isEnabled('helpdesk')) {
$request = new Am_HttpRequest(self::API_ENDPOINT . '/auddis/list', Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$query = array(
'query[service_user][pslid]' => $this->getConfig('pslid'),
'query[id_from]' => (int) $this->getDi()->store->get(self::STORE_KEY_AUDDIS) + 1
);
$request->addPostParameter($query);
$response = $request->send();
if ($response->getStatus() == 200) {
$xml = simplexml_load_string($response->getBody());
$log = $this->logRequest($request, 'AUDDIS-LIST');
$log->add($response);
$log->add($xml->asXml());
$id = 0;
foreach ($xml->auddis as $auddis) {
$id = max($id, (int) $auddis->auddis_id);
$this->processAUDDIS((string) $auddis['uri']);
}
if ($id > $this->getDi()->store->get(self::STORE_KEY_AUDDIS))
$this->getDi()->store->set(self::STORE_KEY_AUDDIS, $id);
}
}
}
function processARUDD($uri)
{
$request = new Am_HttpRequest($uri, Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$response = $request->send();
$origXml = simplexml_load_string($response->getBody());
$xml = simplexml_load_string(base64_decode((string) $origXml->file));
// $log = $this->logRequest($request, 'ARUDD');
// $log->add($response);
// $log->add($origXml->asXML());
// $log->add($xml->asXML());
foreach ($xml->Data->ARUDD->Advice->OriginatingAccountRecords->OriginatingAccountRecord->ReturnedDebitItem as $ARUDD) {
$ref = (string) $ARUDD['ref'];
/* @var $invoice Invoice */
$invoice = $this->getDi()->invoiceTable->findFirstByPublicId(substr($ref, strlen(self::REF_PREFIX)));
if ($invoice) {
$payments = $invoice->getPaymentRecords();
$p = array_pop($payments);
$tr = new Am_Paysystem_Transaction_Manual($this);
$tr->setInvoice($invoice);
$tr->setReceiptId(sprintf('%s-%s', (string) $ARUDD['transCode'], (string) $ARUDD['returnCode']));
$invoice->addVoid($tr, $p->receipt_id);
}
}
}
function processADDACS($uri)
{
$request = new Am_HttpRequest($uri, Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$response = $request->send();
$origXml = simplexml_load_string($response->getBody());
$xml = simplexml_load_string(base64_decode((string) $origXml->file));
// $log = $this->logRequest($request, 'ADDACS');
// $log->add($response);
// $log->add($origXml->asXML());
// $log->add($xml->asXML());
foreach ($xml->Data->MessagingAdvices->MessagingAdvice as $ADDACS) {
$ref = (string) $ADDACS['reference'];
$reason_code = (string) $ADDACS['reason-code'];
if (!in_array($reason_code, array('0','1','2'))) continue;
/* @var $invoice Invoice */
$invoice = $this->getDi()->invoiceTable->findFirstByPublicId(substr($ref, strlen(self::REF_PREFIX)));
if ($invoice) {
$invoice->setCancelled();
}
}
}
function processAUDDIS($uri)
{
$request = new Am_HttpRequest($uri, Am_HttpRequest::METHOD_POST);
$request->setAuth($this->getConfig('login'), $this->getConfig('passwd'));
$response = $request->send();
$user = $this->getDi()->userTable->findFirstByLogin($this->getConfig('auddis_login'));
if (!$user)
return;
$origXml = simplexml_load_string($response->getBody());
$xml = simplexml_load_string(base64_decode((string) $origXml->file));
$ticket = $this->getDi()->helpdeskTicketRecord;
$ticket->subject = 'AUDDIS ' . (string) $xml->Data->MessagingAdvices->Header['report-generation-date'];
$ticket->created = $this->getDi()->sqlDateTime;
$ticket->updated = $this->getDi()->sqlDateTime;
$ticket->category_id = null;
$ticket->user_id = $user->pk();
$ticket->insert();
$message = $this->getDi()->helpdeskMessageRecord;
$message->content = $xml->asXML();
$message->ticket_id = $ticket->pk();
$message->dattm = $this->getDi()->sqlDateTime;
$message->insert();
}
public function getReadme()
{
return <<invoice)
throw new Am_Exception_InternalError('Empty invoice - internal error!');
$a = $this->getParam('s', 'declation');
switch ($a) {
case 'declation' :
$this->doDeclartion();
break;
case 'details' :
$this->doDetails();
break;
case 'confirmation' :
$this->doConfimation(unserialize($this->getParam('_vars')), unserialize($this->getParam('_address')));
break;
}
}
function doDeclartion()
{
$form = $this->createDeclarationForm();
if ($form->isSubmitted() && $form->validate()) {
return $this->doDetails();
}
$this->view->form = $form;
$this->view->invoice = $this->invoice;
$this->view->display_receipt = true;
$this->view->layoutNoMenu = true;
$this->view->display('echeck/info.phtml');
}
function doDetails()
{
$form = $this->createForm();
if ($r = $this->getParam('_request')) {
$form->setDataSources(array(
new HTML_QuickForm2_DataSource_Array(
unserialize($r)
)
));
}
$form->addHidden('s')->setValue('details');
list($el) = $form->getElementsByName('_save_');
$el->setValue($form->getId());
if ($form->isSubmitted() && $form->validate()) {
$vars = $form->getValue();
if ($errors = $this->validateDdi($vars, $this->invoice, $address)) {
$this->view->error = $errors;
} else {
return $this->doConfimation($vars, $address);
}
}
$this->view->form = $form;
$this->view->invoice = $this->invoice;
$this->view->display_receipt = true;
$this->view->layoutNoMenu = true;
$this->view->display('echeck/info.phtml');
}
function doConfimation($vars, $address)
{
$form = $this->createConfirmationForm($vars, $address);
$form->addHidden('_vars')->setValue(serialize($vars));
$form->addHidden('_address')->setValue(serialize($address));
if ($r = $this->getParam('_request')) {
$form->addHidden('_request')->setValue($r);
} else {
$form->addHidden('_request')->setValue(serialize($this->getRequest()->getRequestOnlyParams()));
}
$form->addHidden('s')->setValue('confirmation');
list($el) = $form->getElementsByName('_save_');
$el->setValue($form->getId());
if ($form->isSubmitted() && $form->validate()) {
$vars = $form->getValue();
if (isset($vars['amend']))
return $this->doDetails();
if (isset($vars['cancel'])) {
$this->view->layoutNoTitle = true;
$this->view->content = 'You made decision to not complete payment.';
$this->invoice->delete();
$this->view->display('member/layout.phtml');
return;
}
$this->form = $this->createForm();
$this->form->setDataSources(array(
new HTML_QuickForm2_DataSource_Array(
unserialize($vars['_request'])
)
));
return $this->processEcheck();
}
$this->view->form = $form;
$this->view->invoice = $this->invoice;
$this->view->display_receipt = true;
$this->view->layoutNoMenu = true;
$this->view->display('echeck/info.phtml');
}
public function validateDdi($vars, $invoice, &$address)
{
$user = $invoice->getUser();
$request = new Am_HttpRequest(Am_Paysystem_SmartDebit::API_ENDPOINT . '/ddi/adhoc/validate',
Am_HttpRequest::METHOD_POST);
$request->setAuth($this->plugin->getConfig('login'), $this->plugin->getConfig('passwd'));
$params = array(
'adhoc_ddi[reference_number]' => Am_Paysystem_SmartDebit::REF_PREFIX . $invoice->public_id,
'adhoc_ddi[first_name]' => $vars['name_f'],
'adhoc_ddi[last_name]' => $vars['name_l'],
'adhoc_ddi[address_1]' => $vars['street'],
'adhoc_ddi[town]' => $vars['city'],
'adhoc_ddi[postcode]' => $vars['zip'],
'adhoc_ddi[country]' => $vars['country'],
'adhoc_ddi[account_name]' => $vars['account_name'],
'adhoc_ddi[sort_code]' => $vars['sort_code'],
'adhoc_ddi[account_number]' => $vars['account_number'],
'adhoc_ddi[service_user][pslid]' => $this->plugin->getConfig('pslid'),
'adhoc_ddi[payer_reference]' => sprintf('U%07d', $user->pk()),
'adhoc_ddi[title]' => preg_replace('/[^- .&/a-zA-Z0-9]/', '', $invoice->getLineDescription()),
'adhoc_ddi[email_address]' => $user->email
);
$request->addPostParameter($params);
$response = $request->send();
$r = simplexml_load_string($response->getBody());
if (!$r)
return array('Incorrect Response from Smart Debit');
if ($response->getStatus() != 200) {
$err = array();
foreach ($r->error as $e)
$err[] = (string) $e;
return $err;
}
foreach ($r->success as $s)
;
foreach ($s->attributes() as $k => $v) {
$address[$k] = (string) $v;
}
return;
}
public function createConfirmationForm($vars, $address)
{
$form = new Am_Form('dd-confirmation');
$name = $this->escape($this->plugin->getConfig('legal_name'));
$addr = $this->plugin->getConfig('legal_address');
$form->addProlog(<<Confirmation
$name
$addr
CUT
);
$form->addStatic()
->setContent($this->escape(sprintf('%s %s', $vars['name_f'], $vars['name_l'])))
->setLabel('Name of Account Holder');
$form->addStatic()
->setContent($this->escape($vars['account_number']))
->setLabel('Bank/Building Society Account Number');
$form->addStatic()
->setContent($this->escape($vars['sort_code']))
->setLabel('Branch Sort Code');
$street = implode('
', array_map(array($this, 'escape'), array_filter(array(
$address['address1'],
$address['address2'],
$address['address3'],
$address['address4'],
))));
$form->addStatic()
->setContent(sprintf('
%s
%s
%s
%s
%s
%s', $this->escape($address['bank_name']), $this->escape($address['branch']), $street, $this->escape($address['town']), $this->escape($address['county']), $this->escape($address['postcode'])))
->setLabel('Name and full postal address of your Bank or Building Society');
$form->addStatic()
->setContent($this->plugin->getConfig('sun'))
->setLabel('Service User Number (SUN)');
$form->addStatic()
->setContent(Am_Paysystem_SmartDebit::REF_PREFIX . $this->invoice->public_id)
->setLabel('Reference');
$form->addStatic(null, array('class' => 'no-label'))
->setContent(<<Instruction to your Bank or Building Society
Please pay $name Direct Debits from the account detailed in this Instruction
subject to the safeguards assured by the Direct Debit Guarantee. I understand
that this Instruction may remain with $name and, if so, details will be passed
electronically to my Bank/Building Society.
CUT
);
$g = $form->addGroup(null, array('class' => 'no-label'));
$g->setSeparator(' ');
$g->addSubmit('confirm', array('value' => 'Confirm'));
$g->addSubmit('amend', array('value' => 'Amend'));
$g->addSubmit('cancel', array('value' => 'Cancel'));
$g->addSubmit('print', array('value' => 'Print'));
$form->addScript()
->setScript(<<addHidden(Am_Mvc_Controller::ACTION_KEY)->setValue($this->getRequest()->getActionName());
$form->addHidden('id')->setValue($this->getFiltered('id'));
return $form;
}
public function createDeclarationForm()
{
$form = new Am_Form('dd-declaretion');
$form->addProlog('Declaration
');
$form->addAdvCheckbox('i_agree')
->setLabel('I wish to start Direct Debit')
->addRule('required');
$form->addSaveButton('Proceed');
$form->addEpilog(<<Information
All the normal Direct Debit safeguards and guarantees
apply. No changes in the amount, date, frequency to be debited can be made
without notifying you at least five (5) working days in advance of your
account being debited. In the event of error, you are entitled to an immediate
refund from your Bank or Building Society. You have the right to cancel a Direct
Debit Instruction at any time simply by writing to your Bank or Building
Society, with a copy to us.
CUT
);
$form->addHidden(Am_Mvc_Controller::ACTION_KEY)->setValue($this->getRequest()->getActionName());
$form->addHidden('id')->setValue($this->getFiltered('id'));
return $form;
}
}
class Am_Form_Echeck_SmartDebit extends Am_Form_Echeck
{
public function init()
{
$fieldSetBank = $this->addFieldset()
->setLabel(___("Bank Details"));
$fieldSetBank->addStatic(null, array('class' => 'no-label'))
->setContent(___('These details can be found on your cheque book, bank statement, or bank card'));
$name = $fieldSetBank->addGroup()
->setLabel(___("Name of Account Holder\n" .
'first and last name'));
$name->setSeparator(' ');
$name->addRule('required', ___('Please enter name'));
$name->addText('name_f', array('size' => 15))
->addRule('required', ___('Please enter first name'))
->addRule('regex', ___('Please enter first name'), '|^[a-zA-Z_\' -]+$|');
$name->addText('name_l', array('size' => 15))
->addRule('required', ___('Please enter your last name'))
->addRule('regex', ___('Please enter last name'), '|^[a-zA-Z_\' -]+$|');
$fieldSetBank->addText('account_number', array('autocomplete' => 'off', 'maxlength' => 20))
->setLabel(___("Bank Account Number"))
->addRule('required', ___('Please enter Account Number'))
->addRule('regex', ___('Invalid Account Number'), '/^[a-zA-Z0-9]{1,20}$/');
$fieldSetBank->addText('sort_code', array('autocomplete' => 'off', 'maxlength' => 9))
->setLabel(___("Branch Sort Code"))
->addRule('required', ___('Please enter Branch Sort Code'))
->addRule('regex', ___('Invalid Routing Number'), '/^[a-zA-Z0-9]{1,9}$/');
$fieldSetBank->addText('account_name', array('autocomplete' => 'off', 'maxlength' => 50))
->setLabel(___("Bank Account Name\n" .
'name associated with the bank account'))
->addRule('required');
$fieldSetBank->addText()
->setlabel(___('Date of First Collection'))
->setValue(amDate($this->plugin->getPaymentDate(true)))
->toggleFrozen(true);
$fieldSetAddress = $this->addFieldset()
->setLabel(___("Address Details"));
$street = $fieldSetAddress->addText('street')->setLabel(___('Street Address'))
->addRule('required', ___('Please enter Street Address'));
$city = $fieldSetAddress->addText('city')->setLabel(___('City'))
->addRule('required', ___('Please enter City'));
$zip = $fieldSetAddress->addText('zip')->setLabel(___('ZIP'))
->addRule('required', ___('Please enter ZIP code'));
$country = $fieldSetAddress->addSelect('country')->setLabel(___('Country'))
->setId('f_cc_country')
->loadOptions(Am_Di::getInstance()->countryTable->getOptions(true));
$country->addRule('required', ___('Please enter Country'));
$group = $fieldSetAddress->addGroup()->setLabel(___('State'));
$group->addRule('required', ___('Please enter State'));
/** @todo load correct states */
$stateSelect = $group->addSelect('state')
->setId('f_cc_state')
->loadOptions($stateOptions = Am_Di::getInstance()->stateTable->getOptions(@$_REQUEST['country'], true));
$stateText = $group->addText('state')->setId('t_cc_state');
$disableObj = $stateOptions ? $stateText : $stateSelect;
$disableObj->setAttribute('disabled', 'disabled')->setAttribute('style', 'display: none');
$this->addSaveButton(___('Submit Details'));
}
public function getDefaultValues(User $user)
{
return array(
'name_f' => $user->name_f,
'name_l' => $user->name_l,
'street' => $user->street,
'city' => $user->city,
'state' => $user->state,
'country' => $user->country,
'zip' => $user->zip
);
}
}
class Am_Paysystem_Transaction_SmartDebit_Create extends Am_Paysystem_Transaction_CreditCard
{
public function getUniqId()
{
if (!$this->_id)
$this->_id = uniqid();
return $this->_id;
}
function setPaymentDate($dattm)
{
$this->_pd = $dattm;
}
function getPaymentDate()
{
return $this->_pd;
}
public function validate()
{
if (!$this->vars)
return $this->result->setFailed('Incorrect Response');
if ($this->response->getStatus() != 200) {
$err = array();
foreach ($this->vars->error as $e)
$err[] = (string) $e;
return $this->result->setFailed($err);
}
$this->result->setSuccess($this);
}
public function parseResponse()
{
$this->vars = simplexml_load_string($this->response->getBody());
}
public function processValidated()
{
if (!$this->doFirst || (float) $this->invoice->first_total) {
$p = $this->invoice->addPayment($this);
$p->updateQuick('dattm', $this->getPaymentDate());
} else {
$this->invoice->addAccessPeriod($this);
}
}
}
class Am_Paysystem_Transaction_SmartDebit_Cancel extends Am_Paysystem_Transaction_CreditCard
{
public function getUniqId()
{
if (!$this->_id)
$this->_id = uniqid();
return $this->_id;
}
public function validate()
{
if (!$this->vars)
return $this->result->setFailed('Incorrect Response');
if ($this->response->getStatus() != 200) {
$err = array();
foreach ($this->vars->error as $e)
$err[] = (string) $e;
return $this->result->setFailed($err);
}
$this->result->setSuccess($this);
}
public function parseResponse()
{
$this->vars = simplexml_load_string($this->response->getBody());
}
public function processValidated()
{
//nop
}
}