更新记录

1.0.0(2026-06-27)

发布版本


平台兼容性

uni-app(4.56)

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

uni-app x(4.56)

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

jwh-ccb-pay

建行龙支付、建行聚合支付 UTS 插件。支持 App Android、App iOS、HarmonyOS,可按建行订单配置发起微信支付、支付宝支付等渠道。

支付行为说明

  • provider: 'ccb' 建行龙支付:未安装建行手机银行 App 时,三端均按建行 SDK 推荐做法回退建行 H5 网页支付,不阻断支付流程。
  • provider: 'aggregate' 建行聚合支付:由建行聚合收银台页面提供多渠道选择,各端入口保持原生 SDK 默认实现,未安装时的回退由收银台侧控制。
  • 建行 SDK 不内置微信/支付宝客户端 SDK,插件已自行打包对应 SDK,无需额外引入微信开放平台 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 querySchemes 包含 ccbappmbspay
服务端 返回建行聚合支付 orderInfoTHIRDAPPINFO=<ccbThirdAppInfo>;商户后台开通聚合支付需要展示的渠道。
JS 调用 pay({ provider: 'aggregate', orderInfo }),不需要调用 initPayment

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

微信支付:provider: 'wx'

必须配置
Android 建行 <action android:name="<ccbThirdAppInfo>" />;微信开放平台填写 <wxAppId><androidApplicationId><androidSign>
iOS urltypes 包含 <ccbThirdAppInfo>,<wxAppId>;微信开放平台填写 <wxAppId>、Bundle ID、<wxUniversalLink>
HarmonyOS querySchemes 包含 weixinwxopensdk;调用 initPayment 时传 <wxAppId><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

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. 插件已声明

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 ccbappmbspay
wx weixinwxopensdk
alipay httpsalipays

示例:

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

2. 微信支付初始化参数

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

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

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 对应端的建行配置、服务端 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)
startPayment('wx', orderInfo)
startPayment('alipay', orderInfo)

直接调用:

pay({ provider: 'ccb', orderInfo })
pay({ provider: 'aggregate', orderInfo })
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 当前 Ability 的 want
success function 初始化成功回调。
fail function 初始化失败回调。
complete function 初始化完成回调。

pay

发起支付。

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

isAppInstalled

检查支付 App。

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

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 支付结果未知。

常见返回

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

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

测试说明

当前插件已完成 Android、iOS 端建行龙支付流程测试。HarmonyOS 端建行龙支付,以及聚合支付、微信支付、支付宝支付依赖商户号开通状态、建行后台订单参数、支付平台配置、真实设备 App 安装状态和回跳配置,请接入方在自己的测试/生产商户环境中完成完整联调。

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

  • 正常支付成功后,客户端回调和服务端通知/查单结果一致。
  • 用户取消支付时,业务侧不会误判为支付失败重试。
  • 未安装目标支付 App、网络异常、订单重复、签名错误等异常场景能被正确处理。
  • Android、iOS、HarmonyOS 使用到的渠道都在真机上完成回跳测试。

支付方式选择说明

  • provider: 'ccb' 是建行龙支付,支持建行 App 支付和建行 H5 网页支付兜底。未安装建行手机银行 App 时,会按建行 SDK 能力回退到建行 H5 支付页面。
  • provider: 'aggregate' 是建行聚合支付,会进入建行聚合收银台,由收银台展示商户已开通的支付渠道。用户在聚合页里选择微信或支付宝时,属于聚合收银台内的渠道选择,不等同于单独调用 provider: 'wx'provider: 'alipay'
  • provider: 'wx' 是单独的微信 App 支付,需要安装微信并完成对应平台配置;插件不提供微信 H5 兜底。
  • provider: 'alipay' 是单独的支付宝 App 支付,需要安装支付宝;插件不提供支付宝 H5 兜底。

如果业务希望“未安装支付 App 也能继续付款”,优先使用建行龙支付或建行聚合支付,并确保服务端返回的 orderInfo 与对应支付方式匹配。

购买前说明

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

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

隐私、权限声明

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

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

插件不采集任何数据

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

暂无用户评论。