You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

159 lines
5.6 KiB

  1. import React from "react";
  2. import classNames from "classnames";
  3. import { makeStyles } from "@material-ui/core/styles";
  4. import Header from "components/Header/Header.js";
  5. import HeaderLinks from "components/Header/HeaderLinks.js";
  6. import Footer from "components/Footer/Footer.js";
  7. import OrderProduct from "pages-sections/yamaha/order/order.js";
  8. import Parallax from "components/Parallax/Parallax.js";
  9. import styles from "assets/jss/nextjs-material-kit/pages/components.js";
  10. import GetTransaction from "api/transaction/transaction.js";
  11. import GetCheckoutproduct from "api/cart/checkout.js";
  12. import Cookies from "cookies";
  13. const useStyles = makeStyles(styles);
  14. const Order = function ({ transactionToken, user, order, unpaid, prepared, sending, finished, backend, ...props }) {
  15. const classes = useStyles();
  16. const { ...rest } = props;
  17. return (
  18. <div>
  19. <Header
  20. rightLinks={<HeaderLinks username={user} />}
  21. fixed
  22. color="info"
  23. changeColorOnScroll={{
  24. height: 400,
  25. color: "white"
  26. }}
  27. {...rest}
  28. />
  29. <Parallax image={require("assets/img/Promotion_2-1.jpg")} width="200px"/>
  30. <div className={classNames(classes.main, classes.mainRaised)}>
  31. <OrderProduct order={order} transactionToken={transactionToken} unpaid={unpaid} prepared={prepared} sending={sending} finished={finished} backend={backend}/>
  32. </div>
  33. <Footer />
  34. </div>
  35. );
  36. }
  37. export default Order;
  38. export async function getServerSideProps(context) {
  39. var {query} = context;
  40. var order = [];
  41. var res = await GetTransaction.getTransaction();
  42. if (res["STATUS"] === 1) {
  43. order = res["DATA"]["transactions"];
  44. }
  45. var unpaid = [];
  46. var res = await GetTransaction.getTransactionUnpaid();
  47. if (res["STATUS"] === 1) {
  48. unpaid = res["DATA"]["transactions"];
  49. }
  50. var prepared = [];
  51. var res = await GetTransaction.getTransactionPrepared();
  52. if (res["STATUS"] === 1) {
  53. prepared = res["DATA"]["transactions"];
  54. }
  55. var sending = [];
  56. var res = await GetTransaction.getTransactionSending();
  57. if (res["STATUS"] === 1) {
  58. sending = res["DATA"]["transactions"];
  59. }
  60. var finished = [];
  61. var res = await GetTransaction.getTransactionFinished();
  62. if (res["STATUS"] === 1) {
  63. finished = res["DATA"]["transactions"];
  64. }
  65. //backend
  66. const backend = process.env.BACKEND_SERVER_URI;
  67. //user
  68. var { req, resp } = context;
  69. const cookies = new Cookies(req, resp);
  70. var user = "";
  71. var userObj = (await cookies.get("user"))
  72. ? JSON.parse(await cookies.get("user"))
  73. : null;
  74. if (userObj) {
  75. let sessionId = userObj["partners_login_states"].filter(function (i) {
  76. return (
  77. i.business_partner && i.business_partner.name.toUpperCase() == "YAMAHA"
  78. );
  79. });
  80. if (sessionId.length != 0) user = userObj["username"];
  81. }
  82. //midtrans
  83. var parameters = await GetCheckoutproduct.GetCheckoutproductBayar(query.s||0);
  84. var transactionToken = [];
  85. if ( parameters["STATUS"] === 1 )
  86. {
  87. const midtransClient = require('midtrans-client');
  88. let snap = new midtransClient.Snap({
  89. isProduction : false,
  90. serverKey : 'SB-Mid-server-SfBhLkXXlTxCBx7EYP5T2k3d',
  91. clientKey : 'SB-Mid-client-srx674LjNbEybd4-'
  92. });
  93. let parameter = {
  94. "transaction_details": {
  95. "order_id":parameters["DATA"]["transaction"]["order_id"],
  96. "gross_amount":parameters["DATA"]["transaction"]["product_price"],
  97. }, "credit_card":{
  98. "secure" : true
  99. },
  100. "customer_details": {
  101. "first_name": "Yusmardi",
  102. "last_name": "anto",
  103. "email": "yusmardianto@thamrin.co.id",
  104. "phone": "087797315685",
  105. "billing_address":
  106. {
  107. "first_name": "Yusmardi",
  108. "last_name": "anto",
  109. "email": "yusmardianto@thamrin.co.id",
  110. "phone": "087797315685",
  111. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  112. "city": "Kec.Ilir Tim.I, Palembang",
  113. "postal_code": "30114",
  114. "country_code": "IDN"
  115. },
  116. "shipping_address":
  117. {
  118. "first_name": "Yusmardi",
  119. "last_name": "anto",
  120. "email": "yusmardianto@thamrin.co.id",
  121. "phone": "087797315685",
  122. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  123. "city": "Kec.Ilir Tim.I, Palembang",
  124. "postal_code": "30114",
  125. "country_code": "IDN"
  126. }
  127. }
  128. };
  129. await snap.createTransaction(parameter)
  130. .then((transaction)=>{
  131. // transaction token
  132. transactionToken = transaction.token;
  133. console.log('transactionToken:',transactionToken);
  134. // transaction redirect url
  135. let transactionRedirectUrl = transaction.redirect_url;
  136. console.log('transactionRedirectUrl:',transactionRedirectUrl);
  137. })
  138. .catch((e)=>{
  139. console.log('Error occured:',e.message);
  140. });
  141. }
  142. return {
  143. props: { backend, user, unpaid, prepared, sending, finished, order, transactionToken, }, // will be passed to the page component as props
  144. };
  145. }