คุณกำลังสร้างเว็บแอปพลิเคชันอีคอมเมิร์ซและคุณต้องสนับสนุนวิธีการชำระเงินหลายวิธี (วีซ่ามาสเตอร์การ์ด ... ฯลฯ ) เพื่อให้ลูกค้าของคุณสามารถชำระเงินได้อย่างง่ายดาย แทนที่จะใช้สิ่งนี้ด้วยตัวคุณเองคุณตัดสินใจที่จะพึ่งพาผู้ให้บริการบุคคลที่สามที่เชื่อถือได้เพื่อให้บริการเหล่านี้แก่คุณ
บริษัท ที่รู้จักกันดีจากเบลเยียมที่ให้บริการชำระเงินคือ Ogone พวกเขาให้วิธีการชำระเงินระหว่างประเทศและท้องถิ่นมากกว่า 40 วิธี พวกเขาจัดการธุรกรรมการชำระเงินระหว่างลูกค้าร้านค้าออนไลน์ของคุณและผู้ให้บริการวิธีการชำระเงิน (เช่นวีซ่า)
แน่นอนว่าคุณต้องจ่ายเงินก้อนเล็ก ๆ สำหรับการทำธุรกรรมแต่ละรายการที่จัดการโดย Ogone แต่นั่นเป็นการซื้อการป้องกันการฉ้อโกงการรักษาความปลอดภัยเครื่องมือในการจัดการการชำระเงินของคุณ ... และอีกมากมาย ค่าใช้จ่ายในการดำเนินการทั้งหมดนี้เองนั้นยิ่งใหญ่กว่ามาก
ดังนั้นคุณจึงลงทะเบียนสำหรับบัญชี Ogone และตัดสินใจรวมระบบของพวกเขาเข้ากับเว็บแอปพลิเคชันของคุณ
เราจะรู้เรื่องนี้ได้อย่างไร? มาหากันเถอะ ...
สิ่งแรกสิ่งแรกไปที่เว็บไซต์ Ogone และลงทะเบียนสำหรับบัญชีทดสอบฟรี ที่มุมบนขวาของไซต์คุณ "จะค้นหาปุ่ม" สร้างบัญชีทดสอบฟรีของคุณ "
รูปที่ 1 - บัญชีทดสอบ

คลิกและกรอกแบบฟอร์มผลลัพธ์ ตรวจสอบให้แน่ใจว่าข้อมูลที่คุณป้อนในแบบฟอร์มนี้ถูกต้อง หลังจากส่งคำขอของคุณสำหรับบัญชีทดสอบใหม่พนักงานของ Ogone จะตรวจสอบรายละเอียดของคุณและขึ้นอยู่กับผลลัพธ์จะอนุมัติหรือปฏิเสธคำขอของคุณ กระบวนการนี้อาจใช้เวลาสองสามชั่วโมง ค่อนข้างน่ารำคาญ แต่ไม่มีทางรอบ ๆ
เมื่อบัญชีของคุณได้รับการอนุมัติแล้วคุณจะได้รับอีเมลที่มีรหัสผ่านของคุณ ตอนนี้คุณพร้อมที่จะเข้าสู่ระบบการบริหารการค้า Ogone
ก่อนที่คุณจะเริ่มใช้บัญชีทดสอบของคุณคุณต้องกำหนดค่าการตั้งค่าต่อไปนี้:
ในการกำหนดค่าตัวเลือกการสมัครสมาชิกของคุณให้คลิกที่บัญชีตัวเลือกที่แสดงในเมนูทางด้านซ้ายของหน้าจอ
รูปที่ 2 - เมนูการบริหารการค้า

ในหน้าบัญชีคุณจะถูกนำเสนอพร้อมตัวเลือกไม่กี่ตัวเลือกตัวเลือก "การสมัครสมาชิกของคุณ" ตอนนี้คุณต้องเลือกประเภทการสมัครสมาชิก เลือก "Adventure" และคลิกปุ่มที่มีป้ายกำกับ "ยืนยันและไปที่ตัวเลือกของคุณ"
ที่นี่คุณสามารถเพิ่มตัวเลือกจำนวนมากในการสมัครสมาชิกของคุณเช่นการตรวจจับการฉ้อโกงการโฮสต์รูปภาพรูปลักษณ์ใบแจ้งหนี้ ... ฯลฯ สำหรับการสาธิตนี้เราไม่ต้องการตัวเลือกเพิ่มเติมใด ๆ ดังนั้นเพียงคลิกยืนยันเพื่อบันทึกการตั้งค่าของคุณ
หลังจากที่คุณกำหนดค่าประเภทการสมัครสมาชิกแล้วคุณสามารถดำเนินการต่อได้โดยการเพิ่มวิธีการชำระเงินที่คุณต้องการเสนอให้กับลูกค้าของคุณ คลิกที่วิธีการชำระเงินตัวเลือกในเมนูการบริหารการค้า (รูปที่ 2) หลังจากที่คุณเพิ่มวีซ่าลงในรายการ "วิธีการชำระเงินที่เลือก" คุณต้องแก้ไขวิธีการชำระเงินนี้และตั้งค่าเป็นเปิดใช้งาน
รูปที่ 3 - เปิดใช้งานวิธีการชำระเงินวีซ่า

