मुख्य सामग्री पर जाएं

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

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

इंस्टॉलेशन

Composer का उपयोग करके SDK इंस्टॉल करें:
composer require "dodopayments/client 6.7.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})";

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

पुनरावर्ती सब्सक्रिप्शन बनाएँ और प्रबंधित करें:
use Dodopayments\Customers\AttachExistingCustomer;
use Dodopayments\Payments\BillingAddress;

// Create a subscription
$subscription = $client->subscriptions->create(
  billing: BillingAddress::with(
    country: 'US',
    city: 'San Francisco',
    state: 'CA',
    street: '1 Market St',
    zipcode: '94105',
  ),
  customer: AttachExistingCustomer::with(customerID: 'cus_123'),
  productID: 'pdt_456',
  quantity: 1,
);

// Charge an on-demand subscription
// productPrice is in the lowest currency denomination (e.g., 2500 = $25.00 USD)
$charge = $client->subscriptions->charge(
  $subscription->subscription_id,
  productPrice: 2500,
);
billing को कम से कम दो-अक्षर वाला ISO country कोड आवश्यक होता है। एक मौजूदा ग्राहक को जोड़ने के लिए AttachExistingCustomer::with(customerID: '...') पास करें, या एक बनाने के लिए NewCustomer::with(email: '...', name: '...')productPrice सबसे कम मुद्रा संप्रदाय में है।

पृष्ठांकन

पृष्ठांकित सूची प्रतिक्रियाओं के साथ कार्य करें:
$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
टाइमआउटAPITimeoutException
नेटवर्क त्रुटिAPIConnectionException
संभावित त्रुटियों को विनीत रूप से प्रबंधित करने और उपयोगकर्ताओं को सार्थक प्रतिक्रिया प्रदान करने के लिए 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)%"

संसाधन

GitHub Repository

स्रोत कोड देखें और योगदान करें

API Reference

पूर्ण API दस्तावेज़

Discord Community

सहायता प्राप्त करें और डेवलपर्स के साथ जुड़ें

Report Issues

बग्स की रिपोर्ट करें या फीचर्स की मांग करें

समर्थन

क्या आपको PHP SDK के साथ मदद चाहिए?

योगदान

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