Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

131 rinda
4.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 Checkout from "pages-sections/yamaha/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 ({ 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 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. var parameters = await GetCheckoutproduct.GetCheckoutproductBayar(query.s||0);
  60. var transactionToken = [];
  61. if ( parameters["STATUS"] === 1 )
  62. {
  63. const midtransClient = require('midtrans-client');
  64. let snap = new midtransClient.Snap({
  65. isProduction : false,
  66. serverKey : 'SB-Mid-server-SfBhLkXXlTxCBx7EYP5T2k3d',
  67. clientKey : 'SB-Mid-client-srx674LjNbEybd4-'
  68. });
  69. let parameter = {
  70. "transaction_details": {
  71. "order_id":parameters["DATA"]["product"]["id"],
  72. "gross_amount":parameters["DATA"]["product"]["price"],
  73. }, "credit_card":{
  74. "secure" : true
  75. },
  76. "customer_details": {
  77. "first_name": "Yusmardi",
  78. "last_name": "anto",
  79. "email": "yusmardianto@thamrin.co.id",
  80. "phone": "087797315685",
  81. "billing_address":
  82. {
  83. "first_name": "Yusmardi",
  84. "last_name": "anto",
  85. "email": "yusmardianto@thamrin.co.id",
  86. "phone": "087797315685",
  87. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  88. "city": "Kec.Ilir Tim.I, Palembang",
  89. "postal_code": "30114",
  90. "country_code": "IDN"
  91. },
  92. "shipping_address":
  93. {
  94. "first_name": "Yusmardi",
  95. "last_name": "anto",
  96. "email": "yusmardianto@thamrin.co.id",
  97. "phone": "087797315685",
  98. "address": "Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun",
  99. "city": "Kec.Ilir Tim.I, Palembang",
  100. "postal_code": "30114",
  101. "country_code": "IDN"
  102. }
  103. }
  104. };
  105. await snap.createTransaction(parameter)
  106. .then((transaction)=>{
  107. // transaction token
  108. transactionToken = transaction.token;
  109. console.log('transactionToken:',transactionToken);
  110. // transaction redirect url
  111. let transactionRedirectUrl = transaction.redirect_url;
  112. console.log('transactionRedirectUrl:',transactionRedirectUrl);
  113. })
  114. .catch((e)=>{
  115. console.log('Error occured:',e.message);
  116. });
  117. }
  118. return {
  119. props: { user, checkoutproduct, backend, transactionToken }, // will be passed to the page component as props
  120. };
  121. }