שיטות תשלום מיושמות במערכת nopCommerce כהרחבות (plugins). אנו ממליצים לך לקרוא את המאמר "איך לכתוב הרחבה" לפני שאתה מתחיל לכתוב שיטת תשלום חדשה. המאמר יסביר את השלבים הנדרשים ליצירת הרחבה.
למעשה, שיטת תשלום היא הרחבה רגילה המממשת את ממשק IPaymentMethod (Nop.Services.Payments namespace). כפי שודאי ניחשת, ממשק IPaymentMethod משמש ליצירת הרחבת שיטת תשלום. הוא כולל מספר מתודות המיועדות באופן ספציפי לשיטת תשלום כגון ProcessPayment() ו- GetAdditionalHandlingFee(). הוסף פרויקט (ספרית מחלקות, class library) הרחבת תשלום ל- solution ובוא נתחיל.
בקרים, דפי צפיה, מודלים (Controllers, views, models)
ראשית יש ליצור בקר. בקר זה יהיה אחראי להגיב לבקשות שיתקבלו מאתר ASP.NET MVC.
1. כאשר מיישמים שיטת תשלום חדשה, בקר זה צריך להיגזר ממחלקה אבסטרקטית מיוחדת BaseNopPaymentController. חלק משיטות התשלום מבקשות מידע מהלקוח, למשל, מספר כרטיס אשראי. לכן מחלקה BaseNopPaymentController דורשת לממש שתי מתודות פעולה המשמשות לניתוח ואימות המידע שמתקבל בזמן תהליך התשלום.
א. ValidatePaymentForm משמשת בחנות לאימות מידע המוזן ע"י הלקוח. היא מחזירה רשימה של אזהרות (למשל, לקוח לא הזין סוג כרטיס אשראי). אם שיטת התשלום שלך לא מבקשת מהלקוח להזין מידע נוסף אז ValidatePaymentForm צריכה להחזיר רשימה ריקה.
[NonAction]
public override IList ValidatePaymentForm(FormCollection form)
{
var warnings = new List();
return warnings;
{
ב. מתודה GetPaymentInfo משמשת בחנות לניתוח המידע של הלקוח, למשל, פרטי כרטיס האשראי. מתודה זו מחזירה אוביקט ProcessPaymentRequest עם המידע שהלקוח הזין. אם שיטת התשלום שלך לא מבקשת מידע נוסף מהלקוח, GetPaymentInfo תחזיר אוביקט ProcessPaymentRequest ריק.
[NonAction]
public override ProcessPaymentRequest GetPaymentInfo(FormCollection form)
{
var paymentInfo = new ProcessPaymentRequest();
return paymentInfo;
{
2. כעת יש לממש את מתודות פעולה Configure המשמשות את הגדרת ההרחבה (ע"י מנהל האתר/חנות באיזור הניהול). מתודה זו ו-view מתאים יגדירו כיצד יראה מנהל את אפשרויות ההגדרות בלוח הניהול (מערכת > הגדרות > שיטות תשלום).
3. שלב אחרון הוא ליצור מתודת פעולה PaymentInfo. מתודה זו ו-view מתאים יקבעו כיצד הלקוחות יראו את דף מידע התשלום במשך תהליך התשלום.
ביצוע התשלום
כעת יש צורך ליצור מחלקה המממשת את ממשק IPaymentMethod. מחלקה זו תעשה את כל העבודה של התקשרות עם ספק התשלומים. כאשר מישהו מבצע הזמנה תיקרא מתודת ProcessPayment או מתודת PostProcessPayment מהמחלקה שהקמת. כך מחלקת CashOnDeliveryPaymentProcessor מוגדרת (שיטת תשלום "מזומן"):
/// /// CashOnDelivery payment processor ///
public class CashOnDeliveryPaymentProcessor : BasePlugin, IPaymentMethod
}...
לממשק IPaymentMethod יש מספר מתודות ותכונות אשר חובה לממש.
public void GetConfigurationRoute(out string actionName,
out string controllerName,
out RouteValueDictionary routeValues)
{
actionName = "Configure"; controllerName = "PaymentCashOnDelivery";
routeValues = new RouteValueDictionary()
{
{ "Namespaces", "Nop.Plugin.Payments.CashOnDelivery.Controllers" },
{ "area", null {
{;
{
public void GetPaymentInfoRoute(out string actionName,
out string controllerName,
out RouteValueDictionary routeValues)
{
actionName = "PaymentInfo";
controllerName = "PaymentCashOnDelivery";
routeValues = new RouteValueDictionary()
{
{ "Namespaces", "Nop.Plugin.Payments.CashOnDelivery.Controllers" },
{ "area", null {
{;
{
סיכום
אנו מקווים כי מאמר זה יאפשר לך להתחיל בתהליך הוספת שיטות תשלום.