मुख्य सामग्री पर जाएं
PHP SDK Dodo Payments को आपके PHP अनुप्रयोगों में एकीकृत करने का एक मजबूत और लचीला तरीका प्रदान करता है। यह आधुनिक PHP मानकों के अनुसार PSR-4 ऑटोलोडिंग के साथ बनाया गया है, और इसमें व्यापक परीक्षण कवरेज और विस्तृत दस्तावेज़ीकरण है।

इंस्टॉलेशन

Composer का उपयोग करके SDK इंस्टॉल करें:
composer require "dodopayments/client 5.8.1"
SDK को PHP 8.1.0 या उच्चतर और निर्भरता प्रबंधन के लिए Composer की आवश्यकता होती है।

त्वरित प्रारंभ

क्लाइंट आरंभ करें और एक चेकआउट सेशन बनाएँ:
<?php

use Dodopayments\Client;

$client = new Client(
  bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
  environment: 'test_mode',
);

$checkoutSessionResponse = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]]
);

var_dump($checkoutSessionResponse->session_id);
अपने API कुंजियाँ सुरक्षित रूप से वातावरण चर के माध्यम से रखें। उन्हें कभी भी अपनी कोडबेस में उजागर न करें या संस्करण नियंत्रण में कमिट न करें।

मुख्य विशेषताएँ

PSR-4 Compliant

आधुनिक PHP विकास के लिए PHP Standards Recommendations का पालन करता है

Modern PHP

PHP 8.1+ के लिए प्रकार घोषणाओं और स्ट्रिक्ट प्रकारों के साथ निर्मित

Extensive Testing

विश्वसनीयता और स्थिरता के लिए व्यापक परीक्षण कवरेज

Exception Handling

विभिन्न त्रुटि परिदृश्यों के लिए स्पष्ट exception प्रकार

वैल्यू ऑब्जेक्ट्स

SDK वैकल्पिक तर्कों को निर्दिष्ट करने के लिए नामित पैरामीटर का उपयोग करता है। आप STATIC with निर्माता का उपयोग करके वैल्यू ऑब्जेक्ट्स आरंभ कर सकते हैं:
<?php

use Dodopayments\Customers\AttachExistingCustomer;

// Recommended: Use static 'with' constructor with named parameters
$customer = AttachExistingCustomer::with(customerID: "customer_id");
वैकल्पिक पैटर्न के रूप में बिल्डर्स भी उपलब्ध हैं:
<?php

use Dodopayments\Customers\AttachExistingCustomer;

// Alternative: Use builder pattern
$customer = (new AttachExistingCustomer)->withCustomerID("customer_id");

कॉन्फ़िगरेशन

पुनः प्रयास कॉन्फ़िगरेशन

कुछ त्रुटियों को डिफ़ॉल्ट रूप से एक संक्षिप्त एक्सपोनेंशियल बैकऑफ़ के साथ 2 बार स्वचालित रूप से पुनः प्रयास किया जाता है। निम्न त्रुटियाँ स्वचालित पुनः प्रयासों को ट्रिगर करती हैं:
  • कनेक्शन त्रुटियाँ (नेटवर्क कनेक्टिविटी समस्याएँ)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal errors
  • Timeouts
पुनः प्रयास व्यवहार को वैश्विक रूप से या प्रति-अनुरोध स्तर पर कॉन्फ़िगर करें:
<?php

use Dodopayments\Client;

// Configure default for all requests (disable retries)
$client = new Client(requestOptions: ['maxRetries' => 0]);

// Or, configure per-request
$result = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]],
  requestOptions: ['maxRetries' => 5],
);

सामान्य संचालन

चेकआउट सेशन बनाएँ

एक चेकआउट सेशन जनरेट करें:
$session = $client->checkoutSessions->create(
  productCart: [
    ["productID" => "prod_123", "quantity" => 1]
  ],
  returnUrl: "https://yourdomain.com/return"
);

header('Location: ' . $session->url);

ग्राहकों का प्रबंधन

ग्राहक जानकारी बनाएँ और प्राप्त करें:
// Create a customer
$customer = $client->customers->create(
  email: "customer@example.com",
  name: "John Doe",
  metadata: [
    "user_id" => "12345"
  ]
);

// Retrieve customer
$customer = $client->customers->retrieve("cus_123");
echo "Customer: {$customer->name} ({$customer->email})";

सब्सक्रिप्शन संभालें

पुनरावर्ती सब्सक्रिप्शन बनाएँ और प्रबंधित करें:
// Create a subscription
$subscription = $client->subscriptions->create(
  customerID: "cus_123",
  productID: "prod_456",
  priceID: "price_789"
);

// Cancel subscription
$client->subscriptions->cancel($subscription->id);

पेजिनेशन

पृष्ठांकित सूची प्रतिक्रियाओं के साथ काम करें:
$page = $client->payments->list();

