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.
 
 

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