ข้ามไปยังเนื้อหาหลัก

GCash

รับชำระเงินจาก GCash กระเป๋าเงินดิจิทัลอันดับ 1 ของฟิลิปปินส์ที่มีผู้ใช้งานมากกว่า 86 ล้านราย และเป็นวิธีการชำระเงินแบบไม่ใช้เงินสดที่ได้รับความนิยมสูงสุดในประเทศ

ภาพรวม

สถิติผู้ใช้งาน

จำนวนผู้ใช้งานเป็นค่าประมาณและอิงจากข้อมูลที่เปิดเผยต่อสาธารณะ จำนวนผู้ใช้งานที่ใช้งานจริงอาจแตกต่างกัน

GCash คือกระเป๋าเงินมือถือชั้นนำในฟิลิปปินส์ ดำเนินการโดย Mynt (Globe Fintech Innovations) เป็นวิธีการชำระเงินที่ชาวฟิลิปปินส์นิยมใช้ ตั้งแต่การชำระบิลและการส่งเงิน ไปจนถึงอีคอมเมิร์ซและการโอนเงินระหว่างบุคคล

คุณสมบัติหลัก:

  • ผู้นำตลาด - มีผู้ใช้งานมากกว่า 86 ล้านรายทั่วฟิลิปปินส์
  • การยืนยันที่รวดเร็ว - การตรวจสอบการชำระเงินแบบเรียลไทม์เกือบทันที (โดยทั่วไปภายในไม่กี่วินาที)
  • ความไว้วางใจสูง - ได้รับการสนับสนุนจาก Globe Telecom และ Ant Group
  • การยอมรับอย่างกว้างขวาง - ใช้โดยผู้ซื้อออนไลน์มากกว่า 60%
  • หลากหลายการใช้งาน - บิล ช็อปปิ้ง โอนเงิน การลงทุน
  • ความยุ่งยากต่ำ - การยืนยันตัวตน MPIN ที่รวดเร็ว

ภูมิภาคที่รองรับ

ภูมิภาคสกุลเงินจำนวนเงินขั้นต่ำจำนวนเงินสูงสุดวงเงินรายเดือน
ฟิลิปปินส์PHP₱1.00₱100,000แตกต่างกัน*

*วงเงินรายเดือนขึ้นอยู่กับระดับการยืนยันบัญชี GCash ของลูกค้า

ข้อจำกัดบัญชีตามระดับการยืนยัน

ระดับการยืนยันวงเงินกระเป๋าเงินต่อธุรกรรมวงเงินรายเดือน
ไม่ได้ยืนยัน₱100,000₱8,000₱100,000
ยืนยันบางส่วน (โทรศัพท์ + ID)₱100,000₱50,000₱100,000
ยืนยันเต็มรูปแบบ (KYC เสร็จสมบูรณ์)₱500,000₱100,000₱500,000
GSave/GInvest (คุณสมบัติธนาคาร)ไม่จำกัด₱100,000ไม่จำกัด

วิธีการทำงาน

ประสบการณ์ของลูกค้า:

  1. ลูกค้าเลือก GCash ที่หน้าชำระเงิน
  2. ถูกเปลี่ยนเส้นทางไปยังหน้าอนุญาต GCash
  3. แอป GCash เปิดโดยอัตโนมัติ (deep link บนมือถือ)
  4. ลูกค้าตรวจสอบรายละเอียดการชำระเงิน
  5. ป้อน MPIN 4 หลักเพื่อยืนยัน
  6. กลับไปยังเว็บไซต์ผู้ค้า
  7. ได้รับการยืนยัน SMS จาก GCash

เวลาในการดำเนินการโดยทั่วไป: 30-60 วินาที

ตัวอย่างขั้นตอนการชำระเงิน

ขั้นตอนการชำระเงินบนมือถือ:

Mobile Payment Flow

ประสบการณ์กระเป๋าเงินมือถือที่ราบรื่น:

  • ❶ เลือก GCash - ลูกค้าแตะ GCash ที่หน้าชำระเงินบนมือถือ
  • ❷ เปลี่ยนเส้นทางแอป - Deep link เปิดแอป GCash โดยอัตโนมัติ
  • ❸ ตรวจสอบการชำระเงิน - แสดงรายละเอียดธุรกรรม (ผู้ค้า, จำนวนเงิน)
  • ❹ ยืนยันตัวตน - ป้อน MPIN 4 หลักเพื่ออนุญาต
  • ❺ ประมวลผลการชำระเงิน - หักเงินจากกระเป๋าเงิน GCash
  • ❻ การยืนยัน SMS - รับข้อความยืนยันธุรกรรม
  • ❼ กลับไปยังผู้ค้า - เปลี่ยนเส้นทางกลับไปยังหน้าความสำเร็จของผู้ค้า

ขั้นตอนการชำระเงินบนเดสก์ท็อป:

Desktop Payment Flow

การสแกน QR code สำหรับเดสก์ท็อป:

  • ❶ เลือก GCash - ลูกค้าเลือกการชำระเงิน GCash บนเดสก์ท็อป
  • ❷ สร้าง QR - ระบบสร้าง QR code การชำระเงิน GCash ที่ไม่ซ้ำกัน
  • ❸ แสดง QR - แสดง QR code บนหน้าจอพร้อมรายละเอียดการชำระเงิน
  • ❹ เปิดแอป GCash - ลูกค้าเปิด GCash บนอุปกรณ์มือถือ
  • ❺ สแกน QR - ใช้สแกนเนอร์ในแอปเพื่อจับภาพ QR code
  • ❻ ตรวจสอบรายละเอียด - แสดงจำนวนเงินและชื่อผู้ค้า
  • ❼ ป้อน MPIN - ยืนยันตัวตนด้วย PIN มือถือ 4 หลัก
  • ❽ ยืนยัน - แตะเพื่ออนุญาตการชำระเงิน
  • ❾ สำเร็จ - เดสก์ท็อปแสดงการยืนยัน การชำระเงินเสร็จสมบูรณ์

การนำไปใช้

ขั้นตอนที่ 1: สร้าง GCash Source

curl https://api.omise.co/sources \
-u skey_test_YOUR_SECRET_KEY: \
-d "type=gcash" \
-d "amount=50000" \
-d "currency=PHP"

Response:

{
"object": "source",
"id": "src_test_5rt6s9vah5lkvi1rh9c",
"type": "gcash",
"flow": "redirect",
"amount": 50000,
"currency": "PHP"
}

ขั้นตอนที่ 2: สร้าง Charge และ Redirect

app.post('/checkout/gcash', async (req, res) => {
try {
const { amount, order_id, customer_email, customer_mobile } = req.body;

// ตรวจสอบจำนวนเงิน
if (amount < 100) { // ขั้นต่ำ ₱1.00
return res.status(400).json({
error: 'Minimum amount is ₱1.00'
});
}

if (amount > 10000000) { // สูงสุด ₱100,000
return res.status(400).json({
error: 'Maximum amount is ₱100,000'
});
}

// สร้าง source
const source = await omise.sources.create({
type: 'gcash',
amount: amount,
currency: 'PHP'
});

// สร้าง charge
const charge = await omise.charges.create({
amount: amount,
currency: 'PHP',
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id,
customer_email: customer_email,
customer_mobile: customer_mobile,
payment_method: 'gcash'
}
});

// Redirect ไปยัง GCash
res.redirect(charge.authorize_uri);

} catch (error) {
console.error('GCash error:', error);
res.status(500).json({ error: error.message });
}
});

ขั้นตอนที่ 3: จัดการ Return Callback

app.get('/payment/callback', async (req, res) => {
try {
const chargeId = req.query.charge_id;
const charge = await omise.charges.retrieve(chargeId);

if (charge.status === 'successful') {
await processOrder(charge.metadata.order_id);
res.redirect(`/order-success?order=${charge.metadata.order_id}`);
} else if (charge.status === 'failed') {
res.redirect(`/payment-failed?reason=${charge.failure_message}`);
} else {
res.redirect('/payment-pending');
}
} catch (error) {
res.redirect('/payment-error');
}
});

