मुख्य सामग्री के लिए छोड़ें
संस्करण: 1.x

गेटवे टेम्पलेट

WooCommerce गेटवे टेम्पलेट आपके अपने कस्टम भुगतान गेटवे बनाने के लिए एक शुरुआती बिंदु प्रदान करता है। इस टेम्पलेट में एक पूरी तरह से कार्यात्मक भुगतान गेटवे बनाने के लिए सभी आवश्यक बायलरप्लेट कोड और संरचना शामिल हैं।

विशेषताएँ

  • पूर्ण टेम्पलेट: सभी आवश्यक तरीकों के साथ उपयोग के लिए तैयार गेटवे संरचना
  • POS इंटीग्रेशन: WooCommerce POS संगतता के लिए पूर्व-कॉन्फ़िगर किया गया
  • ऑटोमेटेड सेटअप: स्क्रिप्ट-आधारित टेम्पलेट कस्टमाइज़ेशन
  • सर्वश्रेष्ठ प्रथाएँ: WordPress और WooCommerce कोडिंग मानकों का पालन करें
  • विस्तारणीय: विशिष्ट भुगतान प्रदाताओं के लिए संशोधित और विस्तारित करना आसान

प्रारंभ करना

विकल्प 1: ऑटोमेटेड टेम्पलेट जेनरेशन

टेम्पलेट में एक स्क्रिप्ट शामिल है जो स्वचालित रूप से आपके विशेष गेटवे के लिए टेम्पलेट को अनुकूलित करती है:

  1. भंडार क्लोन करें:

    git clone https://github.com/wcpos/woocommerce-gateway-template.git
    cd woocommerce-gateway-template
  2. सेटअप स्क्रिप्ट चलाएं:

    ./create-gateway.sh
  3. प्रॉम्प्ट्स का पालन करें:

    • अपने गेटवे का नाम दर्ज करें (जैसे, "मेरा भुगतान गेटवे")
    • एक गेटवे स्लग दर्ज करें (जैसे, "my-payment")
    • एक विवरण प्रदान करें
    • स्क्रिप्ट एक कस्टमाइज़्ड प्लगइन उत्पन्न करेगी

विकल्प 2: मैन्युअल टेम्पलेट उपयोग

यदि आप मैन्युअल कस्टमाइज़ेशन पसंद करते हैं:

  1. टेम्पलेट डाउनलोड करें:

  2. टेम्पलेट अनुकूलित करें:

    • {{GATEWAY_NAME}} को अपने गेटवे के डिस्प्ले नाम के साथ बदलें
    • {{GATEWAY_SLUG}} को अपने गेटवे के अद्वितीय पहचानकर्ता के साथ बदलें
    • {{GATEWAY_DESCRIPTION}} को अपने गेटवे के विवरण के साथ बदलें
  3. फाइलों का नाम बदलें:

    • wcpos-{{GATEWAY_SLUG}}.php को अपने गेटवे स्लग के अनुसार नाम बदलें
    • फाइल हेडर और प्लगइन जानकारी को अपडेट करें

टेम्पलेट संरचना

मुख्य प्लगइन फ़ाइल

मुख्य प्लगइन फ़ाइल (wcpos-{{GATEWAY_SLUG}}.php) में शामिल है:

  • प्लगिन हेडर: WordPress प्लगिन जानकारी
  • गेटवे क्लास: मुख्य भुगतान गेटवे वर्ग
  • इनिशियलाइजेशन: प्लगइन सेटअप और हुक
  • इंटीग्रेशन: WooCommerce POS संगतता

प्रमुख घटक

गेटवे क्लास संरचना:

class WCPOS_Gateway_{{GATEWAY_CLASS}} extends WC_Payment_Gateway {
// Gateway configuration
public function __construct() { }

// Admin settings form
public function init_form_fields() { }

// Process payment (main logic goes here)
public function process_payment( $order_id ) { }

// POS-specific methods
public function payment_fields() { }
}

कस्टमाइजेशन गाइड

बुनियादी कॉन्फिगरेशन

  1. गेटवे जानकारी:

    $this->id = 'your_gateway_id';
    $this->title = 'Your Gateway Name';
    $this->description = 'Gateway description for customers';
    $this->method_title = 'Admin title';
    $this->method_description = 'Admin description';
  2. समर्थित विशेषताएँ:

    $this->supports = array(
    'products',
    'refunds',
    'subscriptions', // यदि लागू हो
    );

भुगतान प्रक्रिया

मुख्य भुगतान लॉजिक process_payment() मेथड में जाता है:

public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );

// Your payment processing logic here
// Example: API calls, validation, etc.

if ( $payment_successful ) {
$order->payment_complete();
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
} else {
wc_add_notice( 'Payment failed', 'error' );
return array(
'result' => 'failure'
);
}
}

एडमिन सेटिंग्स

init_form_fields() में एडमिन सेटिंग्स कॉन्फिगर करें:

public function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => 'Enable/Disable',
'type' => 'checkbox',
'label' => 'Enable Your Gateway',
'default' => 'yes'
),
'api_key' => array(
'title' => 'API Key',
'type' => 'text',
'description' => 'Enter your API key',
'default' => '',
'desc_tip' => true,
),
// Add more settings as needed
);
}

POS इंटीग्रेशन

POS-विशिष्ट कार्यक्षमता के लिए, लागू करें:

public function payment_fields() {
// Custom payment form for POS
if ( is_admin() && isset( $_GET['page'] ) && $_GET['page'] === 'wc-pos' ) {
// POS-specific payment fields
echo '<div class="pos-payment-fields">';
// Your custom POS interface
echo '</div>';
} else {
// Standard web checkout fields
parent::payment_fields();
}
}

विकास सर्वोत्तम प्रथाएँ

कोड मानक

  • WordPress कोडिंग मानक: WordPress PHP कोडिंग मानकों का पालन करें
  • WooCommerce दिशानिर्देश: WooCommerce विकास प्रथाओं का पालन करें
  • सुरक्षा: इनपुट को सुरक्षित करें, डेटा को मान्य करें, नॉनस का उपयोग करें
  • अंतर्राष्ट्रीयकरण: __() और _e() का उपयोग करके स्ट्रिंग्स का अनुवाद करना सुनिश्चित करें

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

// Proper error handling
try {
$result = $this->process_api_call( $data );
if ( is_wp_error( $result ) ) {
throw new Exception( $result->get_error_message() );
}
} catch ( Exception $e ) {
$order->add_order_note( 'Payment failed: ' . $e->getMessage() );
wc_add_notice( 'Payment processing error', 'error' );
return array( 'result' => 'failure' );
}

लॉगिंग

// Add logging for debugging
if ( $this->debug ) {
$this->log( 'Payment processing started for order ' . $order_id );
}

private function log( $message ) {
if ( empty( $this->logger ) ) {
$this->logger = wc_get_logger();
}
$this->logger->info( $message, array( 'source' => $this->id ) );
}

अपने गेटवे का परीक्षण करें

विकास वातावरण

  1. टेस्ट मोड: हमेशा एक टेस्ट/सैंडबॉक्स मोड लागू करें
  2. डिबग लॉगिंग: समस्या निवारण के लिए विस्तृत लॉगिंग शामिल करें
  3. त्रुटि परिदृश्य: विभिन्न असफलता स्थितियों का परीक्षण करें
  4. POS परीक्षण: विशेष रूप से POS वातावरण में परीक्षण करें

परीक्षण मामले

  • सफल भुगतान: सुनिश्चित करें कि आर्डर सही ढंग से पूर्ण होते हैं
  • असफल भुगतान: उचित त्रुटि हैंडलिंग सुनिश्चित करें
  • रिफंड: यदि समर्थित हो तो रिफंड फंक्शनलिटी का परीक्षण करें
  • एज केस: विभिन्न आर्डर राशि और कॉन्फिगरेशन के साथ परीक्षण करें

तैनाती

प्लगिन पैकेजिंग

  1. विकास फ़ाइलें हटा दें: परीक्षण फ़ाइलें और विकास उपकरण साफ करें
  2. वर्जन कंट्रोल: प्लगिन हेडर में वर्जन नंबर अपडेट करें
  3. डॉक्यूमेंटेशन: इंस्टॉलेशन निर्देशों के साथ README शामिल करें
  4. ज़िप पैकेज: स्थापित करने योग्य ज़िप फ़ाइल बनाएं

वितरण

  • GitHub रिलीज़: वर्जन प्रबंधन के लिए GitHub रिलीज़ का उपयोग करें
  • WordPress प्लगिन डायरेक्टरी: WordPress.org को सबमिट करने पर विचार करें
  • प्राइवेट डिस्ट्रीब्यूशन: अगर आवश्यक हो तो अपने स्वयं के सर्वर पर होस्ट करें

उन्नत विशेषताएँ

वेबहुक्स

वास्तविक समय में भुगतान अपडेट के लिए:

public function handle_webhook() {
$payload = file_get_contents( 'php://input' );
$data = json_decode( $payload, true );

// Verify webhook signature
if ( $this->verify_webhook_signature( $payload ) ) {
$this->process_webhook_data( $data );
}
}

सब्सक्रिप्शन समर्थन

बार-बार भुगतान के लिए:

// Add subscription support
$this->supports[] = 'subscriptions';
$this->supports[] = 'subscription_cancellation';
$this->supports[] = 'subscription_suspension';

बहु-मुद्रा

अंतरराष्ट्रीय भुगतानों के लिए:

public function get_supported_currencies() {
return array( 'USD', 'EUR', 'GBP', 'CAD' );
}

संसाधन

डॉक्यूमेंटेशन

टेम्पलेट भंडार

  • GitHub: woocommerce-gateway-template
  • समस्याएँ: टेम्पलेट समस्याएँ रिपोर्ट करें या सुविधाएँ अनुरोध करें
  • योगदान: पुल अनुरोधों के माध्यम से सुधार सबमिट करें

सहायता प्राप्त करना

विकास सहायता के लिए:

  • टेम्पलेट-विशिष्ट समस्याओं के लिए GitHub भंडार पर जाएं
  • API प्रश्नों के लिए WooCommerce विकास दस्तावेज़ चेक करें
  • सामान्य मार्गदर्शन के लिए WooCommerce विकास समुदाय में शामिल हों

उदाहरण गेटवे

इन मौजूदा कस्टम गेटवे का अध्ययन करें ताकि कार्यान्वयन के उदाहरण मिल सकें:

  • Stripe Terminal: हार्डवेयर इंटीग्रेशन उदाहरण
  • SumUp Terminal: API-आधारित टर्मिनल इंटीग्रेशन
  • Email Invoice: सरल ईमेल-आधारित गेटवे
  • Web Checkout: वेब इंटीग्रेशन गेटवे