fengketrade/doc/ccblife-uniapp-integration.md
2025-10-20 15:29:15 +08:00

6.9 KiB
Raw Blame History

建行生活 uni-app 前端集成指南

概述

本文档介绍了如何在 Shopro uni-app 前端项目中集成建行生活功能,包括用户登录、支付、专属页面等功能。

已实现的前端功能

1. 平台集成模块

位置: /frontend/sheep/platform/provider/ccblife/

  • index.js - 建行生活平台核心模块

    • 环境检测检测是否在建行App内
    • JSBridge 初始化和管理
    • 用户信息获取
    • 自动登录
    • 支付调起
    • 原生方法调用
  • api.js - API 接口封装

    • URL 跳转登录
    • 自动登录
    • 支付串生成
    • 支付回调

2. 支付集成

位置: /frontend/sheep/platform/pay.js

已在现有支付系统中添加了建行支付ccb支持

// 支付方式现在支持
payment = ['wechat','alipay','ccb','money','offline']

3. 平台识别

位置: /frontend/sheep/platform/index.js

系统会自动识别建行生活环境:

  • 平台名称:CcbLife
  • 提供商:ccb
  • 平台标识:ccblife

4. 建行专属页面

位置: /frontend/pages/ccblife/index.vue

建行生活专属页面,展示:

  • 建行用户信息
  • 专属优惠活动
  • 专享商品
  • 建行特色功能

使用指南

1. 检测建行环境

import sheep from '@/sheep';

// 检查是否在建行App内
if (sheep.$platform.provider === 'ccb') {
    console.log('在建行生活App内');
}

// 或直接使用平台对象
import CcbLifePlatform from '@/sheep/platform/provider/ccblife/index';

if (CcbLifePlatform.isInCcbApp) {
    console.log('在建行生活App内');
}

2. 获取建行用户信息

import CcbLifePlatform from '@/sheep/platform/provider/ccblife/index';

// 获取用户信息
CcbLifePlatform.getUserInfo().then(result => {
    if (result.code === 0) {
        console.log('用户信息:', result.data);
        // data包含: ccb_user_id, mobile, nickname, avatar
    }
}).catch(error => {
    console.error('获取用户信息失败:', error);
});

3. 自动登录流程

平台会自动处理登录流程,无需手动调用:

  1. 用户从建行App进入H5页面
  2. 系统自动检测建行环境
  3. 自动获取用户信息并登录
  4. 保存Token到本地存储

手动触发登录:

import CcbLifePlatform from '@/sheep/platform/provider/ccblife/index';

// 手动触发自动登录
CcbLifePlatform.autoLogin();

4. 建行支付集成

在订单支付页面

// 支付方式选择
const payMethods = [
    {
        value: 'wechat',
        name: '微信支付',
        icon: 'wechat'
    },
    {
        value: 'alipay',
        name: '支付宝',
        icon: 'alipay'
    },
    {
        value: 'ccb',
        name: '建行支付',
        icon: 'ccb',
        // 只在建行App内显示
        show: sheep.$platform.provider === 'ccb'
    }
];

发起支付

import sheep from '@/sheep';

// 调起支付
sheep.$platform.pay('ccb', 'goods', orderSN);

5. 监听事件

// 监听登录成功事件
uni.$on('ccb:login:success', (data) => {
    console.log('建行用户登录成功', data);
    // 更新UI或执行其他操作
});

// 在页面销毁时移除监听
onUnmounted(() => {
    uni.$off('ccb:login:success');
});

6. 条件编译

在需要区分平台的代码中使用条件编译:

// #ifdef H5
import CcbLifePlatform from '@/sheep/platform/provider/ccblife/index';

if (CcbLifePlatform.isInCcbApp) {
    // 建行App内的特殊处理
}
// #endif

页面路由配置

pages.json 中添加建行相关页面:

{
    "pages": [
        {
            "path": "pages/ccblife/index",
            "style": {
                "navigationBarTitleText": "建行生活",
                "navigationBarBackgroundColor": "#F51C13",
                "navigationBarTextStyle": "white"
            }
        }
    ]
}

测试流程

1. 本地测试

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 运行H5
npm run dev:h5

2. 模拟建行环境

在浏览器中添加URL参数模拟建行环境

http://localhost:3000/#/pages/index/index?from=ccblife&ccbParamSJ=xxx

3. 真机测试

  1. 使用 HBuilderX 打包H5应用
  2. 部署到测试服务器
  3. 在建行生活App内访问测试地址

注意事项

1. 平台判断优先级

系统按以下优先级判断平台:

  1. 建行生活 (CcbLife)
  2. 微信公众号 (WechatOfficialAccount)
  3. 普通H5 (H5)

2. JSBridge 兼容性

  • iOS使用 WebViewJavascriptBridge
  • Android使用 window.mbspay 对象

3. 支付流程

  1. 用户选择建行支付
  2. 调用后端生成支付串
  3. 通过JSBridge调起建行收银台
  4. 支付完成后回调通知后端
  5. 更新订单状态

4. 错误处理

try {
    const result = await CcbLifePlatform.payment(options);
    // 处理成功
} catch (error) {
    if (error.code === -1) {
        // 不在建行App内
        uni.showToast({
            title: '请在建行生活App内使用',
            icon: 'none'
        });
    } else {
        // 其他错误
        console.error(error);
    }
}

常见问题

Q: 如何判断是否在建行App内

import sheep from '@/sheep';

// 方式1通过平台对象
if (sheep.$platform.provider === 'ccb') {
    // 在建行App内
}

// 方式2直接使用建行平台模块
import CcbLifePlatform from '@/sheep/platform/provider/ccblife/index';
if (CcbLifePlatform.isInCcbApp) {
    // 在建行App内
}

Q: 自动登录失败怎么办?

  1. 检查是否在建行App内
  2. 确认后端接口正常
  3. 查看控制台错误信息
  4. 清除本地缓存重试
// 清除缓存
uni.removeStorageSync('token');
uni.removeStorageSync('userInfo');

// 重新触发登录
CcbLifePlatform.autoLogin();

Q: 支付无响应?

  1. 确认在建行App内
  2. 检查JSBridge是否就绪
  3. 验证支付串格式
  4. 查看原生日志
// 检查JSBridge状态
CcbLifePlatform.ready(() => {
    console.log('JSBridge已就绪');
});

Q: 如何调试?

在建行平台模块中开启调试模式:

// frontend/sheep/platform/provider/ccblife/index.js
const config = {
    debug: true  // 开启调试
};

扩展开发

添加新的原生方法调用

// 在 CcbLifePlatform 中添加新方法
async customMethod() {
    return new Promise((resolve, reject) => {
        this.callNative('customMethod', {
            // 参数
        }, (result) => {
            if (result.success) {
                resolve(result);
            } else {
                reject(result);
            }
        });
    });
}

添加新的API接口

// 在 api.js 中添加
newApi: (data) => {
    return request({
        url: '/ccblife/newApi',
        method: 'POST',
        data: data
    });
}

文档版本1.0.0 最后更新2025-01-17 作者Billy