Category: php

ค่า IPN ที่ได้จาก paypal

เก็บค่าไว้ดูเฉยๆ ครับ ถึงแม้ว่า Paypal จะมี REST API ออกมาแล้ว แต่ถ้าทำบนเว็บ ผมก็ยังชอบ Classic API มากกว่า อย่างน้อยมัน Redirect ไปที่ Paypal เลย ทำให้ดูเหมือนว่าเราจ่ายเงินกับ Paypal จริงๆ ทีนี้ตอนส่งค่ากลับ เราควรจะส่งค่าไปที่ IPN เพื่อทดสอบว่าที่เราจ่ายเงินไปเมื่อกี้ผ่านหรือไม่ลักษณะก็ประมาณในรูปนี้

รายละเอียดเพิ่มเติม อ่านได้จากตรงนี้เลย

https://developer.paypal.com/docs/classic/ipn/gs_IPN/

ค่าที่ส่งมาก็ตามนี้เลย

Array ( [0] => mc_gross=10.74 [1] => protection_eligibility=Ineligible [2] => payer_id=7AKYXA62JHJ28 [3] => tax=0.00 [4] => payment_date=01%3A26%3A48+Jun+29%2C+2014+PDT [5] => payment_status=Completed [6] => charset=windows-1252 [7] => first_name=POP [8] => mc_fee=0.61 [9] => notify_version=3.8 [10] => custom=1%2C+popcm82%40gmail.com [11] => payer_status=verified [12] => business=shikimasan-facilitator%40gmail.com [13] => quantity=1 [14] => payer_email=popcm82%40gmail.com [15] => verify_sign=An5ns1Kso7MWUdW4ErQKJJJ4qi4-AZ7COGevOZwhzP.I7xXBZluVjWBi [16] => txn_id=90604886TJ142822G [17] => payment_type=instant [18] => last_name=EYE [19] => receiver_email=shikimasan-facilitator%40gmail.com [20] => payment_fee=0.61 [21] => receiver_id=E6DSF6LCZKA6Y [22] => txn_type=web_accept [23] => item_name=SBOBET222+registeration [24] => mc_currency=USD [25] => item_number= [26] => residence_country=US [27] => test_ipn=1 [28] => handling_amount=0.00 [29] => transaction_subject=1%2C+popcm82%40gmail.com [30] => payment_gross=10.74 [31] => shipping=0.00 [32] => merchant_return_link=click+here [33] => auth=AAPg-EApVQ6-.mrEUuFjCtr5Ab7MQlltZSL.791sCcItxm-uIk5xClVtjyHWodt9XDb.0c29pZH9bjdstlxW8xQ ) The response from IPN was: INVALID

บทที่ 10 การติดต่อฐานข้อมูล MySQL

หลังจากบทที่แล้วเราติดตั้งฐานข้อมูล MySQL เสร็จเรียบร้อยแล้ว และทำให้ใช้งานร่วมกับ PHP ได้แล้ว ทีนี้เราจะเริ่มใช้งานมันได้ยังไง เดี๋ยวมาดูกันครับ

การติดต่อ MySQL จาก PHP จากที่เคยทำมามันก็มี 2 วิธีหลักๆ คือ ติดต่อโดยตรงโดยผ่าน Native Driver ที่มาพร้อมกับ PHP เลย กับอีกวิธีคือใช้ PDO (PHP Data Object) จริงๆ ผมไม่อยากเรียก PDO ว่าเป็น Native Driver เท่าไหร่ เพราะมันติดต่อฐานข้อมูลได้หลายแบบเหลือเกิน แต่ในเว๊ปของ MySQL บอกไว้แบบนั้นงะ

ลำดับการทำงานของทั้งสองขั้นตอนจะคล้ายๆ กันคือ

      สร้างการเชื่อมต่อกับ MySQL
      ติดต่อกับฐานข้อมูลที่จะใช้งาน
      ปิดการเชื่อมต่อกับ MySQL

ผมจะอธิบายรายละเอียดเฉพาะแบบแรกนะครับ ส่วนแบบที่สองจะให้ตัวอย่างแล้วอธิบายนิดหน่อย เพราะถ้าเข้าใจเรื่อง OOP แล้ว PDO มันไม่ยากเลย บางทีอ่านแค่ Class กับ Method ก็เอาไปใช้งานได้แหละ อีกอย่างเซิร์ฟเวอร์ที่เราเช่าบางทีไม่เปิดใช้งาน PDO ก็มี แอบเศร้าเลย Continue reading

บทที่ 9 ติดตั้ง MySQL

หลังจาก 8 บทแรกที่ผมเขียนไว้เมื่อชาติปางก่อน ผมก็ไม่ได้เขียนอะไรเกี่ยวกับ PHP อีกเลย รวมเวลาน่าจะเกินครึ่งปีแล้วล่ะ

