Преглед на файлове

fix: 暂存 ( 根据订单号拉起支付页面 )

YuJing преди 1 месец
родител
ревизия
9e8ca2c079

+ 5 - 0
commons/basic/src/main/ets/utils/arkts/utils/YTRouter.ets

@@ -203,6 +203,11 @@ class YTRouter extends NavPathStack {
   router2LogisticsInfoPage(orderId?: string){
     this.pushPathByName('LogisticsInfoPage', orderId)
   }
+
+  // 进入发起支付页面
+  router2InitiatePayPage(fromText?: string){
+    this.pushPathByName('PrivacyPolicyPage', fromText)
+  }
 }
 
 export const yTRouter = YTRouter.getInstance()

+ 6 - 0
features/feature/src/main/ets/apis/ApiUrl.ets

@@ -66,4 +66,10 @@ export class ApiUrl {
    * @method POST
    */
   static getDepositStatus = '/api/book/member/getDeposit';
+
+  /**
+   * @description 获取统一支付信息
+   * @method POST
+   */
+  static getUnifiedPayInfo = '/api/book/order/pay';
 }

+ 16 - 4
features/feature/src/main/ets/apis/OrderApi.ets

@@ -1,5 +1,5 @@
 import { BookItem, YTRequest } from "basic";
-import { DepositData, OrderValidationData } from "../model/OrderModelIndex";
+import { DepositData, GetUnifiedPayInfoRequestData, OrderValidationData } from "../model/OrderModelIndex";
 import { PageResponse } from "../model/PageResponse";
 import { bookPackageQuery } from "../model/Query";
 import { ApiUrl } from "./ApiUrl";
