أنت تقوم ببناء تطبيق ويب للتجارة الإلكترونية وتحتاج إلى دعم العديد من طرق الدفع (Visa ، MasterCard ... إلخ.) بحيث يمكن لعملائك دفع طلباتهم بسهولة. بدلاً من تنفيذ هذا بنفسك ، تقرر الاعتماد على مزود طرف ثالث موثوق به لتقديم هذه الخدمات لك.
شركة معروفة من بلجيكا توفر خدمات الدفع هي OGONE. أنها توفر أكثر من 40 طريقة دفع دولية ومحلية. يتعاملون مع معاملات الدفع بين عملائك ومتجرك على الإنترنت ومقدمي أساليب الدفع (على سبيل المثال).
يجب عليك دفع مبلغ صغير لكل معاملة تعالجها OGONE ، لكن هذا يشتري لك حماية الاحتيال المدمجة والأمن وأدوات لإدارة مدفوعاتك ... وأكثر من ذلك بكثير. تكلفة تنفيذ كل هذا بنفسك أكبر بكثير.
لذلك يمكنك الاشتراك في حساب OGONE وتقرر دمج نظامهم في تطبيق الويب الخاص بك.
كيف يمكننا أن ندرك هذا؟ دعونا نكتشف ...
أول الأشياء أولاً ، انتقل إلى موقع Ogone واشترك في حساب اختبار مجاني. في الزاوية العلوية اليمنى من الموقع ، "ستجد زرًا مصممًا" قم بإنشاء حساب الاختبار المجاني ".
الشكل 1 - حساب الاختبار

انقر فوقه واملأ النموذج الناتج. تأكد من أن البيانات التي تدخلها في هذا النموذج صحيحة. بعد تقديم طلبك للحصول على حساب اختبار جديد ، سيقوم موظف OGONE بالتحقق من تفاصيلك ، واعتمادًا على النتيجة ، سيوافق أو رفض طلبك. قد تستغرق هذه العملية بضع ساعات. مزعج للغاية ، ولكن لا توجد طريقة للتغلب عليه.
بمجرد الموافقة على حسابك ، ستتلقى رسالة بريد إلكتروني تحتوي على كلمة المرور الخاصة بك. أنت الآن مستعد لتسجيل الدخول إلى إدارة Ogone Merchant.
قبل أن تتمكن من البدء في استخدام حساب الاختبار الخاص بك ، تحتاج إلى تكوين الإعدادات التالية:
لتكوين خيارات الاشتراك الخاصة بك ، انقر فوق حساب الخيار المعروض في القائمة على الجانب الأيسر من الشاشة.
الشكل 2 - قائمة إدارة التاجر

في صفحة الحساب ، سيتم تقديم بعض الخيارات ، حدد الخيار "اشتراكك". تحتاج الآن إلى اختيار نوع الاشتراك. اختر "Adventure" وانقر فوق الزر المسمى "تأكيد وانتقل إلى خياراتك".
هنا يمكنك إضافة عدد من الخيارات للاشتراك الخاص بك مثل اكتشاف الاحتيال ، واستضافة الصور ، ومظهر الفاتورة ... إلخ. لهذا العرض التوضيحي ، لا نحتاج إلى أي خيارات إضافية ، فقط انقر فوق تأكيد لحفظ الإعدادات الخاصة بك.
بعد تكوين نوع الاشتراك الخاص بك ، يمكنك المتابعة عن طريق إضافة طرق الدفع التي ترغب في تقديمها لعملائك. انقر على طرق دفع الخيار في قائمة إدارة التاجر (الشكل 2). بعد إضافة تأشيرة إلى قائمة "طرق الدفع المحددة" ، تحتاج إلى تحرير طريقة الدفع هذه وتعيينها على تنشيطها.
الشكل 3 - تنشيط طريقة دفع التأشيرة

