Skip to main content

NodeJs

รันโค๊ตจากเดโม่#

  1. ติดตั้ง nodejs บนคอมพิวเตอร์
  2. ตรวจสอบว่า nodejs ทำงานได้หรือไม่โดยใช้คำสั่ง
node -v
  1. โคลนโปรเจค ksher nodejs โดยใช้คำสั่ง
git clone https://github.com/ksher-solutions/payment_sdk_nodejs
  1. cd ยังโปรเจคที่ทำการ clone ลงมา และติดตั้ง package โดยใช้คำสั่ง
cd payment_sdk_nodejs
npm install
  1. เปลี่ยนการตั้งค่า host กับ token ที่ path /example/setting.json
// Please use you own host address and token...
const setting = {
"host": "https://sandboxdoc.vip.ksher.net",
"token": "your token",
}
  1. รัน server โดยใช้คำสั่ง
npm run serve-example
note

เดโม่โค๊ตในตัวอย่างนั้นใช้ KOA Framework

สามารถเรียนรู้ได้เพิ่มเติมได้ที่นี่ https://github.com/koajs/koa

  1. เปิดเว็บไซต์ http://localhost:3000/demo.html จะแสดงตัวอย่าง demo เว็บไซต์ที่รันอยู่บน localhost

อีกทางเลือกหนึ่งใน สามารถเรียก API จาก localhost ผ่าน postman โดย

POST ไปที่ http://localhost:3000/api/orderCreate

ด้วย Request Body

{
"amount": 100,
"merchant_order_id": "2022063010481",
"note": "string",
"redirect_url": "https://web.site/pass",
"redirect_url_fail": "https://web.site/fail",
"timestamp": "2022051900"
}

ตั้งค่าระดับสูงโดยรันผ่านโค๊ต#

1. ติดตั้งโดยใช้ SDK#

สามารถติดตั้งได้โดยการติดตั้ง ksher-pay SDK ผ่าน package manager

1.1. ติดตั้งโดยใช้ npm#

สามารถเยี่ยมชมได้ที่ https://www.npmjs.com/package/ksher-pay

npm install ksher-pay

1.2. ติดตั้งโดยใช้ yarn#

yarn add ksher-pay

2. วิธีการตั้งค่า#

2.1. เตรียมการตั้งค่าก่อนการใช้งาน#

// ให้ใส่ url host address ที่ได้รับจาก ksher และ token
const setting = {
"host": "https://sandboxdoc.vip.ksher.net",
"token": "your token",
}

2.2. Import SDK และตั้งค่า#

