<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<script src="https://js.candypay.co.kr/payments-sdk/v1"></script>
</head>
<body>
<button class="button" style="margin-top: 30px" onclick="requestPayment()">
결제하기
</button>
<script>
const clientKey = "test_ck_8gmPHt6FgfAkzbRrysrZaJfb460J";
const customerId = "p_1Gq3nudQxklUWpOUkj9"; // 비회원은 Candypay.Constants.ANONYMOUS 권장.
const sdk = Candypay.createSDK(clientKey);
const payment = sdk.payment({ customerId });
async function requestPayment() {
const orderId = "demo_order_" + Date.now();
const amount = 50000;
await payment.requestPayment({
amount: { value: amount },
orderId,
orderName: "캔디페이 스타터 키트 2개",
successUrl: window.location.origin + "/experience",
failUrl: window.location.origin + "/experience",
});
}
</script>
</body>
</html>
import express from "express";
const app = express();
app.use(express.json());
const API_URL = "https://api.candypay.co.kr/px/intents/confirm";
const SECRET_KEY =
process.env.CANDY_SDK_SECRET_KEY ?? process.env.CANDYPAY_SDK_SECRET_KEY;
app.post("/api/confirm", async (req, res) => {
if (!SECRET_KEY) {
return res.status(500).json({ message: "Missing CANDY_SDK_SECRET_KEY" });
}
const { orderId, amount, intentKey } = req.body ?? {};
const auth = Buffer.from(SECRET_KEY + ":").toString("base64");
const response = await fetch(API_URL, {
method: "POST",
headers: {
Authorization: "Basic " + auth,
"Content-Type": "application/json",
},
body: JSON.stringify({ orderId, amount, intentKey }),
});
const data = await response.json();
return res.status(response.status).json(data);
});
app.listen(3000, () => {
console.log("CandyPay confirm server running on :3000");
});