@@ -35,12 +35,24 @@ export class OrderApi {
    * @param orderValidation
    * @returns
    */
-  static checkOrder(orderValidation: OrderValidationData): Promise<ESObject> {
-    return YTRequest.post<ESObject>(ApiUrl.checkOrder, orderValidation)
+  static checkOrder(orderValidation: OrderValidationData): Promise<OrderValidationData> {
+    return YTRequest.post<OrderValidationData>(ApiUrl.checkOrder, orderValidation)
   }
 
-  // 获取用户是否缴纳押金
+  /**
+   * @description 获取用户押金信息
+   * @returns
+   */
   static getUserDeposit(): Promise<DepositData> {
     return YTRequest.post<DepositData>(ApiUrl.getDepositStatus)
   }
+
+  /**
+   * 统一下单获取支付信息
+   * @param orderInfo
+   * @returns
+   */
+  static getPayInfo(orderInfo: GetUnifiedPayInfoRequestData): Promise<string> {
+    return YTRequest.post<string>(ApiUrl.getUnifiedPayInfo, orderInfo)
+  }
 }

+ 15 - 2
features/feature/src/main/ets/model/OrderModelIndex.ets

@@ -1,4 +1,4 @@
-// 订单 校验 数据
+/** 订单 校验 数据 */
 export interface OrderValidationData {
   /**
    * 详细地址
@@ -59,10 +59,23 @@ export interface OrderValidationData {
    * 收件人名称
    */
   userName?: string;
+  /**
+   * 订单id
+   */
+  id?: string;
 }
 
 
-// 押金数据结构
+/** 押金数据结构 */
 export interface DepositData {
   deposit: string;
 }
+
+
+/** 获取统一支付信息 请求数据类型 */
+export interface GetUnifiedPayInfoRequestData {
+  /** 订单id */
+  orderId?: string,
+  /** 支付方式 */
+  payWay?: string,
+}

+ 14 - 3
features/feature/src/main/ets/pages/PrivacyPolicyPage.ets

@@ -7,6 +7,9 @@ import { WebViewJavascriptBridge, WVJBResponseCallback } from '@yue/webview_java
 
 @Component
 struct PrivacyPolicyPage {
+  @Require fromText: string
+
+
   @State targetUrl: string = ''
   @State title: string = ''
   // 是否有进度条
@@ -140,7 +143,10 @@ struct PrivacyPolicyPage {
             })
           } else {
             Scroll() {
-              Web({ src: $rawfile('index.html'), controller: this.controller })
+              Web({
+                src: '',
+                controller: this.controller
+              })
                 .geolocationAccess(false)
                 .domStorageAccess(true)
                 .mixedMode(MixedMode.Compatible)
@@ -148,6 +154,10 @@ struct PrivacyPolicyPage {
                 .multiWindowAccess(true)
                 .onControllerAttached(() => {
                   this.setupWebViewJavascriptBridge();
+                  const url = `<!DOCTYPE html> <html></body> ${this.fromText} </body></html>`
+                  console.log('url',url)
+                  this.controller.loadData(this.fromText, '', '');
+
                 })
                 .onProgressChange((date) => {
                   if (date) {
@@ -180,6 +190,7 @@ struct PrivacyPolicyPage {
                   return isPayment
                 })
                 .onPageEnd((event) => {
+                  // this.controller.runJavaScript('document.forms[0].submit()')
                   if (this.orderUrl && event.url == this.orderUrl) {
                     this.controller.clearHistory()
                   }
@@ -315,6 +326,6 @@ export enum StatusBarColor {
 }
 
 @Builder
-function PrivacyPolicyBuilder() {
-  PrivacyPolicyPage()
+function PrivacyPolicyBuilder(_: string, fromText: string) {
+  PrivacyPolicyPage({fromText})
 }

+ 16 - 6
features/feature/src/main/ets/pages/viewModel/OrderDetailViewModel.ets

@@ -1,8 +1,8 @@
-import { BasicType, BookItem, IBestToast, YTAvoid } from 'basic'
+import { BasicType, BookItem, IBestToast, userInfo, YTAvoid, yTRouter } from 'basic'
 import { OrderApi } from '../../apis/OrderApi'
 import { Address } from '../../model/Address'
 import { OrderStatus } from '../../model/EnumState'
-import { OrderValidationData } from '../../model/OrderModelIndex'
+import { GetUnifiedPayInfoRequestData, OrderValidationData } from '../../model/OrderModelIndex'
 import { OrderDetailModel } from '../../model/RouterModel'
 
 @ObservedV2
@@ -29,7 +29,7 @@ export class OrderDetailViewModel{
     bookIds: [],
     deliveryMethod: 2,
     deposit: 0,
-    payWay: 0,
+    payWay: 2,
     postFee: 9.99,
     userName: '占三峰',
     phone: '13598728343',
@@ -92,9 +92,19 @@ export class OrderDetailViewModel{
     }
     // yTRouter.router2BorrowAnsPage()
 
-    this.orderValidation.orderPrice = Number.parseFloat(this.totalPrice.toFixed(2))
-    this.orderValidation.remark = this.remark
-    await OrderApi.checkOrder(this.orderValidation)
+    // this.orderValidation.orderPrice = Number.parseFloat(this.totalPrice.toFixed(2))
+    // this.orderValidation.remark = this.remark
+    // let ans: OrderValidationData = await OrderApi.checkOrder(this.orderValidation)
+    // console.log(`借阅结果数据结构 ans = ${JSON.stringify(ans)}`)
+
+    let payInfo: GetUnifiedPayInfoRequestData = {
+      orderId: '16',//ans.id,
+      payWay: '2',
+    }
+
+    let res = await OrderApi.getPayInfo(payInfo)
+    console.log(`res = ${JSON.stringify(res)}`)
+    yTRouter.router2InitiatePayPage(res)
   }
 
   /** 前往联系客服 */

+ 5 - 10
features/feature/src/main/resources/rawfile/index.html

@@ -1,14 +1,9 @@
-<!DOCTYPE html>
-<html>
+<!DOCTYPE html> <html><body>
 
-
-
-<body><form name="punchout_form" method="post" action="https://openapi.alipay.com/gateway.do?alipay_sdk=OpenAPI-Generator%2F3.1.0.ALL%2Fjava&charset=UTF-8&method=alipay.trade.wap.pay&format=json&sign=W2%2FEwN8Jvz2iDZ4Yajt2HkO%2ByHWaqycToaOj41gaggAn1bEhjrpykebn9bLUEl9GnoRlNizRTljN4Deqlpl3wcwSCZUpJ49Z64puLs6GN%2BS2q0TiGpwLwj5VNJ62YVP8SawHVjeB4V%2FI4tzYmh0gZ6L8QWSJ76iB5%2Bj%2BxWEAwxahmveEgPpOFupLTF9VWFzZPHzrHQD0JelAt0DLdWE6B%2BOkE3oSV%2FPh3Vo%2FJvPslbfaOyPMu%2BAoXbR0wrQz7kCVLWXqGh0osENd3astCIbWMcMFtQno1BvFfSvBuCkFnLc3Dy%2BNLIkLNKrKj3HAPjklQxw6TAoeGMw6r3NLvdn6mw%3D%3D&app_id=2021004172698934&version=1.0&sign_type=RSA2&timestamp=2025-11-12+16%3A03%3A08">
-    <input type="hidden" name="biz_content" value="{&quot;time_expire&quot;:&quot;2025-11-12 16:17:55&quot;,&quot;out_trade_no&quot;:&quot;TEST1762934557085&quot;,&quot;quit_url&quot;:&quot;https://your-server.com/alipay/quit&quot;,&quot;total_amount&quot;:&quot;0.01&quot;,&quot;subject&quot;:&quot;测试商品&quot;,&quot;product_code&quot;:&quot;QUICK_WAP_WAY&quot;,&quot;passback_params&quot;:&quot;custom_param\u003d123&quot;}">
-    <input type="hidden" name="notify_url" value="https://your-server.com/alipay/notify">
+<form name="punchout_form" method="post" action="https://openapi.alipay.com/gateway.do?alipay_sdk=OpenAPI-Generator%2F3.1.0.ALL%2Fjava&charset=UTF-8&method=alipay.trade.wap.pay&format=json&sign=OugRSBEB8tyZLmtlMDVYVw0j0NbCYAQlvBkTGBTh%2BlAcch3nCbGl2C220CgqisE%2BpLQNbtqgMsUHtnwVE4znPPNQ7zyU0WTc02uD9YMwK7SobTBpgbwBaZxXvs04tSuGN4oXbObov2vWdsgofQqTmACfE5ukRVJp7v82gq7uqFUI55NGj8OzrTohHDda3GwnIY%2BtnPItxBaOmyknZRvCkmnDNY%2BpxD8qCk7fGR0wrGBjI5E%2B%2BmwNIoN4cfnx4b%2BvWLMxYm2q12VEeURyz731OtpCR66CNBEqnIxEWSEMOpqvLCQBDRE2E12fOiq0obfP98wcwgFf1QkR3qMAiV%2FIHA%3D%3D&app_id=2021004172698934&version=1.0&sign_type=RSA2&timestamp=2025-11-13+14%3A42%3A43">
+    <input type="hidden" name="biz_content" value="{&quot;time_expire&quot;:&quot;2025-11-13 14:57:43&quot;,&quot;out_trade_no&quot;:&quot;16&quot;,&quot;quit_url&quot;:&quot;https://hm-test.ytpm.net/prod-book/api/book/order/zfb/quit&quot;,&quot;total_amount&quot;:&quot;17.99&quot;,&quot;subject&quot;:&quot;直租下单&quot;,&quot;product_code&quot;:&quot;QUICK_WAP_WAY&quot;,&quot;passback_params&quot;:&quot;&quot;}">
+    <input type="hidden" name="notify_url" value="https://hm-test.ytpm.net/prod-book/api/book/order/zfb/notify">
     <input type="submit" value="立即支付" style="display:none" >
 </form>
 <script>document.forms[0].submit();</script>
-</body>
-
-</html>
+</body></html>