สำหรับนักพัฒนาเว็บไซต์ e-commerce คงจะมีไม่น้อยที่เคยมีประสปการณ์จะต้องเชื่อมต่อโปรแกรม shopping cart ของตัวเองเข้ากับระบบชำระเงินของ PayPal ถ้าเป็น shopping cart แบบสำเร็จรูปเช่นพวก osCommerce ก็จะค่อนข้างง่ายและไม่ซับซ้อนมากเท่าไหร่ในการเชื่อมต่อ แต่ถ้าในกรณีที่เป็นโปรแกรม shopping cart ที่พัฒนาเขียนขึ้นเองละ ตรงนี้ผมพอมีประสปการณ์เล็กๆน้อยครับ ส่วนมากก็ไม่ค่อยจะมีปัญหามากเท่าไหร่ ส่วนมากก็จะทำงานไปตามขั้นตอนคือเราส่งค่าต่างๆที่ PayPal กำหนดไปยังเว็บไซต์ของเขา ลูกค้ากรอกข้อมูลบัตรเครดิต ฯลฯ เมื่อจ่ายเงินเสร็จก็จะมีปุ่มให้คลิ๊กกลับมาที่เว็บไซต์ของเรา ซึ่งถ้าเป็นแบบธรรมดาๆก็จะกลับมาตรงๆเลย จริงอยู่เราสามารถระบุ URL ปลายทางสำหรับปุ่มกดกลับมานั้นได้ แต่ว่าจากประสปการณ์ผมมักจะเจอปัญหากับ URL ที่ส่งค่า variable ยาวๆ โดยเฉพาะประเภทที่ไม่ได้ encodeURL ด้วย 

สำหรับ solution นั้นก็ง่ายๆครับ แต่ก่อนอื่นขอบอกว่านี่ไม่ใช่ทางออกทางเดียว เป็นแค่ทางหนึ่ง (option) ที่ลองแล้วใช้ได้ผลดี จริงๆแล้วมีอีกหลายทางมากที่ PayPal เตรียมไว้ให้ ยังไงก็ลองศึกษาจากคู่มือที่ดาว์นโหลดได้จากเว็บ PayPal หน้า Website Payments Standard นะครับ https://www.paypal.com/us/cgi-bin/webscr?cmd=_wp-standard-overview-outside 

เอาละมาลองกันเลย เริ่มต้นเวลาจะส่งค่าต่างๆเข้า PayPal ก็มักจะมีตัวแปรต่างๆที่จำเป็นดังนี้ 

<form action=”https://www.paypal.com/cgi-bin/webscr&#8221; method=”post”> 
<input type=”hidden” name=”cmd” value=”_ext-enter”> 
<input type=”hidden” name=”redirect_cmd” value=”_xclick”> 
<input type=”hidden” name=”business” value=”youremail@yourdomain.com”> 
<input type=”hidden” name=”item_name” value=”Your_item_name”> 
<input type=”hidden” name=”upload” value=”1″> 
<input type=”hidden” name=”amount” value=” 2.00″> 
<input type=”hidden” name=”return” value=”http://www.yourdomain.com/file.htm”> 
<input type=”hidden” name=”cancel_return” value=”http://www.yourdomain.com”> 
<input type=”image” src=”imgs/x-click-but6.gif”> 
</form> 

ซึ่งค่าแค่นี้ก็สามารถทำให้ Shopping cart ของคุณส่งค่าไป PayPal เพื่อทำการชำระเงินได้ แต่เวลาย้อนกลับมาก็จะมาเข้า URL ที่ระบุไว้ใน “return” และไม่มีค่าใดๆอื่นอีกถูกส่งกลับมาเพื่อเช็คความถูกต้องเลย จริงอยู่คุณอาจจะสามารถเช็คจาก session หรือ cookie ของ user คนนั้นได้ แต่ว่าใครจะไปรู้ user อาจจะจ่ายเงินนานไปจน session expire ก่อนที่จะวกกลับมาที่เว็บคุณก็ได้ ดังนั้นทางที่ผมลองทำดูก็คือเพิ่มการส่งค่าที่ชื่อ “invoice” และ “rm” ลงไปในชุดคำสั่งด้านบนด้วย ดังนี้ 

<input type=”hidden” name=”invoice” value=”invoice_number”> 
<input type=”hidden” name=”rm” value=”2″> 

สำหรับ invoice ก็ให้ใส่เลขรหัสการสั่งซื้อลงไป และ rm ซึ่งก็คือ return method ถ้าระบุ 2 ก็จะเป็นการสั่งให้ PayPal ส่งค่าที่จำเป็นๆหลายอย่างกลับมากับปุ่มที่กดกลับมาเว็บไซต์เราด้วย โดยเป็นการส่งวิธี POST ค่าที่ PayPal ส่งกลับมามีเยอะมาก คุณสามารถเลือกใช้เอาได้เลย ยกตัวอย่างเช่น 

<input type=”hidden” id=”” name=”payer_status” value=”verified”> 
<input type=”hidden” id=”” name=”verify_sign” value=”Code_from_verisign”> 
<input type=”hidden” id=”” name=”payment_status” value=”Completed”> 

ทั้งสามค่านี้ก็เป็นตัวยืนยันว่าลูกค้าได้ทำการจ่ายเงินผ่านเสร็จสมบูรณ์แล้ว และค่าที่ผมใช้ก็คือ invoice จะถูก return กลับมาด้วย แหล่มเลย ก็เช็คเอาจาก invoice_number นี่แหละ 
<input type=”hidden” id=”” name=”invoice value=”invoice_number”>

หรือใครอยากเขียนโปรแกรมขั้นเทพเจ้าขึ้นไปอีกก็คำนวน fee ของ PayPal ทำเป็นโปรแกรมวิเคราะห์ทางบัญชีไปเลยก็ได้นะเพราะเขาส่งค่า fee ของ transaction นี้มาด้วย 

<input type=”hidden” id=”” name=”mc_fee” value=”x.xx”> 
<input type=”hidden” id=”” name=”payment_fee” value=”x.xx”> 
 

อ้อ อีกอันที่ผมใช้คือเวลาเช็กว่าได้ถูกคลิ๊กมาจาก PayPal จริงหรือเปล่าคือผมจะเช็กชื่อของ submit button ด้วย บวกกับเช็ก Http Referer ด้วย 

<input type=”submit” id=”merchantReturn” name=”merchant_return_link” value=”Return to Our Store”>

ขอบพระคุณที่ทนอ่าน หวังว่าคงนำไปใช้ประโยชน์กันได้ สบายดี 

*หมายเหตุ* 
1.ตัวแปร rm นั้นเวลาใช้จะต้องใช้คู่กับตัวแปร return 
2.ค่าของตัวแปร rm มีสามอย่างคือ 
-0 เป็นการระบุให้ใช้วิธี GET ไม่ค่อยมีค่าที่จำเป็นส่งกลับคืนมา 
-1 เป็นการระบุให้ใช้วิธี POST ไม่ค่อยมีค่าที่จำเป็นส่งกลับคืนมา 
-2 เป็นการระบุให้ใช้วิธี POST มีค่าจำเป็นส่งกลับมาเยอะมาก 
—————————————-

Advertisements