ما عليك سوى النقر فوق خيار التحرير الموضح في الشكل 3 ، ثم حدد طريقة الدفع على النحو المنشط (التنشيط: نعم) وانقر فوق إرسال. يمكنك استخدام رقم البطاقة 4111 1111 1111 1111 لاختبار مدفوعات التأشيرة. فقط أدخل أي شيء لتاريخ انتهاء الصلاحية ورمز الأمان 3 أرقام.
أخيرًا وليس آخرًا ، تحتاج إلى تكوين بعض الإعدادات الفنية التي تحدد كيفية معالجة المدفوعات عبر الإنترنت. المضي قدماً بالنقر فوق خيار المعلومات التقنية المعروضة في القائمة (الشكل 2).
تنقسم الصفحة الناتجة إلى علامات التبويب التالية:
فقط انقر على هذه الروابط لرؤية لقطات الشاشة كيف قمت بتكوين حساب اختبار Ogone الخاص بي. لقد قمت بتعيين توقيع SHA-1 و SHA-1-Out على "Microsoftaspnet4". سنعود إلى هذا لاحقًا.
لقد قمت الآن بإنشاء وتكوين حساب اختبار Ogone الخاص بك. أنت مستعد لاتخاذ أول دفعة عبر الإنترنت.
لقد قمت بإنشاء مشروع تطبيق ويب ASP.NET بسيط يوضح كيف يمكنك دمج مدفوعات OGONE ضمن موقع ASP.NET الخاص بك.
الشكل 4 - الحل

يحتوي تطبيق الويب هذا فقط على عدد قليل من الصفحات:
ملاحظة : كما ترون ، يحتوي المشروع أيضًا على اثنين من ملفات التعليمات البرمجية. سنناقش هذه في الأقسام التالية. تحتوي هذه الملفات على الرمز اللازم للتعامل مع عملية الدفع باستخدام OGONE. لا تتردد في تحسين التصميم ، لقد قمت فقط بتضمين الحد الأدنى من التعليمات البرمجية للحصول على الأشياء.
لا تنقر فوق زر البدء المعروض أدناه ، إنه مجرد لقطة شاشة. هذا ما تبدو عليه صفحة Default.aspx:
الشكل 5 - صفحة default.aspx

