שילוב שער תשלום ב-OpenCart: תוסף מותאם אישית
אנו מפתחים תוספי תשלום מותאמים אישית ל-OpenCart המותאמים לשער התשלום שלך. שילוב שער תשלום ב-OpenCart הופך לכאב ראש אם לא מתחשבים בהבדלים הארכיטקטוניים בין הגרסאות. מודול התשלום חייב להיות מותאם לגרסת המנוע. פיתוח ל-OpenCart 4, לדוגמה, דורש PSR-4, בעוד שתוספי תשלום ל-OpenCart 3 עוקבים אחר הגישה הישנה. אנו בונים מודולי תשלום מותאמים אישית מאפס: במשך יותר מ-5 שנים פיתחנו יותר מ-30 תוספים לשערי תשלום שונים. הגישה שלנו היא לכתוב קוד שלא ישבר בעדכון המנוע. חסכו עד 40% מהתקציב בהשוואה לקניית פתרונות מוכנים.
מדוע תוסף מותאם אישית בטוח יותר מפתרון מוכן?
פתרונות סטנדרטיים מהמרקטפלייס לרוב לא מצליחים לטפל בקריאות חוזרות (callbacks) עם חתימות HMAC נכונות, מבלבלים בין סטטוסי הזמנות, וחסרים גמישות בהגדרות. השוו: התוסף שלנו מעבד עד 1000 קריאות חוזרות בשנייה — פי 3 מהר יותר מהתוסף הממוצע. מודולים מוכנים דורשים דמי רישוי שנתיים, בעוד שתוסף מותאם אישית הוא הוצאה חד-פעמית. תשלום מותאם אישית ל-OpenCart נותן לך גמישות בהגדרות.
כיצד אנו מבטיחים טיפול מאובטח בקריאות חוזרות?
הקריאה החוזרת היא הנקודה הפגיעה ביותר. תוקף יכול לזייף בקשה ולשנות את סטטוס ההזמנה. אנו מגנים עליה בשתי דרכים:
- אימות חתימה באמצעות HMAC-SHA256 עם מפתח סודי (ראה HMAC).
- בדיקת כתובת ה-IP של שער התשלום (אופציונלי).
להלן דוגמה טיפוסית למטפל קריאות חוזרות עבור OpenCart 4.x. שימו לב לאימות החתימה ולמיפוי הסטטוסים. טיפול בקריאות חוזרות ב-OpenCart וחתימת HMAC הם מרכיבי אבטחה מרכזיים.
namespace Opencart\Catalog\Controller\Extension\Mypay\Payment;
class Mypay extends \Opencart\System\Engine\Controller {
public function callback(): void {
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
$secret = $this->config->get('payment_mypay_secret_key');
$expectedSig = hash_hmac('sha256', $raw, $secret);
if (!hash_equals($expectedSig, $_SERVER['HTTP_X_SIGNATURE'] ?? '')) {
http_response_code(403);
exit('Forbidden');
}
$this->load->model('checkout/order');
$orderId = (int) $data['order_id'];
$statusMap = [
'succeeded' => (int) $this->config->get('payment_mypay_complete_status'),
'failed' => (int) $this->config->get('payment_mypay_failed_status'),
'cancelled' => (int) $this->config->get('payment_mypay_cancelled_status'),
];
$newStatus = $statusMap[$data['status']] ?? null;
if ($newStatus) {
$this->model_checkout_order->addHistory(
$orderId,
$newStatus,
'MyPay: ' . $data['status'],
$data['status'] === 'succeeded'
);
}
http_response_code(200);
echo 'OK';
exit;
}
} כיצד אנו בודקים את התוסף לפני המסירה?
אנו משתמשים בשילוב של בדיקות אוטומטיות וידניות. בדיקות יחידה מכסות את לוגיקת הסטטוסים ואימות החתימה. בדיקות אינטגרציה מתבצעות עם עסקאות אמיתיות במצב הבדיקה של שער התשלום. לניפוי קריאות חוזרות, אנו משתמשים ב-ngrok — הוא פותח גישה ל-localhost שלך מהאינטרנט. לאחר מעבר מוצלח של כל התרחישים, אתה מקבל ארכיון מוכן עם התוסף והתיעוד.
מבנה התוסף עבור OpenCart 4.x
התוסף מורכב משלושה מודולים: בקר ניהול להגדרות, בקר קטלוג לתשלום, ו-install.json עבור המתקין. כל הקבצים נמצאים בתיקייה אחת namespace Opencart\Catalog\Controller\Extension\Mypay\Payment; class Mypay extends \Opencart\System\Engine\Controller { public function callback(): void { $raw = file_get_contents('php://input'); $data = json_decode($raw, true); $secret = $this->config->get('payment_mypay_secret_key'); $expectedSig = hash_hmac('sha256', $raw, $secret); if (!hash_equals($expectedSig, $_SERVER['HTTP_X_SIGNATURE'] ?? '')) { http_response_code(403); exit('Forbidden'); } $this->load->model('checkout/order'); $orderId = (int) $data['order_id']; $statusMap = [ 'succeeded' => (int) $this->config->get('payment_mypay_complete_status'), 'failed' => (int) $this->config->get('payment_mypay_failed_status'), 'cancelled' => (int) $this->config->get('payment_mypay_cancelled_status'), ]; $newStatus = $statusMap[$data['status']] ?? null; if ($newStatus) { $this->model_checkout_order->addHistory( $orderId, $newStatus, 'MyPay: ' . $data['status'], $data['status'] === 'succeeded' ); } http_response_code(200); echo 'OK'; exit; } } .
extension/mypay/
├── admin/
│ ├── controller/payment/mypay.php
│ ├── language/en-gb/payment/mypay.php
│ ├── language/ru-ru/payment/mypay.php
│ └── view/template/payment/mypay.twig
├── catalog/
│ ├── controller/payment/mypay.php
│ ├── language/ru-ru/payment/mypay.php
│ └── view/template/payment/mypay.twig
└── install.json השוואה בין פתרון מותאם אישית לפתרון מוכן
| תכונה | תוסף מותאם אישית | הרחבה מוכנה |
|---|---|---|
| טיפול בקריאות חוזרות | שליטה מלאה, אימות חתימה | מוגבל, לעיתים ללא HMAC |
| גמישות בהגדרות | כל סטטוס, שדה, אירוע | אפשרויות קבועות |
| עדכונים | תואם לגרסאות OC חדשות | תלוי במפתח |
| עלות אחזקה | משתלם בשל היעדר דמי רישוי | דמי רישוי שנתיים |
תהליך הפיתוח
- ניתוח — לימוד ה-API של שער התשלום, הסכמה על הפרוטוקול.
- עיצוב — שרטוט מבנה התוסף, תוכנית מיפוי סטטוסים.
- יישום — כתיבת בקרים, מודלים, תבניות. פיתוח מודול תשלום כולל שלבים אלה.
- בדיקות — בדיקות יחידה, אינטגרציה עם שער בדיקה, אימות קריאות חוזרות דרך ngrok.
- פריסה — מסירת ארכיון, הוראות, ייעוץ.
כיצד לנפות קריאה חוזרת?
יומני OpenCart נשמרים ב-`/system/storage/logs/`. לניפוי קריאות חוזרות, השתמש ב-ngrok — הוא פותח גישה ל-localhost שלך מהאינטרנט. ודא שהשרת מאפשר בקשות POST נכנסות לכתובת ה-URL של הקריאה החוזרת. כמו כן, ודא שהגדרות שער התשלום מציינות את כתובת ה-URL הנכונה.מה כלול בפיתוח מותאם אישית?
- פיתוח תוסף עבור גרסת OpenCart שנבחרה (או שתיהן). יצירת תוסף תשלום מוכן לשימוש ל-OpenCart.
- אינטגרציה עם כל שער תשלום דרך REST API, SOAP, או פרוטוקול מותאם.
- הגדרת תשלום ב-OpenCart — קביעת סטטוסי הזמנות והודעות.
- הכנת תיעוד התקנה והגדרה.
- הוראות התקנה (ארכיון + מדריך).
- תמיכה למשך 30 יום לאחר המסירה — תיקון באגים, מענה לשאלות.
לוחות זמנים ועלות
פיתוח תוסף בודד אורך בין 3 ל-5 ימי עבודה. אם נדרשת תמיכה בשתי הגרסאות (3.x ו-4.x), לוח הזמנים גדל פי 1.5. העלות מחושבת באופן אישי לפי מורכבות ה-API של שער התשלום ודרישות התכונות. אנו נעריך את הפרויקט שלך — פשוט תאר את שער התשלום וגרסת OpenCart, ואנו נציע פתרון. קבל ייעוץ על אינטגרציה.
השוואת גרסאות OpenCart
| תכונה | OpenCart 3.x | OpenCart 4.x |
|---|---|---|
| מבנה קבצים | extension/mypay/ עם תיקיות מקוננות |
extension/mypay/ ├── admin/ │ ├── controller/payment/mypay.php │ ├── language/en-gb/payment/mypay.php │ ├── language/ru-ru/payment/mypay.php │ └── view/template/payment/mypay.twig ├── catalog/ │ ├── controller/payment/mypay.php │ ├── language/ru-ru/payment/mypay.php │ └── view/template/payment/mypay.twig └── install.json עם namespaces |
| שמות מחלקות | upload/ |
extension/ |
| קובץ התקנה | אין (רק zip) | ControllerPaymentMypay |
| הגדרות | דרך משתנים גלובליים | דרך \Opencart\Catalog\Controller\Extension\Mypay\Payment\Mypay |
צור קשר כדי שנעריך את מורכבות האינטגרציה שלך. פנה אלינו — נדון בפרויקט שלך.







