更新记录

1.0.1(2026-07-10)

  • 按建行三端官方返回字段修正成功、失败、取消和待确认状态判断
  • 修正 iOS 微信 Universal Link 参数和 HarmonyOS Want 回跳处理
  • 增加并发支付保护,HarmonyOS 聚合支付改为明确返回不支持
  • 更新示例、接入文档和插件权限声明

平台兼容性

uni-app(4.61)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.61)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - -

jwh-ccb-pay

建行龙支付、建行聚合支付 UTS 插件。Android、iOS 支持龙支付与聚合收银台;HarmonyOS 按建行 2.2 SDK 文档支持龙支付、微信和支付宝,暂不提供聚合收银台入口。

支付行为说明

  • provider: 'ccb' 建行龙支付:未安装建行手机银行 App 时,三端均按建行 SDK 推荐做法回退建行 H5 网页支付,不阻断支付流程。
  • provider: 'aggregate' 建行聚合支付:Android 使用 CcbMorePay,iOS 使用 payViewOrder;HarmonyOS 2.2 SDK 没有对应入口,会返回 9010002
  • 建行 SDK 不内置微信/支付宝客户端 SDK,插件已自行打包对应 SDK,无需额外引入微信开放平台 SDK。

配置总览

本插件包含 Android AAR/SO、iOS framework/静态库和 HarmonyOS HAR,真机运行必须制作包含本插件的自定义基座或使用云端打包;标准基座不包含这些原生 SDK。

先准备这些值:

名称 示例 用途
<ccbThirdAppInfo> comccbpay你的商户号xxx 建行 App 回跳标识,对应订单串里的 THIRDAPPINFO
<wxAppId> wx1234567890abcdef 微信开放平台 AppID。
<wxUniversalLink> https://pay.example.com/app/ iOS 微信 Universal Link。
<androidApplicationId> com.example.demo Android 应用包名。
<androidSign> 你的 Android 签名 微信开放平台、建行后台配置使用。
<harmonyWant> 当前 Ability 的 want HarmonyOS 微信初始化使用。

按支付方式配置

龙支付:provider: 'ccb'

必须配置
Android uni_modules/jwh-ccb-pay/utssdk/app-android/AndroidManifest.xml 里的建行 <action android:name="<ccbThirdAppInfo>" />
iOS manifest.json > app-plus.distribute.ios.urltypes 包含 <ccbThirdAppInfo>
HarmonyOS entry/src/main/module.json5querySchemes 包含 ccbappmbspay
服务端 返回建行龙支付 orderInfoTHIRDAPPINFO=<ccbThirdAppInfo>
JS 调用 pay({ provider: 'ccb', orderInfo }),不需要调用 initPayment

聚合支付:provider: 'aggregate'

必须配置
Android 与龙支付相同:配置建行 <action android:name="<ccbThirdAppInfo>" />
iOS 与龙支付相同:urltypes 包含 <ccbThirdAppInfo>
HarmonyOS 建行 2.2 SDK 未提供聚合收银台入口,当前不支持。
服务端 返回建行聚合支付 orderInfoTHIRDAPPINFO=<ccbThirdAppInfo>;商户后台开通聚合支付需要展示的渠道。
JS 调用 仅 Android/iOS 调用 pay({ provider: 'aggregate', orderInfo }),不需要调用 initPayment

Android/iOS 聚合页里要使用微信渠道时,再按“微信支付”补齐微信开放平台配置;使用支付宝渠道时,再按“支付宝支付”确认支付宝 scheme 配置。

微信支付:provider: 'wx'

必须配置
Android 建行 <action android:name="<ccbThirdAppInfo>" />;微信开放平台填写 <wxAppId><androidApplicationId><androidSign>
iOS urltypes 包含 <ccbThirdAppInfo>,<wxAppId>;微信开放平台填写 <wxAppId>、Bundle ID、<wxUniversalLink>
HarmonyOS querySchemes 包含 weixinwxopensdk;首次调用 initPayment 时传 <wxAppId> 和 Ability onCreate<harmonyWant>
服务端 返回微信支付对应的 orderInfo;需要建行回跳时 THIRDAPPINFO=<ccbThirdAppInfo>
JS 调用 initPayment(...),再 pay({ provider: 'wx', orderInfo })

支付宝支付:provider: 'alipay'

必须配置
Android 插件已包含支付宝 SDK;不需要额外配置支付宝 AppID。
iOS 插件已包含支付宝 SDK;按建行后台返回的支付宝支付 orderInfo 调用即可。
HarmonyOS querySchemes 包含 httpsalipays
服务端 返回支付宝支付对应的 orderInfo
JS 调用 pay({ provider: 'alipay', orderInfo }),不需要调用 initPayment

iOS 支付宝 App 回跳由插件生命周期 Hook 自动执行 AlipaySDK.processOrderWithPaymentResult,再交给建行 SDK 的 handleAliPayResult 查单;宿主仍必须正确配置订单串中的回跳 Scheme。

Android 必配

1. 修改建行回跳 action

文件位置:

uni_modules/jwh-ccb-pay/utssdk/app-android/AndroidManifest.xml

找到:

<activity
  android:name="com.ccb.ccbnetpay.activity.appresult.ResultActivity"
  android:configChanges="orientation|keyboardHidden|screenSize"
  android:exported="true"
  android:screenOrientation="portrait"
  tools:node="merge">
  <intent-filter>
    <action android:name="comccbpay你的商户号xxx" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

只改 <action> 这一行:

<action android:name="<ccbThirdAppInfo>" />

2. 检查微信回跳入口

文件位置:

uni_modules/jwh-ccb-pay/utssdk/app-android/AndroidManifest.xml

保留:

<activity-alias
  android:name="${applicationId}.wxapi.WXPayEntryActivity"
  android:exported="true"
  android:targetActivity="uts.sdk.modules.jwhCcbPay.WXPayEntryActivity"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  tools:node="merge" />

3. 配置微信开放平台

使用 provider: 'wx' 时必须配置:

微信开放平台字段 填写
AppID <wxAppId>
Android 包名 <androidApplicationId>
Android 签名 <androidSign>

4. 不启用内置支付模块

文件位置:

manifest.json

不要配置 HBuilderX 内置支付:

{
  "app-plus": {
    "modules": {
      "Payment": {}
    },
    "distribute": {
      "sdkConfigs": {
        "payment": {}
      }
    }
  }
}

插件已声明:

SDK 当前版本
建行 SDK utssdk/app-android/libs/ccbnetbankpay_v2.6.0_pro.aar
微信 SDK Android Open SDK 6.8.0
支付宝 SDK com.alipay.sdk:alipaysdk-android:15.8.41

iOS 必配

1. 配置 URL Schemes

文件位置:

manifest.json

配置位置:

{
  "app-plus": {
    "distribute": {
      "ios": {
        "urltypes": "<ccbThirdAppInfo>,<wxAppId>"
      }
    }
  }
}

填写规则:

使用渠道 urltypes 必须包含
ccb <ccbThirdAppInfo>
aggregate <ccbThirdAppInfo>
wx <ccbThirdAppInfo>,<wxAppId>
alipay <ccbThirdAppInfo>

2. 配置微信开放平台

使用 provider: 'wx' 时必须配置:

微信开放平台字段 填写
AppID <wxAppId>
Bundle ID 你的 iOS Bundle ID
Universal Link <wxUniversalLink>

3. 配置 Associated Domains

在 HBuilderX manifest.json > iOS App配置 > 关联域(Associated Domains) 中添加:

applinks:<wxUniversalLink 的域名>

例如 Universal Link 为 https://pay.example.com/app/,关联域填写 applinks:pay.example.com。该域名还必须正确部署 apple-app-site-association,并与微信开放平台中配置的 Universal Link 完全匹配;关联域需要通过云端打包后生效。

4. 插件已声明

SDK 当前版本
建行 SDK utssdk/app-ios/Frameworks/CCBNetPaySDK.framework
微信 SDK iOS 静态库已内置
支付宝 SDK AlipaySDK-iOS 15.8.30
最低系统版本 iOS 12.0

不要额外引入微信开放平台 SDK。

HarmonyOS 必配

1. 配置 querySchemes

文件位置按你的 HarmonyOS 工程结构,一般是:

entry/src/main/module.json5

按使用渠道配置:

使用渠道 querySchemes 必须包含
ccb ccbappmbspay
aggregate 不支持,调用会返回 9010002
wx weixinwxopensdk
alipay httpsalipays

示例:

{
  module: {
    querySchemes: [
      "ccbapp",
      "mbspay",
      "weixin",
      "wxopensdk",
      "https",
      "alipays"
    ]
  }
}

2. 微信支付初始化参数

使用 provider: 'wx' 时必须传:

initPayment({
  wxAppId: '<wxAppId>',
  want: harmonyWant
})

harmonyWant 必须来自应用 EntryAbility 的 onCreate(want, launchParam)。插件初始化后会监听 onNewWant,并按建行文档把微信回跳 Want 传给微信 SDK;这条链路仍需在真实 HarmonyOS 设备上使用正式 AppID 完成验收。

3. 插件已声明

SDK 当前版本
建行 SDK utssdk/app-harmony/libs/longpaysdk_v2.2_pro.har
微信 SDK HarmonyOS Open SDK 1.0.14
支付宝 SDK HarmonyOS 收银台 SDK 15.8.26

服务端必配

服务端返回完整建行订单参数串 orderInfo

MERCHANTID=...&POSID=...&BRANCHID=...&ORDERID=...&PAYMENT=...&TXCODE=...&THIRDAPPINFO=<ccbThirdAppInfo>&MAC=...

必须保持一致:

必须一致
Android 建行回跳 action <ccbThirdAppInfo>
iOS urltypes 建行 scheme <ccbThirdAppInfo>
服务端订单串 THIRDAPPINFO=<ccbThirdAppInfo>

当前示例值替换清单:

位置 当前示例值 替换成
uni_modules/jwh-ccb-pay/utssdk/app-android/AndroidManifest.xml comccbpay你的商户号xxx <ccbThirdAppInfo>
manifest.json > app-plus.distribute.android.schemes comccbpay你的商户号xxx,lzfcs <ccbThirdAppInfo>,<你的其他scheme>
manifest.json > app-plus.distribute.ios.urltypes comccbpay你的商户号xxx,lzfcs,wx1234567890abcdef <ccbThirdAppInfo>,<你的其他scheme>,<wxAppId>
JS 调用 initPayment.wxAppId wx1234567890abcdef <wxAppId>
JS 调用 initPayment.wxUniversalLink https://pay.example.com/app/ <wxUniversalLink>

快速接入

1. 引入插件

import {
  initPayment,
  pay,
  isAppInstalled,
  getSDKVersion
} from '@/uni_modules/jwh-ccb-pay'

2. 选择支付渠道

支付方式 provider 必要配置
建行龙支付 ccb 对应端的建行配置、服务端 orderInfo
聚合/综合选择支付 aggregate 仅 Android/iOS;对应端建行配置和服务端 orderInfo
微信支付 wx 对应端的微信配置、initPayment、服务端 orderInfo
支付宝支付 alipay 对应端的支付宝配置、服务端 orderInfo

3. 复制支付代码

let wxReady = false

function ensureWxPaymentReady(provider, done) {
  if (provider !== 'wx') {
    done()
    return
  }

  if (wxReady) {
    done()
    return
  }

  initPayment({
    wxAppId: '<wxAppId>',
    wxUniversalLink: '<wxUniversalLink>',
    // HarmonyOS 微信支付时传入当前 want
    // want: harmonyWant,
    success: () => {
      wxReady = true
      done()
    },
    fail: (err) => {
      console.log('微信支付初始化失败', err)
    }
  })
}

function startPayment(provider, orderInfo) {
  if (!orderInfo) {
    console.log('orderInfo 不能为空')
    return
  }

  if (!isAppInstalled({ provider })) {
    console.log('未安装对应支付 App')
    return
  }

  ensureWxPaymentReady(provider, () => {
    pay({
      provider: provider,
      orderInfo: orderInfo,
      success: (res) => {
        console.log('支付成功', res)
      },
      fail: (err) => {
        if (err.errCode === 9010007) {
          console.log('用户取消支付', err)
          return
        }
        console.log('支付失败', err)
      },
      complete: (res) => {
        console.log('支付结束', res)
      }
    })
  })
}

4. 发起支付

startPayment('ccb', orderInfo)
startPayment('aggregate', orderInfo) // 仅 Android/iOS
startPayment('wx', orderInfo)
startPayment('alipay', orderInfo)

直接调用:

pay({ provider: 'ccb', orderInfo })
pay({ provider: 'aggregate', orderInfo }) // 仅 Android/iOS
pay({ provider: 'wx', orderInfo })
pay({ provider: 'alipay', orderInfo })

API 参数

initPayment

微信支付初始化。

initPayment({
  wxAppId: '<wxAppId>',
  wxUniversalLink: '<wxUniversalLink>',
  want: harmonyWant,
  success: (res) => {},
  fail: (err) => {},
  complete: (res) => {}
})
参数 类型 必填端 说明
wxAppId string Android/iOS/HarmonyOS 微信开放平台 AppID。
wxUniversalLink string iOS 微信 Universal Link。
want any HarmonyOS 首次初始化传 EntryAbility onCreatewant;后续 onNewWant 由插件监听。
success function 初始化成功回调。
fail function 初始化失败回调。
complete function 初始化完成回调。

pay

发起支付。

pay({
  provider: 'ccb',
  orderInfo: orderInfo,
  success: (res) => {},
  fail: (err) => {},
  complete: (res) => {}
})
参数 类型 必填 说明
provider ccb \| aggregate \| wx \| alipay 不传默认 ccb;HarmonyOS 不支持 aggregate
orderInfo string 服务端返回的建行订单参数串。
success function 支付成功回调。
fail function 支付失败回调。
complete function 支付完成回调。

isAppInstalled

检查支付 App。

const installed = isAppInstalled({ provider: 'wx' })
参数 类型 必填 说明
provider ccb \| aggregate \| wx \| alipay 要检查的支付渠道;HarmonyOS 的 aggregate 返回 false

getSDKVersion

查看 SDK 版本。

console.log(getSDKVersion())

回调数据

成功回调:

{
  provider: 'ccb',
  status: 'success',
  errCode: 0,
  errMsg: 'pay:ok',
  raw: {}
}

失败回调:

{
  errCode: 9010006,
  errMsg: '支付失败:...',
  provider: 'ccb',
  raw: {}
}
errCode 说明
9010001 参数错误。
9010002 当前平台或支付渠道不支持。
9010003 原生页面上下文不可用。
9010004 微信支付未初始化。
9010005 未安装对应支付 App。
9010006 支付失败。
9010007 用户取消支付。
9010008 支付结果未知。
9010009 已有支付正在进行,禁止并发发起第二笔支付。

常见返回

返回内容 处理
交易结果待确认 查服务端订单状态。
建行返回:支付服务连接失败 检查网络、环境、白名单、代理、防火墙、域名或 IP。
微信返回:支付失败 检查 AppID、包名、签名、订单参数、prepayId。
微信返回:用户取消支付 按取消处理,通常对应 9010007
支付宝返回:订单支付失败 检查订单参数、签约产品、AppID、私钥签名。
支付宝返回:用户取消支付 按取消处理,通常对应 9010007
支付宝返回:网络连接出错 检查设备网络。
支付宝返回:支付结果未知 查服务端订单状态,通常对应 9010008

err.raw 保留 SDK 原始错误;err.errMsg 可能包含“原始错误”。

测试说明

当前代码已通过 HBuilderX 5.14 的 Android 插件编译,以及 iOS、HarmonyOS standalone UTS 编译检查,但尚未使用真实商户 orderInfo 完成微信、支付宝付款及回跳验收,因此不能把编译通过等同于支付已成功。HarmonyOS 还未完成 DevEco/Hvigor 原生构建和真机支付验收;当前实现按建行 2.2 文档使用 SDKBuilderWXBuilderAliBuilder 和微信 Want 回跳链路。HarmonyOS 聚合支付因官方 SDK 没有对应入口而明确不支持。

建议正式上线前至少验证:

  • 正常支付成功后,客户端回调和服务端通知/查单结果一致。
  • 用户取消支付时,业务侧不会误判为支付失败重试。
  • 未安装目标支付 App、网络异常、订单重复、签名错误等异常场景能被正确处理。
  • Android、iOS 使用到的渠道均以正式 AppID、签名和真实订单在真机完成回跳测试;具备 HarmonyOS 工具链和设备后,对实际使用的鸿蒙渠道执行同样验收。

支付方式选择说明

  • provider: 'ccb' 是建行龙支付,支持建行 App 支付和建行 H5 网页支付兜底。未安装建行手机银行 App 时,会按建行 SDK 能力回退到建行 H5 支付页面。
  • provider: 'aggregate' 是 Android/iOS 建行聚合支付,会进入建行聚合收银台;HarmonyOS 调用会返回 9010002
  • provider: 'wx' 是单独的微信 App 支付,需要安装微信并完成对应平台配置;插件不提供微信 H5 兜底。
  • provider: 'alipay' 是单独的支付宝 App 支付,需要安装支付宝;插件不提供支付宝 H5 兜底。

如果业务希望“未安装支付 App 也能继续付款”,三端可使用建行龙支付;Android/iOS 还可使用建行聚合支付。服务端返回的 orderInfo 必须与对应支付方式匹配。

购买前说明

请先体验插件并确认功能、支付流程、回调结果与自身业务逻辑相匹配后再进行购买。不同商户的建行后台配置、订单参数、支付渠道开通情况可能存在差异,建议在购买前完成关键流程验证。

如需根据自身业务场景调整支付逻辑、错误处理、回调封装或页面交互,可购买源码版本后自行二次开发。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

网络访问、网络状态;HarmonyOS 建行 SDK 还使用获取应用信息权限检测支付 App

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件将业务侧传入的支付订单参数提交给建行支付服务,不自行存储用户数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。