يتم إنشاء مرجع (أو معرف الطلب) لتحديد الطلب الذي يتم دفعه بشكل فريد. أوجون يتتبع هذه المراجع. لا يمكنك معالجة نفس المرجع مرتين. ولهذا السبب اخترت استخدام GUID تم إنشاؤه عشوائيًا لهذا المثال. اضطررت إلى تقصير GUID إلى 30 حرفًا لأن Ogone لا يسمح بأكثر من هذا الحد.
من الواضح ، إلى جانب هذا المرجع ، تحتاج أيضًا إلى تحديد المبلغ الذي يجب دفعه. يرسل رمز المثال أيضًا على طول عنوان البريد الإلكتروني للعميل المعني. وبهذه الطريقة ، يمكن لـ Ogone إرسال بريد إلكتروني إلى العميل الذي تمت معالجته بنجاح.
دعونا نرى الكود مخبأ خلف حدث النقر فوق الزر:
قائمة 1 - طلب الدفع Ogone
// Persist order to database
// ...
OgoneRequest ogoneRequest = new OgoneRequest ( ) ;
ogoneRequest . RequestPayment ( this . _reference , amount , customerEmail ) ;
// Clear shopping cart
// ...يمكنك بدء الدفع عن طريق إنشاء مثيل جديد لفئة OgonereQuest والاتصال بالطريقة التي يطلبها (...). تتطلب هذه الطريقة 3 معلمات ، وهي مرجع الطلب ، والمبلغ الذي يجب دفعه وعنوان البريد الإلكتروني للعميل.
قائمة 2 - OgonereQuest Constructor
public OgoneRequest ( )
{
OgoneUrl = ConfigurationManager . AppSettings [ "Ogone_Url" ] ;
Psid = ConfigurationManager . AppSettings [ "Ogone_PSID" ] ;
ShaKey = ConfigurationManager . AppSettings [ "Ogone_SHA1_IN" ] ;
Currency = ConfigurationManager . AppSettings [ "Ogone_Currency" ] ;
Language = ConfigurationManager . AppSettings [ "Ogone_Language" ] ;
AcceptUrl = ConfigurationManager . AppSettings [ "Ogone_AcceptUrl" ] ;
ExceptionUrl = ConfigurationManager . AppSettings [ "Ogone_ExceptionUrl" ] ;
CancellationUrl = ConfigurationManager . AppSettings [ "Ogone_CancellationUrl" ] ;
}يقوم مُنشئ Class of OgonereQuest بتهيئة بعض الخصائص عن طريق قراءة بعض القيم من ملف تكوين التطبيق (web.config). تحتاج إلى تحديد عنوان URL للاتصال لبدء عملية الدفع ، و PSID OGONE (اسم المستخدم) ، ومفتاح SHA1-IN الذي حددته في إدارة التاجر ، وعنوان URL لإعادة التوجيه ... إلخ.
قائمة 3 - طريقة طلب (...)
public void RequestPayment ( string reference , double amount , string email )
{
// Multiply by one hundred and round to zero decimals
amount = Math . Round ( amount * 100 , 0 ) ;
RemotePost post = new RemotePost { Url = this . OgoneUrl } ;
post . Add ( "pspid" , this . Psid ) ;
post . Add ( "orderid" , reference ) ;
post . Add ( "amount" , amount . ToString ( ) ) ;
post . Add ( "currency" , this . Currency ) ;
post . Add ( "language" , this . Language ) ;
post . Add ( "email" , email ) ;
// Hash
post . Add ( "SHASign" , Ogone . GenerateHash (
reference + amount + this . Currency +
this . Psid + this . ShaKey ) ) ;
// Redirection URLs
post . Add ( "accepturl" , this . AcceptUrl ) ;
post . Add ( "exceptionurl" , this . ExceptionUrl ) ;
post . Add ( "cancelurl" , this . CancellationUrl ) ;
post . Post ( ) ;
}تبدأ طريقة الطلب (...) عملية دفع جديدة عن طريق إنشاء منشور HTTP باستخدام فئة Remotepost. يتم تضمين جميع المعلومات اللازمة في المنشور مثل PSID ، والمبلغ الذي يجب دفعه ، واللغة ، وعلامة SHA1 ... إلخ.
تحتاج إلى حساب تجزئة SHA1 باستخدام توقيع SHA1-In الذي قمت بتكوينه في إدارة التاجر. ينص OGONE على أنك تحتاج أيضًا إلى تضمين المرجع والمبلغ والعملة و PSID في هذا التجزئة. سنعود إلى حساب تجزئة SHA1 لاحقًا.
ملاحظة : يرسل منشور HTTP على طول بعض عناوين URL لإعادة التوجيه والتي ستستخدمها Ogone عند إجراء الدفع ، وإلغاء ... إلخ. إذا لم تقدم هذه ، فسيتم استخدام عناوين URL الافتراضية كما تم تكوينها في إدارة التاجر (علامة تبويب تعليقات المعاملة ضمن المعلومات الفنية).
الشكل 6 - تأكيد الدفع