const PaymentSDK = require("ksher-pay);
const MySDK = new PaymentSDK(setting);

3. Redirect API#

3.1. เตรียมการตั้งค่า redirect SDK#

// SDK for redirect
const redirectAppSDK = require('ksher-pay/src/redirect')
const MyRedirectAppSDK = new redirectAppSDK(setting);

3.2. สร้างรายการ Redirect API#

const data = {
note: "Note to this order",
redirect_url: "http://www.baidu.com",
redirect_url_fail: "http://www.baidu.com",
timestamp: "1623058159665", // เวลา
amount: 100, // หน่วยเป็น *100
merchant_order_id: "202106070001" // เลขออเดอร์ของร้านค้า ซึ่งต้องไม่ซ้ำกัน
}
MySDK.orderCreate(data).then(({data})=>{
console.log(data) // ทำการสร้างออเดอร์สำเร็จ
console.log(data.reference) // ลิงค์สำหรับชำระเงิน
}).catch(err => {
console.log(err) // error
})

3.3. ตรวจสอบสถานะรายการ Redirect API#

const order_id = "202106070001" // เลขออเดอร์ของร้านค้า
const data = {
timestamp: "1623058159665", // เวลา
}
MySDK.orderQuery(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

3.4. คืนเงิน Redirect API#

const order_id = '202106070001'
const data = {
refund_order_id: "123456789001",
timestamp: "1623058159665",
refund_amount: 100
}
MySDK.orderRefund(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

4. alipay miniapp API#

4.1. เตรียมการตั้งค่า miniapp SDK#

// SDK for redirect
const miniappAppSDK = require('ksher-pay/src/miniapp')
const MyMiniAppSDK = new miniappAppSDK(setting);

4.2. สร้างรายการ for alipay miniapp#

4.2.1. Get orderStr#
const data = {
amount: 100, // หน่วยเป็น *100
merchant_order_id: "202106070001", // เลขออเดอร์ของร้านค้า ซึ่งต้องไม่ซ้ำกัน
timestamp: "1623058159665", // เวลา
note: 'some note for this order',
channel: 'alipay',
miniapp_openid: 'alipayOpenId', // user's openid ของ alipay
miniapp_appid: 'alipayAppid', // appid ของ alipay miniapp
}
MyMiniAppSDK.orderCreate(data).then(({data})=>{
console.log(data)
console.log(data.reference) // orderStr
}).catch(err => {
console.log(err)
})
4.2.2. จ่ายผ่าน alipay miniapp#
// run in alipay miniapp
my.tradePay({ orderStr: 'the reference value' })

5. C scan B API#

5.1. เตรียมการตั้งค่า C scan B SDK#

// SDK for C scan B
const KsherCscanbSDK = require('ksher-pay/src/cscanb')
const ksherCscanb = new KsherCscanbSDK(setting);

5.2. สร้างรายการ C scan B API#

const data = {
note: "Note to this order",
channel: "promptpay", // channel to pay
timestamp: "1623058159665", // timestamp
amount: 100, // the unit is cent.
merchant_order_id: "202106070001" // this should be uniq
}
MySDK.orderCreate(data).then(({data})=>{
console.log(data) // order created successfully
console.log(data.reserved1) //Here is base64 image QR code
}).catch(err => {
console.log(err) //error
})

5.3. ตรวจสอบสถานะรายการ C scan B API#

const order_id = "202106070001" // order id
const data = {
timestamp: "1623058159665", // time stamp
}
MySDK.orderQuery(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

5.4. คืนเงิน C scan B#

const order_id = '202106070001'
const data = {
refund_order_id: "123456789001",
timestamp: "1623058159665",
refund_amount: 100
}
MySDK.orderRefund(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

6. B scan C API#

6.1. เตรียมการตั้งค่า B scan C SDK#

// SDK for B scan C
const KsherBscancSDK = require('ksher-pay/src/bscanc')
const ksherBscanc = new KsherBscancSDK(setting);

6.2. สร้างรายการ B scan C API#

const data = {
note: "Note to this order",
channel: "truemoney", // channel to pay
timestamp: "1623058159665", // timestamp
amount: 100, // the unit is cent.
merchant_order_id: "202106070001", // this should be uniq
auth_code: "xxxxxxxxxx", // data reader QR code from customer
}
MySDK.orderCreate(data).then(({data})=>{
console.log(data) // order created successfully
console.log(data.status) // Here is status payment
}).catch(err => {
console.log(err) //error
})

6.3. ตรวจสอบสถานะรายการ B scan C API#

const order_id = "202106070001" // order id
const data = {
timestamp: "1623058159665", // time stamp
}
MySDK.orderQuery(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

6.4. คืนเงิน B scan C#

const order_id = '202106070001'
const data = {
refund_order_id: "123456789001",
timestamp: "1623058159665",
refund_amount: 100
}
MySDK.orderRefund(order_id, data).then(({data})=>{
console.log(data)
}).catch(err => {
console.log(err)
})

7. Verify signature#

Verify signature จาก webhook request

// ตัวอย่าง webhook
const webhookUrl = 'https://your-host.com/api/webhook'; // webhook url ของร้านค้า
const data = {
type: 'Order',
instance: '1623817182537',
code: 'StatusChange',
message: 'Order Paid',
signature: '944EFC0C6DB000A28C7BACEC6709AF119586F4E361F908DEAC576DA937A6F746'
}
const valid = MySDK.checkSignature(webhookUrl, data)
if(valid){
console.log('success')
}

8. ตัวอย่าง#

source code ของ SDK เป็น Open souce หากมีปัญหาสามารถ open issue หรือ pull request มายังrepo ดังกล่าวได้

https://github.com/ksher-solutions/payment_sdk_nodejs