เขียนระบบ TrueWallet API ด้วยภาษา PHP

TrueWallet API

เชื่อว่าโปรแกรมเมอร์หลายๆคนคงหา API ของ truewallet กันอยู่เยอะแน่ๆ แต่หายังไงก็หาไม่เจอ ผมก็เป็นคนหนึ่งนั้นนะ ฮ่าๆ ผมพยายามหา Source code API ตาม Github ก็ได้ไปเจอ Source code ที่แจกฟรีอยู่ ก็เลยเอามาลองใช้ดูมันก็ใช้งานได้ ผมต้องใช้เวลาสักพักในการศึกษามัน (ก็มือใหม่กับภาษา PHP อ่ะนะ ฮ่าๆ) เอาละเดียวผมจะมาสอนกันว่าทำอย่างไร

ก่อนอื่นผมจะมาบอกก่อนว่ามันทำงานอย่างไร True Wallet API Wrapper ก็เป็น API ที่ผมได้ไปเจอมา (จะอธิบายตามความเข้าใจของผมนะ) หลักการทำงานของมัน มันจะไป Login TrueWallet ของเรา แล้วไปดึงข้อมูลต่างๆ จาก TrueWallet มาแสดงในรูปแบบของ JSON (ถ้าจำไม่ผิดนะ)

ต่อไปก็มาพูดถึง Function ของมันกันว่ามีอะไรบ้าง

1 . function login(username,password)

ก็จะเป็น Funcion ที่ใช้ Login โดยส่ง Username กับ Password ของทำงาน แล้ว Return ค่ากลับว่า Login ได้หรือไม่ได้

2 . function logout()

เป็น Function สำหรับ Logout ใน TrueWallet เนี้ยหากเรา Login เกิน 3 อุปกรณ์ มันจะแบนไม่ให้ Login นะครับ

3 . function get_profile()

Function นี้จะดัง ข้อมูลใน TrueWallet ออกมาตามตัวอย่างข้างล่าง

stdClass Object
(
    [email] => [email protected]
    [password] => (blank)
    [fullname] => Full Name
    [firstnameEn] => (blank)
    [lastnameEn] => (blank)
    [thaiID] => 1234567890123
    [mobileNumber] => 0812345678
    [balance] => 0
    [imageFileName] => (blank)
    [hasPassword] => 0/1
    [hasPin] => 0/1
    [profileImageStatus] => 0/1
    [profileType] => consumer
    [verificationStatus] => unverified/verified
    [purpose] => (blank)
    [profileAddress] => (blank)
    [profilePartner] => (blank)
    [walletToken] => (blank)
    [tmnId] => tmn.10000000000
    [kycVerifyStatus] => (blank)
    [dateOfBirth] => (blank)
    [title] => (blank)
    [occupation] => (blank)
    [profileAddressList] => Array
        (
        (blank)
        )

)

4 . function get_transactions()

Function จะดึงประวัติทั้งหมด ที่เคยทำรายการ เช่น การเติมเงิน โอนเงิน สั่งซื้ออะไรต่างๆ ในบัญชีของเรา ดึงออกมาได้ 50 รายการเท่านั้น

  [0] => stdClass Object
        (
            [reportID] => 12345678
            [logoURL] => https://s3-ap-southeast-1.amazonaws.com/mobile-resource.tewm/wallet-app/common/icon-transaction/m/images/logo_activity_type/transfer_[text3En].png
            **[text3En] is debtor/7-ELEVEN/ecash/campaign/creditor/etc.**
            [text1Th] => โอนเงิน/เติมเงิน Wallet/ซื้อบัตรเงินสดทรูมันนี่/etc.
            [text1En] => Add Money/Transfer/True Money Cash Card/etc.
            [text2Th] => 31/01/17
            [text2En] => 31/01/17
            [text3Th] => โอนเงินให้
            [text3En] => debtor/7-ELEVEN/ecash/campaign/creditor/etc.
            [text4Th] => +500.00/-1,500.00
            [text4En] => +500.00/-1,500.00
            [text5Th] => (blank)/081-234-5678
            [text5En] => (blank)/081-234-5678
        )
     [1]
      .
      .
      .

5 . function function get_report(reportID)

ก็จะเหมือน Function get_transactions() แต่ตัวนี้จะดึงแบบละเอียดกว่า

stdClass Object
(
    [amount] => 500/-1500
    [ref1] => 0812345678
    [section4] => stdClass Object
        (
            [column1] => stdClass Object
                (
                    [cell1] => stdClass Object
                        (
                            [titleTh] => วันที่-เวลา
                            [titleEn] => Transaction date
                            [value] => 31/01/17 23:59
                        )

                )

            [column2] => stdClass Object
                (
                    [cell1] => stdClass Object
                        (
                            [titleTh] => เลขที่อ้างอิง
                            [titleEn] => Transaction ID
                            [value] => 1234567890
                        )

                )

        )

    [serviceCode] => creditor
    [section3] => stdClass Object
        (
            [column1] => stdClass Object
                (
                    [cell2] => stdClass Object
                        (
                            [titleTh] => ยอดเงินรวม
                            [titleEn] => total amount
                            [value] => +500.00/-1,500.00
                        )

                    [cell1] => stdClass Object
                        (
                            [titleTh] => จำนวนเงินที่ได้รับ
                            [titleEn] => amount
                            [value] => +500.00/-1,500.00
                        )

                )

            [column2] => stdClass Object
                (
                    [cell1] => stdClass Object
                        (
                            [titleTh] => ค่าธรรมเนียม
                            [titleEn] => total fee
                            [value] => 0.00
                        )

                )

        )

    [personalMessage] => stdClass Object
        (
            [value] => 
        )

    [section2] => stdClass Object
        (
            [column1] => stdClass Object
                (
                    [cell2] => stdClass Object
                        (
                            [titleTh] => ชื่อผู้ส่ง
                            [titleEn] => account owner
                            [value] => Full*** name***
                        )

                    [cell1] => stdClass Object
                        (
                            [titleTh] => หมายเลขผู้ส่ง
                            [titleEn] => account number
                            [value] => 081-234-5678
                        )

                )

            [column2] => stdClass Object
                (
                    [operator] => tmn
                )

        )

    [section1] => stdClass Object
        (
            [titleTh] => รับเงินจาก
            [titleEn] => creditor
        )

    [isFavorited] => no
    [isFavoritable] => no
    [serviceType] => transfer
)