var_dump($page);

// Fetch items from the current page
foreach ($page->getItems() as $item) {
  var_dump($item->brand_id);
}

// Auto-paginate: fetch items from all pages
foreach ($page->pagingEachItem() as $item) {
  var_dump($item->brand_id);
}

त्रुटि हेंडलिंग

जब लाइब्रेरी API से कनेक्ट नहीं कर पाती या 4xx/5xx स्थिति कोड प्राप्त करती है, तो APIException का एक उपवर्ग फेंका जाता है:
<?php

use Dodopayments\Core\Exceptions\APIConnectionException;
use Dodopayments\Core\Exceptions\RateLimitException;
use Dodopayments\Core\Exceptions\APIStatusException;

try {
  $checkoutSessionResponse = $client->checkoutSessions->create(
    productCart: [["productID" => "product_id", "quantity" => 1]]
  );
} catch (APIConnectionException $e) {
  echo "The server could not be reached", PHP_EOL;
  var_dump($e->getPrevious());
} catch (RateLimitException $_) {
  echo "A 429 status code was received; we should back off a bit.", PHP_EOL;
} catch (APIStatusException $e) {
  echo "Another non-200-range status code was received", PHP_EOL;
  echo $e->getMessage();
}

त्रुटि प्रकार

कारणत्रुटि प्रकार
HTTP 400BadRequestException
HTTP 401AuthenticationException
HTTP 403PermissionDeniedException
HTTP 404NotFoundException
HTTP 409ConflictException
HTTP 422UnprocessableEntityException
HTTP 429RateLimitException
HTTP >= 500InternalServerException
अन्य HTTP त्रुटिAPIStatusException
TimeoutAPITimeoutException
Network errorAPIConnectionException
संभावित त्रुटियों को सहजता से संभालने और उपयोगकर्ताओं को अर्थपूर्ण प्रतिक्रिया देने के लिए हमेशा API कॉल्स को try-catch ब्लॉकों में लपेटें।

उन्नत उपयोग

अप्रलेखित एंडपॉइंट्स

अप्रलेखित एंडपॉइंट्स पर अनुरोध भेजें:
<?php

$response = $client->request(
  method: "post",
  path: '/undocumented/endpoint',
  query: ['dog' => 'woof'],
  headers: ['useful-header' => 'interesting-value'],
  body: ['hello' => 'world']
);

अप्रलेखित पैरामीटर

किसी भी एंडपॉइंट पर अप्रलेखित पैरामीटर भेजें या अप्रलेखित प्रतिक्रिया गुण पढ़ें:
<?php

use Dodopayments\RequestOptions;

$checkoutSessionResponse = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]],
  requestOptions: [
    'extraQueryParams' => ["my_query_parameter" => "value"],
    'extraBodyParams' => ["my_body_parameter" => "value"],
    'extraHeaders' => ["my-header" => "value"],
  ],
);
समान नाम वाले extra* पैरामीटर दस्तावेजीकृत पैरामीटर को ओवरराइड करते हैं।

फ्रेमवर्क एकीकरण

Laravel

Laravel एप्लीकेशन्स के लिए एक सेवा बनाएँ:
<?php

namespace App\Services;

use Dodopayments\Client;

class PaymentService
{
    protected $client;

    public function __construct()
    {
        $this->client = new Client(
            bearerToken: config('services.dodo.api_key')
        );
    }

    public function createCheckout(array $items)
    {
        return $this->client->checkoutSessions->create(
            productCart: $items,
            returnUrl: route('checkout.return')
        );
    }
}
config/services.php में कॉन्फ़िगरेशन जोड़ें:
'dodo' => [
    'api_key' => env('DODO_API_KEY'),
    'environment' => env('DODO_ENVIRONMENT', 'sandbox')
],

Symfony

Symfony में एक सेवा बनाएँ:
<?php

namespace App\Service;

use Dodopayments\Client;

class DodoPaymentService
{
    private Client $client;

    public function __construct(string $apiKey)
    {
        $this->client = new Client(bearerToken: $apiKey);
    }

    public function createPayment(int $amount, string $currency, string $customerId): object
    {
        return $this->client->payments->create(
            amount: $amount,
            currency: $currency,
            customerID: $customerId
        );
    }
}
config/services.yaml में पंजीकरण करें:
services:
  App\Service\DodoPaymentService:
    arguments:
      $apiKey: "%env(DODO_API_KEY)%"

संसाधन

समर्थन

PHP SDK में सहायता चाहिए?
  • Discord: वास्तविक समय सहायता के लिए हमारे community server में शामिल हों
  • ईमेल: support@dodopayments.com पर हमसे संपर्क करें
  • GitHub: repository पर एक मुद्दा खोलें

योगदान

हम योगदान का स्वागत करते हैं! शुरू करने के लिए contributing guidelines देखें।