ขั้นตอนที่ 4: จัดการ Webhook

app.post('/webhooks/omise', async (req, res) => {
const event = req.body;

if (event.key === 'charge.complete') {
const charge = event.data;

if (charge.source.type === 'gcash') {
if (charge.status === 'successful') {
await fulfillOrder(charge.metadata.order_id);
await sendSMSConfirmation(charge.metadata.customer_mobile);
} else if (charge.status === 'failed') {
await handleFailedPayment(charge.metadata.order_id);
}
}
}

res.sendStatus(200);
});

ตัวอย่างการนำไปใช้แบบสมบูรณ์

const express = require('express');
const omise = require('omise')({
secretKey: process.env.OMISE_SECRET_KEY
});

const app = express();
app.use(express.json());

// การกำหนดค่า GCash
const GCASH_CONFIG = {
currency: 'PHP',
minAmount: 100, // ₱1.00
maxAmount: 10000000, // ₱100,000
displayName: 'GCash',
timeout: 15 * 60 * 1000 // 15 นาที
};

// สร้างการชำระเงิน GCash
app.post('/checkout/gcash', async (req, res) => {
try {
const { amount, order_id, customer_email, customer_mobile, customer_name } = req.body;

// ตรวจสอบสกุลเงิน
if (req.body.currency && req.body.currency !== 'PHP') {
return res.status(400).json({
error: 'GCash only supports PHP currency'
});
}

// ตรวจสอบจำนวนเงิน
if (amount < GCASH_CONFIG.minAmount) {
return res.status(400).json({
error: `Minimum amount is ₱${GCASH_CONFIG.minAmount / 100}`
});
}

if (amount > GCASH_CONFIG.maxAmount) {
return res.status(400).json({
error: `Maximum amount is ₱${GCASH_CONFIG.maxAmount / 100}`
});
}

// สร้าง source
const source = await omise.sources.create({
type: 'gcash',
amount: amount,
currency: GCASH_CONFIG.currency
});

// สร้าง charge
const charge = await omise.charges.create({
amount: amount,
currency: GCASH_CONFIG.currency,
source: source.id,
return_uri: `${process.env.BASE_URL}/payment/callback`,
metadata: {
order_id: order_id,
customer_email: customer_email,
customer_mobile: customer_mobile,
customer_name: customer_name,
payment_method: 'gcash'
}
});

// บันทึกสำหรับการติดตาม
console.log(`GCash payment initiated: ${charge.id} for order ${order_id}`);

// ส่งคืน authorization URL
res.json({
authorize_uri: charge.authorize_uri,
charge_id: charge.id
});

} catch (error) {
console.error('GCash error:', error);
res.status(500).json({ error: error.message });
}
});

// Payment callback
app.get('/payment/callback', async (req, res) => {
try {
const charge = await omise.charges.retrieve(req.query.charge_id);

if (charge.status === 'successful') {
res.redirect(`/order-confirmation?order=${charge.metadata.order_id}`);
} else {
res.redirect(`/payment-failed?charge=${req.query.charge_id}`);
}
} catch (error) {
res.redirect('/payment-error');
}
});

// Webhook handler
app.post('/webhooks/omise', async (req, res) => {
const event = req.body;

if (event.key === 'charge.complete' && event.data.source.type === 'gcash') {
const charge = event.data;

if (charge.status === 'successful') {
await fulfillOrder(charge.metadata.order_id);
await sendReceipt(charge.metadata.customer_email, charge);
console.log(`GCash payment successful: ${charge.id}`);
} else {
await cancelOrder(charge.metadata.order_id);
console.log(`GCash payment failed: ${charge.id}`);
}
}

res.sendStatus(200);
});

app.listen(3000);

การรองรับการคืนเงิน

GCash รองรับการคืนเงินเต็มจำนวนและบางส่วนภายใน180 วัน:

// คืนเงินเต็มจำนวน
const fullRefund = await omise.charges.refund('chrg_test_...', {
amount: 50000 // จำนวนเงินเต็ม
});

// คืนเงินบางส่วน
const partialRefund = await omise.charges.refund('chrg_test_...', {
amount: 25000 // จำนวนเงินบางส่วน
});

console.log('Refund status:', fullRefund.status);
การประมวลผลการคืนเงิน

การคืนเงินจะถูกประมวลผลกลับไปยังกระเป๋าเงิน GCash ของลูกค้าภายใน 5-7 วันทำการ

ปัญหาทั่วไปและการแก้ไขปัญหา

ปัญหา: ลูกค้าไม่มีแอป GCash

สาเหตุ: ลูกค้าเลือก GCash แต่ไม่มีแอปที่ติดตั้ง

วิธีแก้ไข:

// แสดงความต้องการแอปและลิงก์ดาวน์โหลด
function checkGCashApp() {
const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);

if (!isMobile) {
alert('GCash is only available on mobile devices.');
return false;
}

// แสดงลิงก์แอป
const isAndroid = /Android/i.test(navigator.userAgent);
const appLink = isAndroid
? 'https://play.google.com/store/apps/details?id=com.globe.gcash.android'
: 'https://apps.apple.com/ph/app/gcash/id520020791';

showMessage(`GCash app required. <a href="${appLink}">Download here</a>`);
return true;
}

ปัญหา: ยอดเงินไม่เพียงพอ

ข้อผิดพลาด: การชำระเงินถูกปฏิเสธ - เงินไม่เพียงพอ

วิธีแก้ไข:

if (charge.failure_code === 'insufficient_balance') {
showMessage(
'Kulang ang GCash balance. Mag-cash in muna o gumamit ng ibang payment method.'
);
showCashInOptions();
}

ปัญหา: เกินวงเงินธุรกรรม

ข้อผิดพลาด: ธุรกรรมเกินวงเงินบัญชี

วิธีแก้ไข:

if (charge.failure_code === 'transaction_limit_exceeded') {
showMessage(
'Lumampas sa limit ng iyong GCash account. ' +
'I-verify ang account o gumamit ng ibang payment method.'
);
showVerificationLink();
}

ปัญหา: หมดเวลาชำระเงิน

สาเหตุ: ลูกค้าไม่ได้ชำระเงินภายใน 15 นาที

วิธีแก้ไข:

const TIMEOUT = 15 * 60 * 1000;

setTimeout(() => {
if (!paymentCompleted) {
showMessage('Nag-timeout ang payment. Subukan ulit.');
enableRetry();
}
}, TIMEOUT);

แนวทางปฏิบัติที่ดีที่สุด

1. แสดงเป็นภาษาฟิลิปิโน/ตากาล็อก

<div class="gcash-payment">
<h3>Magbayad gamit ang GCash</h3>
<div class="instructions">
<ol>
<li>Siguruhing nakainstall ang GCash app</li>
<li>May sapat na balance sa GCash wallet</li>
<li>Ide-redirect ka sa GCash app</li>
<li>I-enter ang iyong 4-digit MPIN</li>
</ol>
</div>
<p class="help-text">
Wala pang GCash?
<a href="https://www.gcash.com" target="_blank">Mag-register dito</a>
</p>
</div>

2. การตรวจจับเฉพาะมือถือ

function validateGCashPayment() {
const userAgent = navigator.userAgent;
const isMobile = /Android|iPhone|iPad|iPod/i.test(userAgent);

if (!isMobile) {
return {
valid: false,
message: 'GCash ay available lang sa mobile devices'
};
}

return { valid: true };
}
function openGCashApp(authorizeUri) {
// Redirect ไปยัง GCash
window.location = authorizeUri;

// Fallback หากแอปไม่เปิด
setTimeout(() => {
if (!document.hidden) {
showInstallPrompt();
}
}, 2500);
}

