novaday-co / moadian
用于与intamedia.ir的Moadian API交互的Laravel包
v2.0.0-beta
2023-10-18 06:33 UTC
Requires
- php: ^7.4|^8.0
- ext-openssl: *
- firebase/php-jwt: ^6.9
- guzzlehttp/guzzle: ^7.0
- phpseclib/phpseclib: ^3.0
- ramsey/uuid: ^4.2
- symfony/cache: ^5.3|^6.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.0 || ^10.0
README
此Laravel包提供了一种方便的方式与由intamedia.ir提供的“Moadian系统”(سامانه مودیان)API进行交互。使用此包,您可以轻松地向Moadian API发送请求并在您的Laravel应用程序中处理响应。
重要
此包提供对Moadian系统API的访问,并不旨在直接与用户交互。它专为将Moadian功能集成到其应用程序中的开发者设计。
要求
此包需要Laravel 8和PHP 7.4或更高版本。
安装
要安装此包,请运行以下命令
composer require novaday-co/moadian
用法
要使用此包,您需要从intamedia.ir获取用户名、私钥和证书。一旦您拥有这些凭证,您就可以在Laravel应用程序的.env
文件中配置此包
MOADIAN_USERNAME=your-username-here
MOADIAN_PRIVATE_KEY_PATH=/path/to/private.pem
MOADIAN_CERTIFICATE_PATH=/path/to/certificate.crt
注意
默认的私钥存储位置为:storage_path('app/keys/private.pem');
默认的证书存储位置为:storage_path('app/keys/certificate.crt');
然后,您可以使用Moadian
外观与Moadian API交互。以下是一些示例
use Novaday\Moadian\Facades\Moadian; // Get server info $info = Moadian::getServerInfo(); // Get fiscal info $fiscalInfo = Moadian::getFiscalInfo(); // Get economic code information $info = Moadian::getEconomicCodeInformation('10840096498'); // Inquiry by reference numbers $info = Moadian::inquiryByReferenceNumbers('a45aa663-6888-4025-a89d-86fc789672a0');
发送发票
要向Moadian发送发票,您可以使用插件提供的sendInvoice()方法。以下是如何使用它的示例
use Novaday\Moadian\Invoice as MoadianInvoice; use Novaday\Moadian\InvoiceHeader; use Novaday\Moadian\InvoiceItem; use Novaday\Moadian\Payment; public function sendInvoice($invoiceId = '') { $invoiceId = intval($invoiceId); $invoice = Invoice::find($invoiceId); if (!$invoice) { throw new Exception('Invoice not found'); } $timestamp = Carbon::parse($invoice->date)->timestamp * 1000; $header = new InvoiceHeader(env('MOADIAN_USERNAME')); $header->setTaxID(Carbon::parse($invoice->date), $invoice->number); $header->indati2m = $timestamp; $header->indatim = $timestamp; $header->inty = 1; //invoice type $header->inno = $invoiceId; $header->irtaxid = null; // invoice reference tax ID $header->inp = $invoice->inp; //invoice pattern $header->ins = 1; $header->tins = env('TAXID'); $header->tob = 2; $header->bid = $invoice->nationalnum; $header->tinb = $invoice->nationalnum; $header->bpc = $invoice->postal; $amount = $invoice->items->sum('amount'); $discount = $invoice->items->sum('discount'); $vat = $invoice->items->sum('vat'); $header->tprdis = $amount; $header->tdis = $discount; $header->tadis = $amount - $discount; $header->tvam = $vat; $header->todam = 0; $header->tbill = $amount - $discount + $vat; $header->setm = $invoice->setm; $header->cap = $amount - $discount + $vat; $moadianInvoice = new MoadianInvoice($header); foreach ($invoice->items as $item) { $body = new InvoiceItem(); $body->sstid = $item->seals->sstid; $body->sstt = $item->desc; $body->am = '1'; $body->mu = 1627; $body->fee = $item->amount; $body->prdis = $item->amount; $body->dis = $item->discount; $body->adis = $item->amount - $item->discount; $body->vra = 9; $body->vam = $item->vat; // or directly calculate here like floor($body->adis * $body->vra / 100) $body->tsstam = $item->amount - $item->discount + $item->vat; $moadianInvoice->addItem($body); } foreach ($invoice->cashes as $cashe) { if ($cashe->active == 1) { $payment = new Payment(); $payment->trn = $cashe->code; $payment->pdt = Carbon::parse($cashe->date)->timestamp * 1000; $moadianInvoice->addPayment($payment); } } $info = Moadian::sendInvoice($moadianInvoice); $info = $info->getBody(); $info = $info['result'][0]; $invoice->taxID = $header->taxid; $invoice->uid = $info['uid'] ?? ''; $invoice->referenceNumber = $info['referenceNumber'] ?? ''; $invoice->taxResult = 'send'; $invoice->save(); }
请注意,您需要拥有有效的Moadian账户和凭证才能使用此插件。
此包还可以发送其他类型的发票(取消、纠正、销售退货)。有关不同类型发票的更多信息以及如何发送它们的说明,请参阅官方文档。
有用链接
贡献
如果您发现了一个错误或想为此包做出贡献,请随时提交一个问题或创建一个拉取请求。
许可
此包是开源软件,根据GPL-3.0许可证授权。