PHPackages                             ebrahimsalahi/digipay-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. ebrahimsalahi/digipay-php

ActiveLibrary[Payment Processing](/categories/payments)

ebrahimsalahi/digipay-php
=========================

A clean PHP SDK for DigiPay UPG payment services.

1.0.0(1mo ago)01MITPHP ^8.1

Since Jun 21Compare

[ Source](https://github.com/ebrahimsalahi/digipay-php)[ Packagist](https://packagist.org/packages/ebrahimsalahi/digipay-php)[ RSS](/packages/ebrahimsalahi-digipay-php/feed)WikiDiscussions Synced 2w ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

DigiPay PHP SDK
===============

[](#digipay-php-sdk)

پکیج PHP برای اتصال به سرویسهای پرداخت دیجیپی UPG

نصب
---

[](#نصب)

```
composer require ebrahimsalahi/digipay-php
```

پیکربندی
--------

[](#پیکربندی)

```
use EbrahimSalahi\DigiPay\DigiPay;
use EbrahimSalahi\DigiPay\DigiPayConfig;

$config = new DigiPayConfig(
    username: 'merchant-username',
    password: 'merchant-password',
    clientId: 'client-id',
    clientSecret: 'client-secret',
);

$sdk = new DigiPay($config);
```

### مقادیر لازم

[](#مقادیر-لازم)

- `username`
- `password`
- `clientId`
- `clientSecret`

### خواندن از env

[](#خواندن-از-env)

```
use EbrahimSalahi\DigiPay\DigiPayConfig;

$config = DigiPayConfig::fromEnv(
    clientId: 'your-client-id',
    clientSecret: 'your-client-secret'
);
```

این متد فقط این دو متغیر محیطی را بررسی می‌کند:

- `DIGIPAY_USERNAME`
- `DIGIPAY_PASSWORD`

`clientId` و `clientSecret` باید هنگام ساخت config به‌صورت صریح داده شوند.

محیط تست و عملیاتی
------------------

[](#محیط-تست-و-عملیاتی)

- Sandbox URL: `https://uat.mydigipay.info/digipay/api`
- Production URL: `https://api.mydigipay.com/digipay/api`

دریافت توکن / login example
---------------------------

[](#دریافت-توکن--login-example)

```
$token = $sdk->login();
```

ساخت تیکت ساده خرید
-------------------

[](#ساخت-تیکت-ساده-خرید)

```
use EbrahimSalahi\DigiPay\Enums\PreferredGateway;

$response = $sdk->createSimpleTicket(
    amount: 150000,
    cellNumber: '09120000000',
    providerId: 'ORDER-1001',
    callbackUrl: 'https://example.com/digipay/callback',
    preferredGateway: PreferredGateway::WALLET
);
header('Location: ' . $response->redirectUrl());
exit;
```

دریافت callback
---------------

[](#دریافت-callback)

```
$callback = $sdk->parseCallback($_POST);

$callback->assertMatchesOrder(
    expectedAmount: 150000,
    expectedProviderId: 'ORDER-1001'
);
```

تایید پرداخت
------------

[](#تایید-پرداخت)

```
use EbrahimSalahi\DigiPay\Enums\TicketType;

$verify = $sdk->verify(
    trackingCode: $callback->trackingCode,
    providerId: $callback->providerId,
    type: TicketType::WALLET
);
```

قبل از `verify` باید `amount` و `providerId` برگشتی از دیجیپی با سفارش داخلی سیستم مقایسه شود.

بازگشت دستی / reverse
---------------------

[](#بازگشت-دستی--reverse)

```
use EbrahimSalahi\DigiPay\Enums\TicketType;

$reverse = $sdk->reverse(
    purchaseTrackingCode: $callback->trackingCode,
    providerId: $callback->providerId,
    type: TicketType::IPG
);
```

طبق مستندات رسمی، بازگشت دستی فقط برای خریدهای IPG/DPG مجاز است و این SDK هم همین محدودیت را اعمال می‌کند.

تحویل خرید
----------

[](#تحویل-خرید)

```
use EbrahimSalahi\DigiPay\Enums\TicketType;

$deliver = $sdk->deliver(
    deliveryDate: 1592502763000,
    invoiceNumber: '7471288365484',
    trackingCode: '5239470511667728782510',
    products: ['product-4', 'product-5'],
    type: TicketType::CREDIT
);
```

این سرویس فقط برای `CREDIT` و `BNPL` استفاده می‌شود.

بازگشت خرید / refund
--------------------

[](#بازگشت-خرید--refund)

```
use EbrahimSalahi\DigiPay\Enums\TicketType;

$refund = $sdk->refund(
    providerId: 'REFUND-1',
    amount: 150000,
    saleTrackingCode: '5239470511667728782510',
    type: TicketType::WALLET
);
```

پیگیری refund
-------------

[](#پیگیری-refund)

```
use EbrahimSalahi\DigiPay\Enums\TicketType;

$inquiry = $sdk->refundInquiry(
    inquiryId: 'REFUND-1',
    type: TicketType::WALLET
);
```

هندل خطاها
----------

[](#هندل-خطاها)

```
use EbrahimSalahi\DigiPay\Exceptions\AuthenticationException;
use EbrahimSalahi\DigiPay\Exceptions\ValidationException;
use EbrahimSalahi\DigiPay\Exceptions\BusinessException;
use EbrahimSalahi\DigiPay\Exceptions\ApiException;

try {
    $sdk->login();
} catch (AuthenticationException $e) {
    // احراز هویت
} catch (ValidationException $e) {
    // ورودی نامعتبر
} catch (BusinessException $e) {
    echo $e->getBusinessCode();
    echo $e->getBusinessMessageFa();
    echo $e->isRetryable() ? 'retry' : 'stop';
} catch (ApiException $e) {
    // خطای سرویس
}
```

ذخیره توکن
----------

[](#ذخیره-توکن)

- `InMemoryTokenStore`: مناسب اجرای موقت
- `FileTokenStore`: مناسب ذخیره محلی با قفل فایل

نکات امنیتی:

- رمز عبور و `clientSecret` ذخیره نمی‌شوند
- توکن‌ها نباید در لاگ چاپ شوند
- فایل توکن را در مسیر امن نگه دارید

خطاها
-----

[](#خطاها)

جزئیات خطاها و کدهای خطای دیجی‌پی فقط در فایل مرجع زیر آمده است:

`docs/digipay-upg-reference.fa.md`

اجرای تست‌ها
------------

[](#اجرای-تست‌ها)

```
composer test
```

یا:

```
vendor/bin/phpunit
```

تناقض‌های مستندات
-----------------

[](#تناقض‌های-مستندات)

- `Digipay-Version` در بعضی جدول‌ها با فرمت دیگری نوشته شده، اما نمونه‌های عملی `2022-02-02` را نشان می‌دهند. این SDK مقدار پیش‌فرض را روی `2022-02-02` گذاشته و قابل تنظیم است.
- نمونه JSON بخش refund در مستندات رسمی معیوب است.
- در reverse، `trackingCode` و `purchaseTrackingCode` هر دو دیده می‌شوند. این SDK از `purchaseTrackingCode` استفاده می‌کند.

مستندات رسمی دیجیپی
-------------------

[](#مستندات-رسمی-دیجیپی)

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance90

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a5aac4cbc33e438cf717722c2afef8b22c8b8761e658084fb7b6cb908063e1ed?d=identicon)[ebrahimsalahi](/maintainers/ebrahimsalahi)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ebrahimsalahi-digipay-php/health.svg)

```
[![Health](https://phpackages.com/badges/ebrahimsalahi-digipay-php/health.svg)](https://phpackages.com/packages/ebrahimsalahi-digipay-php)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.2k555.0M2.8k](/packages/aws-aws-sdk-php)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k832.6k51](/packages/neuron-core-neuron-ai)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3661.3M49](/packages/tencentcloud-tencentcloud-sdk-php)[chargebee/chargebee-php

ChargeBee API client implementation for PHP

758.7M10](/packages/chargebee-chargebee-php)[tempest/framework

The PHP framework that gets out of your way.

2.3k37.6k19](/packages/tempest-framework)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

293.1k](/packages/eslazarev-wildberries-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
