Leon 1 year ago
parent
commit
deeab0f240
3 changed files with 60 additions and 3 deletions
  1. 27 1
      src/pages/store/product_list.tsx
  2. 3 1
      src/services/http/api.js
  3. 30 1
      src/services/user.tsx

+ 27 - 1
src/pages/store/product_list.tsx

@@ -5,7 +5,7 @@ import { useEffect, useState } from "react";
 import { useDispatch, useSelector } from "react-redux";
 import './product_list.scss'
 import { ColorType } from "@/context/themes/color";
-import { payInfo, products } from "@/services/user";
+import { order, orderCheck, payInfo, products } from "@/services/user";
 import Taro from "@tarojs/taro";
 import { useTranslation } from "react-i18next";
 import { AtActivityIndicator } from "taro-ui";
@@ -109,7 +109,33 @@ export default function ProductList() {
     }
 
     function createOrder(item: any) {
+        order({
+            channel: 'wx_lite',
+            product_id: item.product_id
+        }).then(res => {
+            const { order_no } = (res as any)
+            const { nonceStr, paySign, signType, timeStamp } = (res as any).credential.wx_lite
+            const packageStr = (res as any).credential.wx_lite.package
+            Taro.requestPayment({
+                timeStamp,
+                nonceStr,
+                package: packageStr,
+                paySign,
+                signType,
+                success(dt) {
+                    orderCheck(order_no).then(res => {
+                        dispatch(setAccessData((res as any).access))
+                        Taro.navigateBack({
+                            delta: 1
+                        })
+                    })
+
+                },
+                fail(res) {
 
+                },
+            })
+        })
     }
 
     async function pay(item: any) {

+ 3 - 1
src/services/http/api.js

@@ -85,4 +85,6 @@ export const API_NOTIFY_SETTINGS = `${baseUrl}/api/user/notify-settings`
 //store
 export const API_PAY_UPLOAD = `${baseUrl}/api/payment/member/rc-receipts`
 export const API_USER_ACCESS = `${baseUrl}/api/user/access`
-export const API_PRODUCTS = `${baseUrl}/api/payment/member/products`
+export const API_PRODUCTS = `${baseUrl}/api/payment/member/products`
+export const API_CREATE_ORDER = `${baseUrl}/api/payment/member/orders`
+export const API_ORDER_CHECK = `${baseUrl}/api/payment/member/orders/`

+ 30 - 1
src/services/user.tsx

@@ -1,5 +1,5 @@
 import Taro from '@tarojs/taro'
-import { API_OAUTH_LOGIN, API_REGISTER, API_LOGIN, API_LOGOUT, API_CLEAR_USER, API_USER_INFO, API_CHECK_UNIQUE, API_CLIENT_ID, API_USER_PERMS, API_USER_LOCATION, API_PAY_UPLOAD, API_USER_ACCESS, API_PRODUCTS } from './http/api'
+import { API_OAUTH_LOGIN, API_REGISTER, API_LOGIN, API_LOGOUT, API_CLEAR_USER, API_USER_INFO, API_CHECK_UNIQUE, API_CLIENT_ID, API_USER_PERMS, API_USER_LOCATION, API_PAY_UPLOAD, API_USER_ACCESS, API_PRODUCTS, API_CREATE_ORDER, API_ORDER_CHECK } from './http/api'
 import { request } from './http/request'
 import { clearSuccess, getInfoSuccess, loginSuccess, logoutSuccess, registerSuccess, updateSuccess } from '@/store/user'
 import { kIsIOS } from '@/utils/tools'
@@ -239,6 +239,35 @@ export const products = (params) => {
     })
 }
 
+export const order = (params) => {
+    return new Promise((resolve, reject) => {
+        request({
+            url: API_CREATE_ORDER, method: 'POST', data: {
+                ...params
+            }
+        }).then(res => {
+            resolve(res)
+            // dispatch(loginSuccess(res));
+        }).catch(e => {
+            reject(e)
+        })
+    })
+}
+
+export const orderCheck = (order_no) => {
+    return new Promise((resolve, reject) => {
+        request({
+            url: API_ORDER_CHECK + order_no, method: 'GET', data: {
+            }
+        }).then(res => {
+            resolve(res)
+            // dispatch(loginSuccess(res));
+        }).catch(e => {
+            reject(e)
+        })
+    })
+}
+
 export const userAccess = () => {
     return new Promise((resolve, reject) => {
         request({