# WechatPayDemo **Repository Path**: scenario-samples/wechat-pay-demo ## Basic Information - **Project Name**: WechatPayDemo - **Description**: 【鸿蒙 Harmony Next 示例 代码】微信支付示例demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2025-01-09 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信支付 ## 相关概念 ##### 1.业务流程图 ![e96462a5b1274025b58b9ea876e3cc60.png](entry%2Fsrc%2Fmain%2Fresources%2Fbase%2Fmedia%2Fe96462a5b1274025b58b9ea876e3cc60.png) ##### 2.重点步骤说明 步骤3: 用户下单发起支付,商户可通过微信支付App下单API创建支付订单。 商户调用App下单API后,分正常返回和异常返回情况: 正常返回:返回prepay_id,商户可根据返回的prepay_id来生成调用OpenSDK的签名以执行下一步。 异常返回:返回HTTP code或错误码,商户可根据HTTP code列表 或错误码说明来排查原因并执行下一步操作。 步骤8: 商户通过App调起支付OpenSDK调起微信支付,发起支付请求,有关OpenSDK调起支付的详细说明,请参考iOS开发要点说明的说明 步骤15-19: 用户支付成功后,商户可通过以下两种方式获取订单状态。 我们通过以下接口将用户确认订单信息回调通知给商户系统: 方法一: 支付结果通知。用户支付成功后,微信支付会将支付成功的结果以回调通知的形式同步给商户,商户的回调地址需要在调用App下单API时传入notify_url参数。 方法二: 当因网络抖动或本身notify_url存在问题等原因,导致无法接收到回调通知时,商户也可主动调用查询订单API 查询订单API来获取订单状态。 ## 软件要求 - DevEco Studio 版本:DevEco Studio 5.0.0 Release。 - OpenHarmony SDK版本:API version 12。 ## 效果预览 ![example.gif](entry%2Fsrc%2Fmain%2Fresources%2Fbase%2Fmedia%2Fexample.gif) ## 工程目录 ``` entry/src/main/ |---ets | |---comstants | |---entryAbility | |---model | | |---WXApiWrap //封装类 | |---pages | | |---index // 主体内容 | | |---SharePage |---resources // 资源 ets entry/src/ohosTest/ets/ |---test AppScope/resources/base/ |---element | |---string / |---media // 图片 ``` ## 关键代码 #### 判断微信是否安装 1、在module.json5中添加配置微信的scheme字段 ``` { "module": { "querySchemes": [ "weixin" ], "name": "entry", "type": "entry", "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": [ "phone", "tablet", "2in1" ], "deliveryWithInstall": true, "installationFree": false, "pages": "$profile:main_pages", } } ``` 2、在页面中做以下判断 ``` import { bundleManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { promptAction } from '@kit.ArkUI'; try { let link = 'weixin://'; let data = bundleManager.canOpenLink(link); if (data) { promptAction.showToast({message:'微信已安装'}) }else { promptAction.showToast({message:'微信未安装'}) } } catch (err) { let message = (err as BusinessError).message; console.error('canOpenLink failed: %{public}s', message); } ``` ## 相关权限 不涉及 ## 使用说明 点击按钮,弹出模态化窗口。