เพียงคลิกที่ตัวเลือกแก้ไขที่แสดงในรูปที่ 3 ทำเครื่องหมายวิธีการชำระเงินตามที่เปิดใช้งาน (การเปิดใช้งาน: ใช่) และคลิกที่ส่ง คุณสามารถใช้หมายเลขบัตร 4111 1111 1111 1111 เพื่อทดสอบการชำระเงินวีซ่า เพียงป้อนอะไรก็ได้สำหรับวันหมดอายุและรหัสความปลอดภัย 3 หลัก
สุดท้าย แต่ไม่ท้ายสุดคุณต้องกำหนดค่าการตั้งค่าทางเทคนิคบางอย่างที่กำหนดว่าจะจัดการการชำระเงินออนไลน์อย่างไร ดำเนินการโดยคลิกที่ข้อมูลทางเทคนิคตัวเลือกที่แสดงในเมนู (รูปที่ 2)
หน้าผลลัพธ์แบ่งออกเป็นแท็บต่อไปนี้:
เพียงคลิกที่ลิงค์เหล่านี้เพื่อดูภาพหน้าจอว่าฉันได้กำหนดค่าบัญชีทดสอบ Ogone ของฉันอย่างไร ฉันตั้งค่าลายเซ็น Sha-1-in และ sha-1-out เป็น "Microsoftaspnet4" เราจะกลับไปที่นี่ในภายหลัง
ตอนนี้คุณได้สร้างและกำหนดค่าบัญชีทดสอบ Ogone ของคุณแล้ว คุณพร้อมที่จะชำระเงินออนไลน์ครั้งแรกของคุณ
ฉันได้สร้างโครงการแอปพลิเคชันเว็บ ASP.NET แบบง่าย ๆ ที่แสดงให้เห็นว่าคุณสามารถรวมการชำระเงิน OGONE ภายในเว็บไซต์ที่เปิดใช้งาน ASP.NET ของคุณเองได้อย่างไร
รูปที่ 4 - โซลูชัน

เว็บแอปพลิเคชันนี้มีเพียงไม่กี่หน้าเท่านั้น:
หมายเหตุ : อย่างที่คุณเห็นโครงการยังมีไฟล์รหัสสองสามไฟล์ เราจะหารือเกี่ยวกับสิ่งเหล่านี้ในส่วนต่อไปนี้ ไฟล์เหล่านี้มีรหัสที่จำเป็นเพื่อจัดการกระบวนการชำระเงินด้วย Ogone อย่าลังเลที่จะปรับปรุงการออกแบบฉันเพิ่งรวมรหัสขั้นต่ำที่เปลือยเปล่าเพื่อให้ได้สิ่งต่างๆ
อย่าคลิกที่ปุ่มชำระเงินเริ่มต้นที่แสดงด้านล่างเป็นเพียงภาพหน้าจอ นี่คือหน้า default.aspx หน้าตา:
รูปที่ 5 - หน้า default.aspx

การอ้างอิง (หรือรหัสคำสั่งซื้อ) ถูกสร้างขึ้นเพื่อระบุคำสั่งที่จ่ายโดยไม่ซ้ำกัน Ogone ติดตามการอ้างอิงเหล่านี้ คุณไม่สามารถประมวลผลการอ้างอิงเดียวกันสองครั้ง นั่นคือเหตุผลที่ฉันเลือกที่จะใช้ 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" ] ;
}ตัวสร้างของคลาส Ogonerequest เริ่มต้นคุณสมบัติบางอย่างโดยการอ่านค่าบางอย่างจากไฟล์การกำหนดค่าของแอปพลิเคชัน (web.config) คุณต้องระบุ URL เพื่อโทรเพื่อเริ่มกระบวนการชำระเงิน Ogone PSID ของคุณ (ชื่อผู้ใช้) คีย์ 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 ( ) ;
}เมธอด requestpayment (... ) เริ่มกระบวนการชำระเงินใหม่โดยการโพสต์ HTTP โดยใช้คลาส MetotePost ข้อมูลที่จำเป็นทั้งหมดรวมอยู่ในโพสต์เช่น PSID ของคุณจำนวนเงินที่ต้องชำระ, ภาษา, เครื่องหมาย sha1 ... ฯลฯ
คุณต้องคำนวณแฮช sha1 โดยใช้ลายเซ็น sha1-in ที่คุณกำหนดค่าในการบริหารการค้า Ogone ระบุว่าคุณต้องรวมการอ้างอิงจำนวนเงินสกุลเงินและ psid ของคุณในแฮชนี้ เราจะกลับไปคำนวณ SHA1 Hashes ในภายหลัง
หมายเหตุ : โพสต์ HTTP ส่ง URL การเปลี่ยนเส้นทางบางส่วนซึ่ง Ogone จะใช้เมื่อทำการชำระเงินยกเลิก ... ฯลฯ หากคุณไม่ได้ให้สิ่งเหล่านี้ URL เริ่มต้นตามที่กำหนดค่าไว้ในการบริหารการค้าจะถูกนำมาใช้ (แท็บข้อเสนอแนะการทำธุรกรรมภายใต้ข้อมูลทางเทคนิค)
รูปที่ 6 - การยืนยันการชำระเงิน

หลังจากเริ่มกระบวนการชำระเงินคุณจะถูกนำไปยังหน้าใหม่ตามที่เห็นในรูปด้านบน คุณสามารถเปลี่ยนการจัดวางของหน้านี้โดยระบุพารามิเตอร์เพิ่มเติมในโพสต์ HTTP ดูที่ซอร์สโค้ดที่มาพร้อมกับบทความนี้และเอกสาร Ogone อย่างเป็นทางการสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนั้น
หากผู้ใช้คลิกปุ่มยกเลิกกระบวนการชำระเงินจะสิ้นสุดลงและเขาจะถูกเปลี่ยนเส้นทางไปยังหน้า PaymentCancelled.aspx หน้านี้เพียงแค่แสดงข้อความว่าผู้ใช้ยกเลิกกระบวนการชำระเงิน
แต่เราได้กำหนดค่าบัญชี Ogone ของเราในลักษณะที่ข้อมูลที่เกี่ยวข้องทั้งหมดเกี่ยวกับกระบวนการชำระเงินรวมอยู่ในสตริงการสืบค้น ตัวอย่างเช่น:
http: // localhost: 3767/paymentcancelled.aspx? orderid = 246cf6f0-8bad-4edb-806C-EED3FB & สกุลเงิน = EUR & จำนวน = 19.99 & PM = CreditCard & Acceptance = & สถานะ = 1 & cardno = & ed = & cn = & trxdate = 04%2F08%2F10 & payId = 6806803 & ncerror = & Brand = ... ฯลฯ
คุณสามารถแยกข้อมูลเช่นการอ้างอิงคำสั่งซื้อเดิมจำนวนวิธีการชำระเงิน (เช่น: วีซ่า) สถานะความสำเร็จในการชำระเงิน ... ฯลฯ คุณสามารถบันทึกหรือทิ้งข้อมูลนี้ได้หากคุณต้องการ มันขึ้นอยู่กับคุณ Ogone ยังรวมถึงแฮช sha1 ที่ประกอบด้วยความช่วยเหลือของลายเซ็น Sha1-out ที่กำหนดค่าไว้ในการบริหารการค้า แฮชนี้ช่วยให้คุณสามารถตรวจสอบตัวตนของบุคคลที่ทำตามคำขอและความถูกต้องของข้อมูลที่มีอยู่ในสตริงการสืบค้น
หากกระบวนการชำระเงินเสร็จสมบูรณ์ Ogone จะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้า PaymentAccepted.aspx สตริงแบบสอบถามจะรวมข้อมูลเดียวกัน ในระหว่างเหตุการณ์การโหลดของหน้าสถานะของการชำระเงินและความถูกต้องของแฮช SHA ถูกตรวจสอบ หากทั้งคู่ถูกต้องการชำระเงินจะได้รับการยอมรับ
รายการ 4 - PaymentAccepted.aspx หน้าตัวจัดการเหตุการณ์
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;หมายเหตุ : Ogone มีพารามิเตอร์ที่เรียกว่าสถานะ (จำนวนเต็ม) ในสตริงการสืบค้น สถานะนี้จะแจ้งสถานะของการชำระเงิน รหัสตัวอย่างสำหรับบทความนี้สรุปค่าเหล่านี้บางส่วนใน enum ที่เรียกว่า ogonepaymentstatus ตรวจสอบเอกสาร Ogone อย่างเป็นทางการสำหรับรายการค่าที่เป็นไปได้ทั้งหมด วิธีการ iSpaymentStatusValid (... ) ตรวจสอบว่าพารามิเตอร์สถานะขาเข้าเป็นหนึ่งในค่าที่แจ้งให้เราทราบว่ามีการชำระเงินหรือไม่
ประเภทคลาส Ogoneresponse เป็นเพียงเสื้อคลุมขนาดเล็กที่จัดการกับการจัดการกับพารามิเตอร์สตริงแบบสอบถามที่ 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 hashes
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 เข้ากับเว็บแอปพลิเคชันอีคอมเมิร์ซของคุณ เพื่อสรุปสิ่งที่เราครอบคลุมจากมุมมองของนักพัฒนา: