Integrasi PayKu
by Simple Gateway
15
Raw
//Code untuk penggunaan/pengujian menggunakan eval code
// Channel WhatsApp
/*
- https://whatsapp.com/channel/0029VbBAUUd4dTnQIJYRlX3T
*/
const createTransactionComplete = async (transactionData) => {
const crypto = require('crypto');
const axios = require('axios');
const apiKey = "PAYKU_1234567890";
const secretKey = "11111aaaaa22222bbbbbb333333cccccccc";
const baseURL = "https://payku.my.id";
const timestamp = Date.now().toString();
const payload = { ...transactionData, timestamp };
const sortedKeys = Object.keys(payload).sort();
const stringToSign = sortedKeys.map(k => `${k}=${payload[k]}`).join('&');
const signature = crypto.createHmac('sha256', secretKey).update(stringToSign).digest('hex');
try {
const response = await axios.post(`${baseURL}/api/create-transaction`, transactionData, {
headers: {
'x-api-key': apiKey,
'x-signature': signature,
'x-timestamp': timestamp,
'Content-Type': 'application/json'
}
});
if (response.data && response.data.success) {
return {
success: true,
data: response.data.data,
message: response.data.message || 'Transaction created successfully'
};
} else {
throw new Error(response.data?.message || 'Unknown error from API');
}
} catch (error) {
if (error.response) {
const errorMsg = error.response.data?.message || error.response.statusText || 'API Error';
throw new Error(`API Error [${error.response.status}]: ${errorMsg}`);
} else if (error.request) {
throw new Error('Network Error: Unable to connect to payment gateway');
} else {
throw new Error(`Transaction failed: ${error.message}`);
}
}
};
(async () => {
try {
const timestamp = Date.now().toString();
const result = await createTransactionComplete({
external_id: "EVAL" + timestamp,
amount: 1000, // Ganti nominal test (Bebas)
description: "Test Payku",
customer_name: "Demo",
customer_email: "demo@gmail.com",
customer_phone: "08123456789",
webhook_url: "https://payku.my.id/webhook"
});
if (result.success && result.data) {
console.log('Transaction ID:', result.data.transaction_id);
console.log('Payment URL:', result.data.payment_url);
console.log('QRIS URL:', result.data.qris_url);
}
} catch (error) {
console.error('❌ Transaction Error:', error.message);
}
})();