गेटवे टेम्पलेट
WooCommerce गेटवे टेम्पलेट आपके अपने कस्टम भुगतान गेटवे बनाने के लिए एक शुरुआती बिंदु प्रदान करता है। इस टेम्पलेट में एक पूरी तरह से कार्यात्मक भुगतान गेटवे बनाने के लिए सभी आवश्यक बुनियादी कोड और संरचना शामिल है।
विशेषताएँ
- पूर्ण टेम्पलेट: सभी आवश्यक तरीकों के साथ उपयोग के लिए तैयार गेटवे संरचना
- POS एकीकरण: WooCommerce POS संगतता के लिए पूर्व-संरचित
- स्वचालित सेटअप: स्क्रिप्ट-आधारित टेम्पलेट अनुकूलन
- सर्वश्रेष्ठ प्रथाएँ: WordPress और WooCommerce कोडिंग मानकों का पालन करें
- विस्तार योग्य: विशिष्ट भुगतान प्रदाताओं के लिए संशोधित और विस्तारित करना आसान
प्रारंभ करना
विकल्प 1: स्वचालित टेम्पलेट निर्माण
टेम्पलेट में एक स्क्रिप्ट शामिल है जो स्वचालित रूप से आपके विशेष गेटवे के लिए टेम्पलेट को अनुकूलित करती है:
-
भंडार क्लोन करें:
git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template -
सेटअप स्क्रिप्ट चलाएँ:
./create-gateway.sh -
पार्श्व संकेतों का पालन करें:
- अपने गेटवे का नाम दर्ज करें (जैसे, "मेरा भुगतान गेटवे")
- एक गेटवे स्लग दर्ज करें (जैसे, "my-payment")
- एक विवरण प्रदान करें
- स्क्रिप्ट एक अनुकूलित प्लगइन उत्पन्न करेगी
विकल्प 2: मैन्युअल टेम्पलेट उपयोग
यदि आप मैन्युअल अनुकूलन पसंद करते हैं:
-
टेम्पलेट डाउनलोड करें:
- गेटवे टेम्पलेट भंडार पर जाएं
- नवीनतम रिलीज़ डाउनलोड करें या भंडार क्लोन करें
-
टेम्पलेट अनुकूलित करें:
{{GATEWAY_NAME}}को अपने गेटवे के डिस्प्ले नाम के साथ बदलें{{GATEWAY_SLUG}}को अपने गेटवे के अद्वितीय पहचानकर्ता के साथ बदलें{{GATEWAY_DESCRIPTION}}को अपने गेटवे के विवरण के साथ बदलें
-
फाइलों का नाम बदलें:
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() { }
}
अनुकूलन गाइड
बुनियादी कॉन्फ़िगरेशन
-
गेटवे जानकारी:
$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'; -
समर्थित विशेषताएँ:
$this->supports = array(
'products',
'refunds',
'subscriptions', // if applicable
);
भुगतान प्रक्रिया
मुख्य भुगतान लॉजिक 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 ) );
}
अपने गेटवे का परीक्षण करें
विकास वातावरण
- परीक्षण मोड: हमेशा एक परीक्षण/सैंडबॉक्स मोड लागू करें
- डिबग लॉगिंग: समस्या निवारण के लिए विस्तृत लॉगिंग शामिल करें
- त्रुटि परिदृश्य: विभिन्न असफलता स्थितियों का परीक्षण करें
- POS परीक्षण: विशेष रूप से POS वातावरण में परीक्षण करें
परीक्षण मामले
- सफल भुगतान: सुनिश्चित करें कि आदेश सही ढंग से पूर्ण होते हैं
- असफल भुगतान: उचित त्रुटि हैंडलिंग सुनिश्चित करें
- रिफंड: यदि समर्थित हो तो रिफंड कार्यक्षमता का परीक्षण करें
- एज केस: विभिन्न आदेश राशि और कॉन्फ़िगरेशन के साथ परीक्षण करें
तैनाती
प्लगइन पैकेजिंग
- विकास फ़ाइलें हटा दें: परीक्षण फ़ाइलें और विकास उपकरण साफ करें
- संस्करण नियंत्रण: प्लगइन हेडर में संस्करण नंबर अपडेट करें
- दस्तावेज़ीकरण: स्थापना निर्देशों के साथ README शामिल करें
- ज़िप पैकेज: स्थापित करने योग्य ज़िप फ़ाइल बनाएं
वितरण
- 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: वेब एकीकरण गेटवे