summaryrefslogtreecommitdiff
path: root/src/pages/api/shop/midtrans-payment.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/api/shop/midtrans-payment.js')
-rw-r--r--src/pages/api/shop/midtrans-payment.js33
1 files changed, 25 insertions, 8 deletions
diff --git a/src/pages/api/shop/midtrans-payment.js b/src/pages/api/shop/midtrans-payment.js
index a9bf16ac..be676d38 100644
--- a/src/pages/api/shop/midtrans-payment.js
+++ b/src/pages/api/shop/midtrans-payment.js
@@ -1,17 +1,18 @@
import odooApi from '@/core/api/odooApi'
+import camelcaseObjectDeep from 'camelcase-object-deep'
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' })
+ return res.status(422).json({ error: 'parameter missing' })
}
let { auth } = req.cookies
if (!auth) {
- res.status(401).json({ error: 'Unauthorized' })
+ return res.status(401).json({ error: 'Unauthorized' })
}
auth = JSON.parse(auth)
@@ -22,7 +23,7 @@ export default async function handler(req, res) {
{ Token: auth.token }
)
if (!transaction?.id) {
- res.status(400).json({ error: 'No Data' })
+ return res.status(400).json({ error: 'No Data' })
}
const snap = new midtransClient.Snap({
@@ -32,20 +33,36 @@ export default async function handler(req, res) {
const parameter = {
transaction_details: {
- order_id: transaction.name,
+ order_id: transaction.name?.replaceAll('/', '-'),
gross_amount: transaction.amountTotal
},
credit_card: {
secure: true
},
+ item_details: transaction.products.map((product) => ({
+ id: product.code,
+ price: Math.round(product.price.priceDiscount),
+ quantity: product.quantity,
+ name: product.name?.substring(0, 50)
+ })),
customer_details: {
- first_name: transaction.address.invoice.name,
- email: transaction.address.invoice.email,
- phone: transaction.address.invoice.phone
+ first_name: transaction.address.customer.name,
+ email: transaction.address.customer.email || '',
+ phone: transaction.address.customer.phone || '',
+ billing_address: {
+ first_name: transaction.address.invoice.name,
+ email: transaction.address.invoice.email || '',
+ phone: transaction.address.invoice.phone || ''
+ },
+ shipping_address: {
+ first_name: transaction.address.shipping.name,
+ email: transaction.address.shipping.email || '',
+ phone: transaction.address.shipping.phone || ''
+ }
}
}
const midtransTransaction = await snap.createTransaction(parameter)
- res.status(200).json(midtransTransaction)
+ return res.status(200).json(camelcaseObjectDeep(midtransTransaction))
}