function showInstallPrompt() {
const isAndroid = /Android/i.test(navigator.userAgent);
const downloadUrl = isAndroid
? 'https://play.google.com/store/apps/details?id=com.globe.gcash.android'
: 'https://apps.apple.com/ph/app/gcash/id520020791';

if (confirm('GCash app hindi nakainstall. I-download ngayon?')) {
window.location = downloadUrl;
}
}

4. การจัดรูปแบบจำนวนเงิน

function formatPHP(amount) {
return new Intl.NumberFormat('en-PH', {
style: 'currency',
currency: 'PHP',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount / 100);
}

// การใช้งาน
const displayAmount = formatPHP(50000); // "₱500.00"

5. แสดงตัวเลือก Cash-In

<div class="gcash-cash-in">
<h4>Paano mag-cash in sa GCash:</h4>
<ul>
<li><strong>ธนาคาร Transfer</strong> - BPI, BDO, UnionBank, etc.</li>
<li><strong>7-Eleven</strong> - CLiQQ Kiosk</li>
<li><strong>Remittance</strong> - Cebuana, M Lhuillier, Palawan</li>
<li><strong>Online Banking</strong> - Instapay, PESONet</li>
<li><strong>GCash Padala</strong> - Bayad Centers nationwide</li>
</ul>
</div>

การทดสอบ

ข้อมูลรับรองการทดสอบ

ใช้ข้อมูลรับรองโหมดทดสอบ Omise:

  • Secret Key: skey_test_YOUR_SECRET_KEY
  • Public Key: pkey_test_YOUR_PUBLIC_KEY

จำนวนเงินทดสอบ

จำนวนเงิน (PHP)ผลลัพธ์ที่คาดหวัง
100 - 99999Success
100000Insufficient balance
100001Transaction declined

ขั้นตอนการทดสอบ

  1. สร้าง charge ด้วยข้อมูลรับรองการทดสอบ
  2. ใช้จำนวนเงินทดสอบข้างต้น
  3. ชำระเงินใน GCash test environment
  4. ตรวจสอบว่าได้รับ webhook
  5. ตรวจสอบสถานะ charge

คำถามที่พบบ่อย

GCash คืออะไร?

GCash คือกระเป๋าเงินมือถือชั้นนำของฟิลิปปินส์ที่มีผู้ใช้งานมากกว่า 86 ล้านราย ดำเนินการโดย Mynt (Globe Fintech Innovations) และเป็นวิธีการชำระเงินแบบไม่ใช้เงินสดที่ได้รับความนิยมมากที่สุดในฟิลิปปินส์

ลูกค้าจำเป็นต้องมีบัญชี GCash หรือไม่?

ใช่ ลูกค้าต้องติดตั้งแอปมือถือ GCash และมีบัญชี GCash ที่เปิดใช้งานซึ่งเชื่อมโยงกับหมายเลขโทรศัพท์มือถือของพวกเขา

ข้อจำกัดการทำธุรกรรมคืออะไร?
  • ขั้นต่ำ: ₱1.00
  • สูงสุด: ₱100,000 ต่อธุรกรรม

ข้อจำกัดยังขึ้นอยู่กับระดับการยืนยันบัญชีของลูกค้า (ไม่ได้ยืนยัน, ยืนยันบางส่วน, ยืนยันเต็มรูปแบบ)

การชำระเงินใช้เวลานานเท่าไร?

การชำระเงิน GCash โดยทั่วไปเกิดขึ้นภายใน 1-3 วันทำการ ตรวจสอบแดชบอร์ด Omise ของคุณสำหรับตารางการชำระเงินเฉพาะ

ฉันสามารถคืนเงินการชำระเงิน GCash ได้หรือไม่?

ได้ GCash รองรับการคืนเงินเต็มจำนวนและบางส่วนภายใน 180 วันของธุรกรรมเดิม

จะเกิดอะไรขึ้นหากลูกค้ามียอดเงินไม่เพียงพอ?

การชำระเงินจะถูกปฏิเสธ ลูกค้าสามารถเติมเงินเข้ากระเป๋าเงิน GCash ผ่าน:

  • การโอนเงินธนาคาร (BPI, BDO, UnionBank ฯลฯ)
  • 7-Eleven CLiQQ kiosks
  • ศูนย์โอนเงิน (Cebuana, M Lhuillier, Palawan)
  • ธนาคารออนไลน์ (Instapay, PESONet)
  • ศูนย์ GCash Padala ทั่วประเทศ
GCash ทำงานบนเดสก์ท็อปหรือไม่?

ไม่ GCash ต้องใช้แอปมือถือและเป็นเฉพาะมือถือเท่านั้น ผู้ใช้เดสก์ท็อปควรได้รับแสดงวิธีการชำระเงินทางเลือกเช่นบัตรเครดิตหรือธนาคารออนไลน์

ฉันควรแสดงคำแนะนำเป็นภาษาฟิลิปิโน/ตากาล็อกหรือไม่?

ใช่! เนื่องจาก GCash เป็นเฉพาะฟิลิปปินส์ การแสดงคำแนะนำเป็นภาษาฟิลิปิโนหรือตากาล็อกจะช่วยปรับปรุงประสบการณ์ผู้ใช้และอัตราการแปลงอย่างมาก

การทดสอบ

โหมดทดสอบ

GCash สามารถทดสอบได้โดยใช้ test API keys ของคุณ ในโหมดทดสอบ:

ข้อมูลรับรองการทดสอบ:

  • ใช้ test API keys (skey_test_xxx)
  • สกุลเงิน: PHP (เปโซฟิลิปปินส์)
  • ไม่ต้องมีบัญชี GCash จริงสำหรับการทดสอบ

ขั้นตอนการทดสอบ:

  1. สร้าง source และ charge ด้วย test API keys
  2. ลูกค้า redirect ไปยัง test authorize_uri
  3. หน้า test จำลองการอนุญาต GCash
  4. ใช้ Actions ของ Omise Dashboard เพื่อทำเครื่องหมาย charge เป็นสำเร็จ/ล้มเหลว
  5. ตรวจสอบการจัดการ webhook และ return_uri

การนำไปใช้การทดสอบ:

// ทดสอบการชำระเงิน GCash
const source = await omise.sources.create({
type: 'gcash',
amount: 10000, // ₱100.00
currency: 'PHP'
});

const charge = await omise.charges.create({
amount: 10000,
currency: 'PHP',
source: source.id,
return_uri: 'https://example.com/callback'
});

console.log('Test authorize URL:', charge.authorize_uri);

สถานการณ์ทดสอบ:

  • การชำระเงินสำเร็จ: ตรวจสอบขั้นตอนการปฏิบัติตามคำสั่งซื้อ
  • การชำระเงินล้มเหลว: ทดสอบการจัดการข้อผิดพลาด
  • ข้อจำกัดจำนวนเงิน: ทดสอบจำนวนเงินขั้นต่ำและสูงสุด
  • ขั้นตอนมือถือ: ทดสอบการเชื่อมโยงลึกไปยังแอป GCash
  • ยอดเงินไม่เพียงพอ: จำลองยอดเงินในกระเป๋าเงินต่ำ
  • หมดเวลา: ทดสอบสถานการณ์การชำระเงินที่ถูกละทิ้ง
  • การส่ง Webhook: ตรวจสอบการแจ้งเตือน webhook ทั้งหมด

หมายเหตุที่สำคัญ:

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

สำหรับแนวทางการทดสอบที่ครอบคลุม โปรดดูเอกสารการทดสอบ

แหล่งข้อมูลที่เกี่ยวข้อง

ขั้นตอนถัดไป

  1. สร้าง GCash source
  2. นำขั้นตอน redirect ไปใช้
  3. จัดการ return callback
  4. ตั้งค่า webhook
  5. ทดสอบขั้นตอนการชำระเงิน
  6. เริ่มใช้งานจริง