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.
 
 

149 lines
5.3 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/HeaderSuzuki.js";
  6. import Footer from "components/Footer/FooterSuzuki.js";
  7. import Checkout from "pages-sections/suzuki/cart/checkout.js";
  8. import Parallax from "components/Parallax/Parallax.js";
  9. import styles from "assets/jss/nextjs-material-kit/pages/components.js";
  10. import GetCheckoutproduct from "api/cart/checkout.js";
  11. import Cookies from "cookies";
  12. const useStyles = makeStyles(styles);
  13. const ProductDetails = function ({ province, cities, backend, checkoutproduct, user, transactionToken, ...props }) {
  14. const classes = useStyles();
  15. const { ...rest } = props;
  16. return (
  17. <div>
  18. <Header
  19. rightLinks={<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. <Checkout province={province} cities={cities} checkoutproduct={checkoutproduct} transactionToken={transactionToken} backend={backend} />
  31. </div>
  32. <Footer />
  33. </div>
  34. );
  35. }
  36. export default ProductDetails;
  37. export async function getServerSideProps(context) {
  38. var {query} = context;
  39. var checkoutproduct = [];
  40. const backend = process.env.BACKEND_SERVER_URI;
  41. var { req, resp } = context;
  42. const cookies = new Cookies(req, resp);
  43. var user = "";
  44. var userObj = (await cookies.get("user"))
  45. ? JSON.parse(await cookies.get("user"))
  46. : null;
  47. if (userObj) {
  48. let sessionId = userObj["partners_login_states"].filter(function (i) {
  49. return (
  50. i.business_partner && i.business_partner.name.toUpperCase() == "YAMAHA"
  51. );
  52. });
  53. if (sessionId.length != 0) user = userObj["username"];
  54. }
  55. var res = await GetCheckoutproduct.GetCheckoutproduct(query.s||0);
  56. if (res["STATUS"] === 1) {
  57. checkoutproduct = res["DATA"]["products"];
  58. }
  59. //midtrans
  60. var parameters = await GetCheckoutproduct.GetCheckoutproductBayar(query.s||0);
  61. var transactionToken = [];
  62. if ( parameters["STATUS"] === 1 )
  63. {
  64. const midtransClient = require('midtrans-client');
  65. let snap = new midtransClient.Snap({
  66. isProduction : false,
  67. serverKey : 'SB-Mid-server-SfBhLkXXlTxCBx7EYP5T2k3d',
  68. clientKey : 'SB-Mid-client-srx674LjNbEybd4-'
  69. });
  70. let parameter = {
  71. "transaction_details": {
  72. "order_id":parameters["DATA"]["product"]["id"],
  73. "gross_amount":parameters["DATA"]["product"]["price"],
  74. }, "credit_card":{
  75. "secure" : true
  76. },
  77. "customer_details": {
  78. "first_name": "Yusmardi",
  79. "last_name": "anto",
  80. "email": "yusmardianto@thamrin.co.id",
  81. "phone": "087797315685",
  82. "billing_address":
  83. {
  84. "first_name": "Yusmardi",
  85. "last_name": "anto",
  86. "email": "yusmardianto@thamrin.co.id",
  87. "phone": "087797315685",
  88. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  89. "city": "Kec.Ilir Tim.I, Palembang",
  90. "postal_code": "30114",
  91. "country_code": "IDN"
  92. },
  93. "shipping_address":
  94. {
  95. "first_name": "Yusmardi",
  96. "last_name": "anto",
  97. "email": "yusmardianto@thamrin.co.id",
  98. "phone": "087797315685",
  99. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  100. "city": "Kec.Ilir Tim.I, Palembang",
  101. "postal_code": "30114",
  102. "country_code": "IDN"
  103. }
  104. }
  105. };
  106. await snap.createTransaction(parameter)
  107. .then((transaction)=>{
  108. // transaction token
  109. transactionToken = transaction.token;
  110. console.log('transactionToken:',transactionToken);
  111. // transaction redirect url
  112. let transactionRedirectUrl = transaction.redirect_url;
  113. console.log('transactionRedirectUrl:',transactionRedirectUrl);
  114. })
  115. .catch((e)=>{
  116. console.log('Error occured:',e.message);
  117. });
  118. }
  119. //rajaOngkir
  120. var province = [];
  121. var cities = [];
  122. var RajaOngkir = require('rajaongkir-nodejs').Starter('f4ac703bb25ada32478d52ef2e1cab7a');
  123. await RajaOngkir.getProvinces().then(function (result){
  124. province = result;
  125. }).catch(function (error){
  126. // Aksi ketika error terjadi
  127. });
  128. await RajaOngkir.getCities().then(function (result){
  129. cities = result;
  130. }).catch(function (error){
  131. // Aksi ketika error terjadi
  132. });
  133. return {
  134. props: { province, cities, user, checkoutproduct, backend, transactionToken }, // will be passed to the page component as props
  135. };
  136. }