ตัวอย่าง การ Login

include_once('manager/TrueWallet.php'); 
$wallet = new TrueWallet();
$wallet->login(username,password);

ทีนี้ผมจะมาสอนทำระบบเติมเงินแล้วเพิ่มข้อมูลลง Database นะครับ มีวิดีโอตัวอย่างให้ดู แต่คงไม่ได้สอนแบบใช้ Angular ด้วยหรอกนะ เดียวจะยาวเกินขี้เกียจเขียน ฮ่าๆ

 




หลักการที่จะทำ :

ผมจะให้ใส่เลขที่อ้างอิงแล้วไปเช็คข้อมูลที่เราดึงมาแล้วไปเพิ่มข้อมูลลง Database

เพื่อใครอยากรู้ว่าผมใช้โปรแกรมอะไรบ้างนะครับเดียวผมจะบอกไว้ด้วยเลยละกัน

  • xampp (โปรแกรมจำลอง Server)
  • atom (Text Editor)

ทีนี้ให้เราไปโหลด API มานะครับ

โหลดมาแล้วก็ไปแตกไฟล์ไว้ที่ C:\xampp\htdocs\TrueWallet โดยผมจะสร้างโฟเดอร์มาด้วยไว้สำหรับ โปรเจคนี้ แล้วผมก็ได้สร้างไฟล์ index.php ไว้ละ

ออกแบบ Database

สร้าง ตารางที่ชื่อ member

CREATE TABLE `member` (
 `id` int(11) NOT NULL,
 `name` varchar(100) NOT NULL,
 `point` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `member`
  ADD PRIMARY KEY (`id`);

มาออกแบบหน้าเว็บกัน (index.php) ผมจะให้ใส่เลขที่อ้างอิง กับ ชื่อสมาชิก แล้วก็กดปุ่ม OK    action ไปที่ไฟล์ wallet.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>TrueWallet | DevExp</title>
  </head>
  <body>
    <form action="wallet.php" method="post">
      <input type="text" name="wallet" placeholder="เลขที่อ้างอิง">
      <br>
      <input type="text" name="member" placeholder="ชื่อสมาชิก">
      <br>
      <input type="submit" name="submit" value="OK">
    </form>
  </body>
</html>

สร้างไฟล์ config.php เพื่อเอาไว้เชื่อม Database

<?php
$con = new mysqli('localhost','root','','devexp');
if ($con->connect_error) {
  die('เชื่อมต่อไม่ได้ '.$con->connect_error);
}
 ?>

ส่วนไฟล์ wallet.php ให้ใส่รหัส TrueWallet มี่ตัวแปร $username , $password

<?php
//Show all error, remove it once you finished you code.
ini_set('display_errors', 1);
include_once 'config.php';
//Include TrueWallet class.
include_once('manager/TrueWallet.php');
$wallet = new TrueWallet();
//Login with your username and password.
$username = "USERNAME";
$password = "PASSWORD";

//////////////
$ref = $_POST['wallet'];
$member = $_POST['member'];
//////////////
//Logout incase your previous session still exist, no need if you only use 1 user.
$wallet->logout();
//Login into TrueWallet
if($wallet->login($username,$password)){

  if($transaction = $wallet->get_transactions()){
    for ($i=0; $i <= 10; $i++) { //จำนวนที่ดึกมาเช็ค
      $report = $wallet->get_report($transaction[$i]->reportID);
      $ref_t = $report->section4->column2->cell1->value;
      $money = $report->section3->column1->cell1->value;
      $moneys = str_replace(',','',$money);
      if ($ref_t === $ref) {
        $sql = "update member set point = point + '$moneys' where name='$member'";
        $con->query($sql);
        echo "ทำรายการสำเร็จ!!!";
        break;
      }
    }

  }
  //Logout
  $wallet->logout();
}else{
  echo 'Login Failed!';
}
 ?>

ก็จะมาสอนแค่นี้ละ ขี้เกียจเขียนละ ฮ่าๆ ตอนนี้มันยังสามารถใส่เลขที่อ้างอิงแล้วเพิ่ม point ได้เรื่อยๆนะครับเราต้องเขียนเช็คเพิ่มอีกนะ เดียวจะบอกแนวทาง เราจะต้องเก็บข้อมูลเลขที่อ้างอิงที่ใส่ไปแต่ละครั้งเอาไปเช็คนะครับว่ามันถูกใช้ไปหรือยัง แค่นี้ละง่ายๆไม่ยากอะไรเลย

ดาวน์โหลดโปรเจค :

https://devexp.club/download/truewallet-api-php/

 

 

 

Facebook Comments

Leave a Comment