ถ้าเราจะเขียน PHP หรือโปรแกรมอะไรก็แล้วแต่ การเก็บข้อมูลเป็นอะไรที่สำคัญพอๆ กับ logic ของโปรแกรมเลย ถ้าหากโปรแกรมสามารถประมวลผลได้อย่างดี ทำงานได้ตรงตามความต้องการทุกอย่าง แต่ถ้าหากเราต้องการเก็บผลลัพธ์ไว้ล่ะ เมื่อก่อนตอนที่ผมเขียน C++ บน DOS จนมาถึง perl และช่วงที่เขียน PHP ใหม่ๆ วิธีการเก็บข้อมูลที่ง่ายที่สุดคือ text file นี่แหละ ซึ่งมันก็ง่ายจริงๆ fopen, fclose ก็จบ ใช้เครื่องหมาย comma คั่นระหว่างข้อมูล (field) มันก็ทำงานได้ดีกับข้อมูลจำนวนไม่มากแต่ถ้าหากข้อมูลมีจำนวนมากขึ้นล่ะ จะเริ่มมีปัญหาขึ้นมาทันทีเลยทั้งเรื่องขนาดของไฟล์ที่เก็บ ความเร็ว และการเขียนข้อมูลพร้อมๆ กันในกรณีที่ใช้ไฟล์ร่วมกัน วิธีการแก้ปัญหาที่ง่ายที่สุดคือ เปลี่ยนไปใช้ฐานข้อมูลซะ

ฟังดูเหมือนง่าย แต่มันก็ง่ายจริงๆ ข้อดีของ PHP อย่างหนึ่งคือ มันสามารถติดต่อกับฐานข้อมูลได้หลายชนิดมากๆ หรือถ้าหากไม่รู้ว่าจะใช้ฐานข้อมูลอันไหน ก็เขียน PDO ไปเลย (อันนี้ค่อยคุยกันทีหลัง) สำหรับฐานข้อมูลที่นิยมสำหรับ PHP ก็คงหนีไม่พ้น MySQL

ข้อดีของ MySQL คือ มันฟรี แล้วสามารถใช้งานได้ในหลายๆ ระบบปฎิบัติการ (multi platform) แต่ข่าวร้่ายนิดๆ หลังจากโดนซื้อโดย SUN MySQL ที่ฟรีจะเหลือแค่ Community ซึ่งความสามารถอาจน้อยกว่าตัวที่ขายกัน แต่ก็ไม่ต้องห่วง แค่นี้ก็เพียงพอแล้วจริงๆ คือ ไม่ต้องไปสนใจมันหรอก อันไหนฟรีเราก็ใช้ไปเหอะ เนอะ Continue reading

บทที่ 8 ฟังก์ชั่น

ปกติแล้วโปรแกรมทุกๆ โปรแกรม จะทำงานจากบนลงล่าง และประมวลผลจากซ้ายไปขวา เมื่อทำงานเสร็จก็ถือว่าจบการทำงาน ถ้าหากเราต้องการทำงานเดิม ก็ต้องเขียนโปรแกรมซ้ำอีก ฟังก์ชั่นเลยเป็นที่รวบรวมส่วนที่เราจะเรียกใช้งานบ่อยๆ ให้รวมเป็นกลุ่มก้อนเดียวกัน โดยเรียกเพียงชื่อฟังก์ชั่นเท่านั้น ก็จะได้โปรแกรมที่ทำงานตามที่เราต้องการ และยังมีข้อดีคือ ถ้าหากต้องการแก้ไข ก็แก้ไขเพียงแต่ในฟังก์ชั่นเท่านั้น โปรแกรมทั้งหมดของเราก็จะทำงานตามการทำงานของฟังก์ชั่นที่แก้ไขเลย

Function ในภาษา PHP มาอยู่ 4 ชนิดคือ

  1. ฟังก์ชั่นภายใน (invoking a function)
  2. ฟังก์ชั่นที่สร้างขึ้นมาเอง (creating a function)
  3. ฟังก์ชั่นซ้อนฟังก์ชั่น (nesting function)
  4. ฟังก์ชั่นเรียกตัวเอง (recursive function) Continue reading

บทที่ 7.5 คำสั่งควบคุม คำสั่งวนรอบ

หลังจากเราเข้าใจการทำงานของคำสั่งวนรอบแล้ว ทีนี้ก็มาถึงวิธีการควบคุมการทำงานของคำสั่งวนรอบแล้ว ซึ่งก็มีเพียง 2 คำสั่งคือ

  • break
  • continue

สำหรับคำสั่งควบคุมนี้ ต้องใช้งานร่วมกับคำสั่งเงื่อนไขภายในลูปควบคุมการทำงาน Continue reading

บทที่ 7 คำสั่งวนรอบ

คำสั่งวนรอบ ใช้สำหรับทำงานซ้ำๆ กัน ในภาษา PHP มีคำสั่งวนรอบทั้งหมด 4 คำสั่งคือ

  • for
  • while
  • do while
  • foreach

ส่วนประกอบของคำสั่งวนรอบจะมี 3 ส่วนใหญ่ๆ คือ

  1. ค่าเริ่มต้น (initialization)
  2. เงื่อนไขในการทำงาน (condition)
  3. คำสั่งเปลี่ยนค่า (update)

คำสั่งวนรอบ จะทำงานก็ต่อเมื่อเงื่อนไขยังคงเป็นจริง เพราะฉะนั้นเราต้องทำให้เงื่อนไขเป็นเท็จเพื่อให้จบการทำงานโดยการเปลี่ยนค่าไปเรื่อยๆ ถ้าหากไม่มีการจบเงื่อนไขโปรแกรมก็จะไม่จบการทำงาน ดังนั้นให้ระวังตรงนี้ด้วยนะครับ Continue reading

บทที่ 6 คำสั่งเงื่อนไข

เงื่อนไขในการเขียนโปรแกรม เป็นการกำหนดเส้นทางการทำงานของโปรแกรมตามที่เราต้องการ เราสามารถกำหนดการทำงานได้จาก ผลลัพท์ของการเปรียบเทียบ หรือ การคืนค่าของฟังก์ชั่น

คำสั่งเงื่อนไขในภาษา PHP มี 2 คำสั่งคือ

if... elseif... else...
switch... case...

เงื่อนไข if… elseif… else… จะถูกแบ่งเป็น 3 แบบใหญ่ๆ คือ Continue reading

บทที่ 5 ตัวดำเนินการทางคณิตศาสตร์

ในการเขียนโปรแกรมทุกๆ โปรแกรม ต้องมีการคำนวนเข้ามาเกี่ยวข้องด้วยเสมอ แล้วสิ่งที่ใช้คำนวนนั้นก็คือตัวดำเนินการทางคณิตศาสตร์ที่เรารู้จักกันนั่นเอง ตัวดำเนินการทางคณิตศาสตร์ในภาษา PHP ก็เหมือนกับภาษาอื่นๆ สำหรับท่านที่เขียนโปรแกรมได้แล้ว อาจจะข้ามตรงนี้ไปเลยก็ได้ครับ เพราะเหมือนเอาของเก่ามาเล่าใหม่ เล่ากี่ที กี่ที มันก็ไม่ต่างไปจากเดิมเท่าไหร่หรอกครับ แต่สำหรับท่านที่กำลังเริ่มเขียนโปรแกรมแล้ว จุดนี้ ถือเป็นสิ่งที่ต้องรู้และต้องเข้าใจด้วย ไม่เช่นนั้นแล้ว อาจจะเขียนโปรแกรมเพื่อที่จะใช้งานจริงๆ ไม่ได้เลย

ตัวดำเนินการกำหนดค่า

การกำหนดค่าให้ตัวแปร ใช้เครื่องหมาย = (เท่ากับ) ในการกำหนดค่า วิธีการจำง่ายๆ ก็คือ สิ่งที่ทำด้านขวา (เช่นการคำนวน หรือ ข้อความ) จะถูกส่งไปยังด้านซ้าย ตามตัวอย่าง Continue reading

บทที่ 4 ชนิดข้อมูล (ภาค 2)

พบกันอีกแล้วหลังจากหายไปซะสัปดาห์กว่าๆ ก็ไม่มีไรหรอกครับ แอบไปแข่งเกมมา ปีนี้ก็สนุกดีครับ แต่เสียดายคนน้อยไปหน่อย

เรามาเข้าเรื่องของเราเลยดีกว่า ตอนนี้ก็เป็นเรื่องของตัวแปร หลายๆ ท่านคงจะทราบแล้วว่าวีธีการประกาศตัวแปรใน PHP นั้น ง่ายแสนง่าย เพียงแต่ใส่เครื่องหมาย $ เข้าไปข้างหน้า ข้อความนั้นก็จะเป็นตัวแปรแล้ว แต่มีข้อแม้อยู่นิดนึงคือ

  1. ห้ามมีช่องว่างในตัวอักษร
  2. ห้ามขึ้นต้นด้วยตัวเลข
  3. ห้ามมีเครื่องหมายพิเศษ (Control Charecter)
  4. ตัวอักษรเล็ก-ใหญ่ ถือว่าเป็นคนละตัวกัน (Case sensitive) Continue reading

บทที่ 3 ชนิดของข้อมูล

การสร้างตัวแปรในภาษา PHP ไม่จำเป็นต้องบอกชนิดของตัวแปรนั้นๆ เพียงแค่กำหนดค่าให้ตัวแปร ตัวแปรนั้นๆ ก็จะถูกประกาศ (cast) ให้เป็นชนิดตามข้อมูลที่ได้กำหนดเข้าไป (งง ไหมเนี่ย)

ภาษา PHP พัฒนามาจากภาษา C จึงมีชนิดข้อมูลที่คล้ายกัน แต่ได้ตัดชนิดข้อมูลที่ซ้ำซ้อนกันออกไป จนเหลือชนิดข้อมูล 3 ชนิดใหญ่ 7 ชนิดย่อย ดังนี้

ชนิดข้อมูลกลุ่มแรก สามารถเก็บได้เพียงข้อมูลเดียว (Scalar Datatypes)
เป็นชนิดข้อมูลที่เก็บค่าไว้ได้เพียงชนิดเดียว มีทั้งหมด 4 ชนิดคือ Continue reading