ภาพตัวอย่างโปรแกรมการเชื่อมระบบแบบ PAYSBUY ด้วย ภาษา PHP

ตัวอย่างโปรแกรมการเชื่อมระบบ PAYSBUY API ด้วยภาษา PHP

    • Submitted By:
    • PAYSBUY Dev.
    • Products Used:
    • PAYSBUY API
    • ภาษา:
    • PHP
    • วันที่:
    • 25 สิงหาคม 2552
  1. ในการเชื่อมระบบกับ PAYSBUY API คุณสามารถ Download Code ตัวอย่างได้ ที่นี่
  2. เมื่อคุณแตกไฟล์จะพบไฟล์ ดังต่อไปนี้
    • ไฟล์ paynow.php ใช้ตรวจสอบสิทธิ์การใช้งานระหว่างร้านค้าของคุณกับระบบ PAYSBUY โดยมีรายละเอียดดังต่อไปนี้

      <?php

      include("nusoap/nusoap.php");

      $url = "https://www.paysbuy.com/api_paynow/api_paynow.asmx?WSDL";
      $client = new soapclient($url, true);

      $strPSBID = "หมายเลขเพย์สบายของคุณ";
      $strUsername = "ชื่ออีเมลล์ของคุณที่สมัครเพย์สบาย";
      $strSecureCode = "Secure Code ของคุณ";
      $strInv = "หมายเลขสินค้าของคุณ";
      $strItm = "รายละเอียดสินค้าของคุณ";
      $dbAtm = "ราคาสินค้า";
      $strCurr_type = "TH";
      $strCom = "";
      $strMethod = "1" // 1 = รับเงินจากบัญชีเพย์สบาย , 2 = รับเงินจาก Credit Card;
      $strLanguage = "T";

      //เปลี่ยนเป็น URL ของคุณ

      $strResp_front_url = "URL ของคุณที่รับค่าจาก PAYSBUY ทาง Frontend";
      $strResp_back_url = "URL ของคุณที่รับค่าจาก PAYSBUY ทาง Backend";

      $result = " ";

      //1. ก่อนเรียกใช้งาน ต้องทำการ Authentication โดยเรียก method api_paynow_authentication

      $params =
      array("psbID"=>$strPSBID,"username"=>$strUsername,"password"=>$strPassword,"secureCode"=>$strSecureCode,
      "inv"=>$strInv,"itm"=>$strItm,"atm"=>$dbAtm,"curr_type"=>$strCurr_type,"com"=>$strCom,"method"=>$strMethod,
      "language"=>$strLanguage,"resp_front_url"=>$strResp_front_url,"resp_back_url"=>$strResp_back_url);

      $result = $client->call('api_paynow_authentication', array('parameters' => $params), 'http://tempuri.org/', 'http://tempuri.org/Currency', false, true);

      $err = $client->getError();

      if ($err) {
      echo "<h2>Constructor error</h2><pre>" . $err . "</pre>";
      } else {
      $result = $result["api_paynow_authenticationResult"];
      }
      echo "<br>result ->".$result;

      $approveCode = substr($result,0,2);

      echo "<br>approveCode->".$approveCode;

      $intLen = strlen($result);
      $strRef = substr($result,2, $intLen-2);

      //2. หาก Authen ผ่าน PAYSBUY จะ Return 00 ให้ Redirect ไปที่หน้า API Page

      if($approveCode=="00"){

      echo "<meta http-equiv='refresh'
      content='0;url=https://www.paysbuy.com/api_payment/paynow.aspx?securecode=".$strSecureCode."&refid=".$strRef."'>";
      }else{
      echo "<br>Can't login to paysbuy server";
      }
      ?>

    • ไฟล์ receive_back.php เป็นโค๊ด PHP ที่ใช้รับค่าการชำระเงินจากทาง PaySbuy ทาง Backend โดยมีรายละเอียดดังต่อไปนี้

      >?php

      //1. รับค่าจากทาง PAYSBUY โดย POST Method

      $strResult = trim($_REQUEST["result"]);
      $strApCode = trim($_REQUEST["apCode"]);
      $strAmt = trim($_REQUEST["amt"]);
      $strMethod = trim($_REQUEST["method"]);

      if(($strResult!="")&&($strApCode!="")&&($strAmt!="")&&($strMethod!="")){

      $len = strlen($strResult);
      $payment_status = substr($strResult, 0,2);
      $strInvoice = substr($strResult, 2,$len-2);

      //2 บันทึกข้อมูลลง Database ชื่อ api

      if (!$link = mysql_connect('localhost', 'ชื่อผู้มีสิทธิ์ใช้ฐานข้อมูล', 'รหัสผ่าน')) {
      echo 'Could not connect to mysql';
      exit;
      }

      if (!mysql_select_db('ชื่อฐานข้อมูล', $link)) {
      echo 'Could not select database';
      exit;
      }

      $sql = "INSERT INTO payment(PaymentResult, PaymentApCode, PaymentAmt, PaymentMethod,
      PaymentDate,PaymentInvoice, PaymentStatus )VALUES ('$strResult', '$strApCode', '$strAmt', '$strMethod',
      NOW(),'$strInvoice','$payment_status' )";

      $result = mysql_query($sql, $link);

      if (!$result) {
      echo "DB Error, could not query the database\n";
      echo 'MySQL Error: ' . mysql_error();
      exit; }

      mysql_close($link);

      }else{
      //insert error log into table
      }
      ?>

    • ไฟล์ receive_front.php เป็นโค๊ด PHP ที่ใช้รับค่าการชำระเงินจากทาง PaySbuy ทาง Frontend แล้วนำค่าที่ได้ ไปตรวจสอบกับค่าที่ได้จาก Backend โดยมีรายละเอียดดังต่อไปนี้

      <?php

      $IsTrue = "false";

      //1. รับค่าจากทาง PAYSBUY โดย POST Method

      $strResult = trim($_REQUEST["result"]);
      $strApCode = trim($_REQUEST["apCode"]);
      $strAmt = trim($_REQUEST["amt"]);
      $strMethod = trim($_REQUEST["method"]);

      if(($strResult!="")&&($strApCode!="")&&($strAmt!="")&&($strMethod!="")){

      $len = strlen($strApCode);
      $payment_status = substr($strApCode, 0,2);
      $strInvoice = substr($strApCode, 2,$len-2);

      //2. ตรวจสอบค่าที่ได้จาก Backend Process

      $IsTrue = checkBackEndProcess($strResult,$strApCode,$strAmt);

      //echo "<br>checkBackEndProcess=>".$IsTrue ;

      if($IsTrue){

      //Delivery the product to customer.

      echo "<br>This transaction is complete.";

      }else{

      echo "<br>This transaction is uncomplete.";
      }

      }else{

      echo "<br>Can't receive data from paysbuy";
      }

      //************************ Function checkBackEndProcess *****************************//

      function checkBackEndProcess($strResult,$strApCode,$strAmt){

      $isBackend = "true";
      $strResultB="";
      $strApCodeB="";
      $strAmtB="";

      if (!$link = mysql_connect('localhost', 'ชื่อผู้มีสิทธิ์ใช้ฐานข้อมูล', 'รหัสผ่าน')) {

      echo 'Could not connect to mysql';
      exit; }
      if (!mysql_select_db('ชื่อฐานข้อมูล', $link)) {
      echo 'Could not select database';
      exit;
      }

      $sql = 'SELECT * FROM payment WHERE PaymentResult= '.$strResult;
      $result = mysql_query($sql, $link);

      if (!$result) {
      echo "DB Error, could not query the database\n";
      echo 'MySQL Error: ' . mysql_error();
      exit;
      }
      while ($row = mysql_fetch_assoc($result)) {
      $strResultB = trim($row['PaymentResult']);
      $strApCodeB = trim($row['PaymentApCode']);
      $strAmtB = trim($row['PaymentAmt']);
      }
      //echo "<br>strResultB=>".$strResultB ;
      //echo "<br>strApCodeB=>".$strApCodeB ;
      //echo "<br>strAmtB=>".$strAmtB ;
      if($strResultB!=$strResult){
      $isBackend = "false";
      }
      if($strApCodeB!=$strApCode){
      $isBackend = "false";
      }
      if($strAmtB!=$strAmt){
      $isBackend = "false";
      }
      mysql_free_result($result);
      mysql_close($link);
      //echo "<br>isBackend=>".$isBackend ;
      return $isBackend;
      }
      //************** End Function checkBackEndProcess ************************// ?>

« กลับหน้าบทเรียนและวิธีการเขียนโปรแกรม