diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-02 17:02:12 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-02 17:02:12 +0700 |
| commit | 405dc33dba63f008f45b76061a8f1be5031a1d5d (patch) | |
| tree | 7d60a44153dfadd11f0ff0a81144720b961b5823 /src/pages | |
| parent | d336735a91133cc3f1cf6f67ba2ac29f0985fd2e (diff) | |
midtrans integration
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/_document.jsx | 13 | ||||
| -rw-r--r-- | src/pages/api/activation-request.js | 2 | ||||
| -rw-r--r-- | src/pages/api/shop/midtrans-payment.js | 51 |
3 files changed, 65 insertions, 1 deletions
diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx new file mode 100644 index 00000000..bff2b1b2 --- /dev/null +++ b/src/pages/_document.jsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + <Html> + <Head /> + <body> + <Main /> + <NextScript /> + </body> + </Html> + ) +} diff --git a/src/pages/api/activation-request.js b/src/pages/api/activation-request.js index 7fae2fd1..61dbb597 100644 --- a/src/pages/api/activation-request.js +++ b/src/pages/api/activation-request.js @@ -13,7 +13,7 @@ export default async function handler(req, res) { html: ` <h1>Permintaan Aktivasi Akun Indoteknik</h1> <br> - <p>Aktivasi akun anda melalui link berikut: <a href="${process.env.SELF_HOST}/activate?token=${result.token}">Aktivasi Akun</a></p> + <p>Aktivasi akun anda melalui link berikut: <a href="${process.env.NEXT_PUBLIC_SELF_HOST}/activate?token=${result.token}">Aktivasi Akun</a></p> ` }) } diff --git a/src/pages/api/shop/midtrans-payment.js b/src/pages/api/shop/midtrans-payment.js new file mode 100644 index 00000000..a9bf16ac --- /dev/null +++ b/src/pages/api/shop/midtrans-payment.js @@ -0,0 +1,51 @@ +import odooApi from '@/core/api/odooApi' +import midtransClient from 'midtrans-client' + +export default async function handler(req, res) { + const { transactionId = null } = req.query + + if (!transactionId) { + res.status(422).json({ error: 'parameter missing' }) + } + + let { auth } = req.cookies + + if (!auth) { + res.status(401).json({ error: 'Unauthorized' }) + } + + auth = JSON.parse(auth) + const transaction = await odooApi( + 'GET', + `/api/v1/partner/${auth.partnerId}/sale_order/${transactionId}`, + {}, + { Token: auth.token } + ) + if (!transaction?.id) { + res.status(400).json({ error: 'No Data' }) + } + + const snap = new midtransClient.Snap({ + isProduction: process.env.MIDTRANS_ENV == 'production', + serverKey: process.env.MIDTRANS_SERVER_KEY + }) + + const parameter = { + transaction_details: { + order_id: transaction.name, + gross_amount: transaction.amountTotal + }, + credit_card: { + secure: true + }, + customer_details: { + first_name: transaction.address.invoice.name, + email: transaction.address.invoice.email, + phone: transaction.address.invoice.phone + } + } + + const midtransTransaction = await snap.createTransaction(parameter) + + res.status(200).json(midtransTransaction) +} |