بعد بدء عملية الدفع ، سيتم إعادة توجيهك إلى صفحة جديدة كما هو موضح في الشكل أعلاه. يمكنك تغيير تخطيط هذه الصفحة من خلال تحديد معلمات إضافية في منشور HTTP. ألق نظرة على رمز المصدر المصاحب لهذا المقال ووثائق Ogone الرسمية لمزيد من المعلومات حول هذا الموضوع.
إذا نقر المستخدم على زر الإلغاء ، فسيتم إنهاء عملية الدفع وسيتم إعادة توجيهه إلى صفحة payerCancelled.aspx. تعرض هذه الصفحة رسالة مفادها أن المستخدم ألغى عملية الدفع.
لكننا قمنا بتكوين حساب OGONE الخاص بنا بطريقة بحيث يتم تضمين جميع المعلومات ذات الصلة المتعلقة بعملية الدفع في سلسلة الاستعلام. على سبيل المثال:
http: // localhost: 3767/paymentCancelled.aspx؟ orderid = 246CF6F0-8BAD-4EDB-806C-EED3FB & Currency = EUR & CASED = 19.99 & PM = CreditCard & Hampl = & status = 1 & cardno = & ed = & cn = & trxdate = 04 ٪ 2f08 ٪ 2f10 & payid = 6806803 & ncerror = & brand = ... etc.
يمكنك استخراج معلومات مثل مرجع الطلب الأصلي ، والمبلغ ، وطريقة الدفع (على سبيل المثال: VISA) ، وحالة نجاح الدفع ... إلخ. يمكنك تسجيل أو تجاهل هذه المعلومات إذا كنت ترغب في ذلك. الأمر متروك لك. يتضمن Ogone أيضًا تجزئة SHA1 مؤلفة بمساعدة توقيع SHA1-Out الذي تم تكوينه في إدارة التاجر. يتيح لك هذا التجزئة التحقق من هوية الشخص الذي قدم الطلب وصلاحية البيانات الموجودة في سلسلة الاستعلام.
إذا تم الانتهاء من عملية الدفع بنجاح ، فسيقوم OGONE بإعادة توجيه المستخدم إلى صفحة الدفع. ستتضمن سلسلة الاستعلام أيضًا نفس البيانات. أثناء حدث تحميل الصفحة ، يتم فحص حالة الدفع وصلاحية تجزئة SHA. إذا كان كلاهما صحيحًا ، يتم قبول الدفع.
قائمة 4 - معالج أحداث الصفحة paymentaccepted.aspx
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;ملاحظة : يتضمن OGONE معلمة تسمى الحالة (عدد صحيح) في سلسلة الاستعلام. هذه الحالة تخبرك بحالة الدفع. لف الرمز العينة لهذه المقالة بعض هذه القيم في التعداد يسمى OgonePaymentStatus. تحقق من وثائق Ogone الرسمية للحصول على قائمة بجميع القيم الممكنة. تتحقق طريقة ISPaymentStatusValid (...) إذا كانت المعلمة الواردة الواردة واحدة من القيم التي تُعلمنا بالدفع.
نوع فئة OgonerEpsonse هو مجرد غلاف صغير يتعامل مع معلمات سلسلة الاستعلام التي يتضمنها Ogone عند إعادة توجيه المستخدم إلى موقعك.
يوضح لك قائمة 5 مقتطفات صغيرة من هذا الفصل. تقرأ خاصية isShasignValid توقيع SHA1-Out من ملف تكوين التطبيق (web.config) ويعيد حساب علامة SHA. للقيام بذلك ، يجب تضمين بيانات أخرى مثل المبلغ ، مرجع الطلب ، العملة ... إلخ. (راجع وثائق Ogone الرسمية لمزيد من المعلومات).
إذا كانت علامة SHA المحسوبة تتطابق مع تلك المضمنة في سلسلة الاستعلام ، فنحن نتعامل مع طلب ينشأ من OGONE وتكون البيانات الموجودة في معلمات سلسلة الاستعلام صالحة.
قائمة 5 - فئة Ogoneresponse
public static class OgoneResponse
{
public static string OrderId { get { return HttpContext . Current . Request [ "orderid" ] ; } }
public static string Amount { get { return HttpContext . Current . Request [ "amount" ] ; } }
public static string ShaSign { get { return HttpContext . Current . Request [ "shasign" ] ; } }
public static bool IsShaSignValid
{
get
{
string key = OrderId + Currency + Amount + PaymentMethod + AcceptanceCode +
( int ) Status + CardNumber + PaymentId + NcError + Brand +
ConfigurationManager . AppSettings [ "Ogone_SHA1_OUT" ] ;
return ShaSign == Ogone . GenerateHash ( key ) ;
}
}
} يوضح لك القائمة 6 طريقة ممكنة لك كيف يمكنك حساب تجزئة SHA1 لسلسلة. يتم تحويل السلسلة إلى صفيف بايت ثم ترميزها باستخدام sha1cryptoserviceprovider. ثم يتم تحويل التجزئة الناتجة إلى تنسيق سداسي عشري.
قائمة 6 - حساب تجزئة SHA1
public static string GenerateHash ( string input )
{
byte [ ] bytes = new ASCIIEncoding ( ) . GetBytes ( input ) ;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider ( ) ;
byte [ ] hash = sha . ComputeHash ( bytes ) ;
StringBuilder result = new StringBuilder ( ) ;
for ( int i = 0 ; i < 20 ; i ++ )
{
string temp = hash [ i ] . ToString ( "X2" ) ;
if ( temp . Length == 1 )
{
temp = "0" + temp ;
}
result . Append ( temp ) ;
}
return result . ToString ( ) ;
}ومع هذا ، تنتهي المقالة ...
أتمنى أن تكون قد استمتعت بهذا البرنامج التعليمي حول كيفية دمج خدمات الدفع OGONE مع تطبيق الويب الخاص بالتجارة الإلكترونية. لتلخيص ما قمنا بتغطيته من وجهة نظر المطور: