สำหรับนักพัฒนาเว็บไซต์ 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” 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 มีค่าจำเป็นส่งกลับมาเยอะมาก
—————————————-
Comments
13 ตอบกลับไปที่ “วิธีทำให้ PayPal ส่งค่าที่ต้องการกลับมา Shopping cart ของเรา”
ดีมากๆ เลยครับ แต่ิิอยากให้แนะนำกาำรทำเวปเพจที่รับค่าจาก paypal ตัวครับ ขอบคุณครับ
สอบถามหน่อยนะคะ นี้ทำแล้วทำไมไม่เห็นค่าที่ส่งกลับมาเลยละคะ อยากได้ค่า payment_status ก็ลอง echo ดูก็ไม่มีค่าไรตอบกลับมาคะ ช่วยดูให้หน่อยนะคะ
$item_name = $_POST[‘item_name’];
echo “item_number=”.$item_number = $_POST[‘item_number’];
echo “status_pay=”.$payment_status = $_POST[‘payment_status’];
$payment_amount = $_POST[‘mc_gross’];
$payment_currency = $_POST[‘mc_currency’];
echo $txn_id = $_POST[‘txn_id’];
$receiver_email = $_POST[‘receiver_email’];
$payer_email = $_POST[‘payer_email’];
หรือต้องเขียนไรเพิ่มช่วยหน่อยนะคะ
อยากได้แบบละเอียดกว่านี้หน่อยครับ
และยกตัวอย่าง ให้ดูครับ ไม่ค่อยเข้าใจสักเท่าไหร่ครับ
แล้วหากต้องการยอดเงินที่ลูกค้าจ่ายให้ paypal ละครับ
ตอบคุณ porchn : ผมเองไม่ได้เข้าไปเล่นระบบของ paypal มาสักพักแล้วครับ เลยไม่มีข้อมูลที่คุณอยากได้เลย ต้องขออภัยด้วยนะครับ
ช่วย อธิบายตัว notify_url หน่อยครับ ว่ามันใช้ทำอะไรอ่ะครับ..
First, it’s a fantastic idea to make sure that those working in these departments have a thorough understanding and level of experience dealing with things like different cultures,
countries, and languages. Some of the highly regarded universities include Universidade de S.
There are many benefits that an individual can gain by studying abroad.
อยากสอบถามหน่อยได้ไหมครับ ตัวรับค่า IPN ผมอ่ะครับ ผมลองใช้ ipn simulator ขอตัว paypal ดูสามารถรับค่าได้และบันทึกข้อมูลลงDB ได้ ในlogไฟล์ ก็ขึ้น VERIFIEDแต่พอผมลองจ่ายเงินจริงๆดู
ปรากฏว่าไม่สามารถรับค่าได้ และไม่มีการบันทึกลงDB ในlog ไฟล์ ก็ขึ้น INVALID อ้ะครับ
อ่อ ลืมไป มันขึ้น ฟ้องว่าแบบนี้อ่ะครับ
HTTP request of validation request:POST /cgi-bin/webscr HTTP/1.1
อ่อลืมไปมันขึ้นฟ้องว่าแบบนี้อ่ะครับ
HTTP request of validation request:POST /cgi-bin/webscr HTTP/1.1
ปล.โทษทีครับลืมใส่ใน คอมเมนบน
ไอ่ห่านี่แม่งโพสสร้างกระแสให้ตัวเองไปอย่างนั้น ก๊อปชาวบ้านมาทั้งนั้น มันไม่ได้รู้อย่างที่มันโพสไว้หรอกครับ แม่งทำบล็อคหาตังค์ใช้ ควายสัส
State Architect Guðjón Samúelsson’s design of the church was commissioned in 1937.
ขอบคุณมากครับว่าจะเอาไปใช้กับเว็บซื้อบัตรไวไฟครับ http://www.cloud-hotspot.com ครับ