Example #1
0
<?php

/**
 * User: Hossein Moradgholi
 * Date: 10/25/15
 * Time: 12:01 AM
 */
error_reporting(E_ERROR);
use Fisharebest\ExtCalendar\GregorianCalendar;
use Fisharebest\ExtCalendar\PersianCalendar;
use Nikapps\BatchPayment\Paya\PayaCollection;
use Nikapps\BatchPayment\Paya\PayaPayment;
use Nikapps\BatchPayment\Paya\PayaPaymentInfo;
require "../vendor/autoload.php";
$payaCollection = new PayaCollection();
$payaPaymentInfo = new PayaPaymentInfo();
$persianCalendar = new PersianCalendar();
$gregorianCalendar = new GregorianCalendar();
$requestDateTime = implode('-', $persianCalendar->jdToYmd($gregorianCalendar->ymdToJd(date('Y'), date('m'), date('d')))) . "T" . date('H:i:s');
$payaPaymentInfo->setRequestDate($requestDateTime);
$payaPaymentInfo->setPayerIban('IR360560080133100002001001940612002');
$payaPaymentInfo->setPayerName('نام من');
$payaPayment = new PayaPayment();
$payaPayment->setAmount(2080000);
$payaPayment->setCreditorIban('IR020540110180001974695003');
$payaPayment->setCreditorName('امیرحسین صادقی');
$payaPayment->setDescription('تست سیستم');
$payaPaymentInfo->addPayment($payaPayment);
$payaCollection->setPayaPaymentInfo($payaPaymentInfo);
$payaCollection->exportXml();
 public function exportXml()
 {
     $writer = new Writer();
     $writer->openMemory();
     $writer->startDocument();
     $writer->startElement('Document');
     $writer->writeAttribute('xmlns', 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03');
     $writer->setIndent(true);
     // header
     $writer->startElement('CstmrCdtTrfInitn');
     $writer->startElement('GrpHdr');
     $writer->writeElement('MsgId', $this->getMessageId());
     $writer->writeElement('CreDtTm', $this->getRequestDateTime());
     $writer->writeElement('NbOfTxs', $this->getPayaPaymentInfo()->getNumberOfPayments());
     $writer->writeElement('CtrlSum', $this->getPayaPaymentInfo()->getTotalTransactionsAmount());
     $writer->startElement('InitgPty');
     $writer->writeElement('Nm', $this->getPayaPaymentInfo()->getPayerName());
     $writer->endElement();
     $writer->endElement();
     // payment info
     $writer->startElement('PmtInf');
     $writer->writeElement('PmtInfId', $this->payaPaymentInfo->getPaymentInfoId());
     $writer->startElement('PmtMtd');
     $writer->writeAttribute('Ccy', 'IRR');
     $writer->write($this->payaPaymentInfo->getPaymentMethod());
     $writer->endElement();
     $writer->writeElement('NbOfTxs', $this->payaPaymentInfo->getNumberOfPayments());
     $writer->writeElement('CtrlSum', $this->payaPaymentInfo->getTotalTransactionsAmount());
     $writer->writeElement('ReqdExctnDt', $this->payaPaymentInfo->getRequestDate());
     $writer->startElement('Dbtr');
     $writer->writeElement('Nm', $this->payaPaymentInfo->getPayerName());
     $writer->endElement();
     $writer->startElement('DbtrAcct');
     $writer->startElement('Id');
     $writer->writeElement('IBAN', $this->payaPaymentInfo->getPayerIban());
     $writer->endElement();
     $writer->endElement();
     $writer->startElement('DbtrAgt');
     $writer->startElement('FinInstnId');
     $writer->writeElement('BIC', 'BMJIIRTHXXX');
     $writer->endElement();
     $writer->endElement();
     /** @var PayaPayment $payment */
     foreach ($this->payaPaymentInfo->getPayments() as $payment) {
         $writer->startElement('CdtTrfTxInf');
         $writer->startElement('PmtId');
         $writer->writeElement('InstrId', 'EMPTY');
         $writer->writeElement('EndToEndId', 'EMPTY');
         $writer->endElement();
         $writer->startElement('Amt');
         $writer->startElement('InstdAmt');
         $writer->writeAttribute('Ccy', 'IRR');
         $writer->write($payment->getAmount());
         $writer->endElement();
         $writer->endElement();
         $writer->startElement('Cdtr');
         $writer->writeElement('Nm', $payment->getCreditorName());
         $writer->endElement();
         $writer->startElement('CdtrAcct');
         $writer->startElement('Id');
         $writer->writeElement('IBAN', $payment->getCreditorIban());
         $writer->endElement();
         $writer->endElement();
         $writer->endElement();
     }
     $writer->endElement();
     $writer->endElement();
     $writer->endElement();
     $writer->endDocument();
     return $writer->outputMemory();
 }