当前位置:网站首页 > API设计与开发 > 正文

微信hook api(微信hookvip)



为了在保证支付安全的前提下,带给商户简单、一致且易用的开发体验,我们推出了全新的微信支付APIv3接口。该版本API的具体规则请参考APIv3接口规则。

为了帮助开发者调用开放接口,我们提供了JAVA、PHP、GO三种语言版本的开发库,封装了签名生成、签名验证、敏感信息加/解密、媒体文件上传 等基础功能(更多语言版本的开发库将在近期陆续提供)。

测试步骤:

1、根据自身开发语言,选择对应的开发库并构建项目,具体配置请参考下面链接的详细说明:

  • wechatpay-java (推荐)、wechatpay-apache-httpclient ,适用于Java开发者。
    • 注:当前开发指引接口JAVA示例代码采用wechatpay-apache-httpclient版本。
  • wechatpay-php (推荐)、wechatpay-guzzle-middleware ,适用于PHP开发者。
    • 注:当前开发指引接口PHP示例代码采用wechatpay-guzzle-middleware版本。
  • wechatpay-go ,适用于Go开发者。

更多资源可前往微信支付开发者社区 搜索查看。

2、创建加载商户私钥、加载平台证书、初始化httpClient的通用方法。

3、基于接口的示例代码,替换请求参数后可发起测试。

说明:

  • 上面的开发库为微信支付官方开发库,其它没有审核或者控制下的第三方工具和库,微信支付不保证它们的安全性和可靠性。通过包管理工具引入SDK后,可根据下面每个接口的示例代码替换相关参数后进行快速测试。
  • 开发者如果想详细了解签名生成、签名验证、敏感信息加/解密、媒体文件上传等常用方法的具体代码实现,可阅读下面的详细说明:
  1. 签名生成
  2. 签名验证
  3. 敏感信息加解密
  4. merchantPrivateKey(私钥)
  5. wechatpayCertificates(平台证书)
  6. APIV3Key(V3 key)
  • 如想更详细的了解我们的接口规则,可查看我们的接口规则指引文档

2.2.1. 注册App

App接入微信支付,需要先将商户App在微信开放平台进行注册,登记App开发参数以生成AppID。具体操作步骤如下:

  1. 登录微信开放平台 ,进入【管理中心 → 移动应用 → 创建移动应用】;
    示例图
  2. 完成基本信息的录入,商户需要在本步骤提交App对应的下载地址,应用官网,应用水印,icon等业务信息;
    示例图
  3. 完成平台信息的录入,商户需要在本步骤提交App在Android/iOS/鸿蒙端对应的开发参数,包括Android端应用的包名,应用签名,iOS端应用的Bundle ID, Universal Links,鸿蒙端应用的Bundle ID 和 Identifier等;
    示例图
  4. 以上信息全部提交完成后,即完成App的注册,商户可在【管理中心 → 移动应用】中,选择具体的应用查看其AppID及已获得的接口能力;
    示例图
  5. 获取到App的AppID后,需要将该AppID与商户的收款mch_id进行绑定,商户可登录商户平台后前往【产品中心 -> AppID账号管理】界面中进行AppID的绑定及管理,界面如图所示:
    示例图

2.2.2. iOS开发要点说明

  • iOS系统OpenSDK升级指引

由于苹果公司在iOS13系统回收了查询 App bundleID 的能力,导致微信无法保证授权凭证能正确返回给AppID对应的应用。为此,微信支付强烈要求所有商户尽快升级到OpenSDK1.8.6,并让用户及时更新App,否则安全风险将一直存在。谢谢配合!

详细OpenSDK升级指引请参见:OpenSDK升级指引

示例图
  • 开发配置:

以下项目开发环境以Xcode6.0,运行环境为IOS7.0为例,说明其开发中需要的操作

一、项目设置AppID

商户在微信开放平台申请开发App应用后,微信开放平台会生成App的唯一标识AppID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的AppID。如图标红位置所示。

示例图
二、注册AppID

商户App工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的AppID,代码如下:

[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];

2.2.3. Android开发要点说明

1、后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成App的唯一标识AppID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图红框内所示。

示例图

应用包名:是在App项目配置文件AndroidManifest.xml中声明的package值,例如上图中的package="demo.wxpay.tenpay.com"。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。

点击下载签名生成工具

示例图
2、注册AppID

商户App工程中引入微信JAR包,调用API前,需要先向微信注册您的AppID,代码如下:

2.2.4. 鸿蒙开发要点说明

1、配置鸿蒙应用信息

前往微信开放平台 ,在「管理中心 - 移动应用 - 详情 - 开发配置」中点击「编辑」进入修改开发信息的页面,继续在「平台信息」板块中填入鸿蒙应用所需的 Bundle ID 和 identifier 信息,然后提交审核,等待审核通过即可。

示例图

关于「鸿蒙应用」中的 Bundle ID、Identifier、以及应用下载地址的提供的说明如下:

  • Bundle ID 指的是鸿蒙应用的包名,详情可点击查看
  • Identifier 指的是鸿蒙应用的 appIdentifier,详情可点击查看

注意事项:

  • 对于 App 已上架 Android 或iOS 应用市场的应用,千万别选择【未上架任何应用市场】,此选项意思是 Android、iOS 和鸿蒙都尚未上架应用市场,而未上架应用市场的应用使用微信能力则有如下的限制,因此开发者需谨慎操作
示例图
  • 因此,对于 App 已上架 Android 或iOS 应用市场的应用,需选择【已上架至少一个应用市场】,但需填写 App 备案号
示例图
  • 即,对于 Android 和 iOS 已上架的应用,在下面的配置中一定要选择【是】
示例图
2、下载鸿蒙开发的 IDE

前往鸿蒙官网下载 DevEco Studio NEXT

3、配置 sdk 依赖

在 DevEco Studio NEXT中打开你的项目,以 demo 工程 为示例:

修改项目中的oh-package.json5文件,在dependencies中加入微信opensdk的依赖项:

图片

重点步骤说明:

步骤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来获取订单状态。

文档展示了如何使用微信支付服务端 SDK 快速接入支付有礼,完成与微信支付对接的部分。

3.2.1. 【服务端】App下单

步骤说明: 用户在商户App内完成商户选择后进入支付页面,商户需要通过后端请求该App下单API来获取预支付ID。

重要入参说明:

  • out_trade_no:商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一。
  • description:商品描述。
  • notify_url:支付回调通知URL,该地址必须为直接可访问的URL,不允许携带查询串。
  • total:订单总金额,单位为分。

更多参数、响应详情及错误码请参见App下单API接口文档。

3.2.2. 【客户端】OpenSDK调起支付

步骤说明: 通过App下单API成功获取预支付交易会话标识(prepay_id)后,需要通过OpenSDK来调起微信支付收银台。

  • 该步骤请使用开放平台的官方OpenSDK:
    • IOS OpenSDK下载地址
    • Android OpenSDK下载地址
    • 鸿蒙 OpenSDK下载地址
  • SDK的调用需要携带签名(参与签名的参数为:AppID、partnerid、prepayid、package、noncestr、timestamp,参数区分大小写)

重要入参说明:

  • package: 取固定值Sign=WXPay。
  • signType: 该接口V3版本仅支持RSA。
  • paySign: 签名。

paySign生成规则、响应详情及错误码请参见App调起支付接口文档。

iOS SDK调用说明
一、拉起支付

商户服务器生成支付订单,先调用App下单API生成预付单,获取到prepay_id后将参数再次签名传输给App发起支付。以下是调起微信支付的关键代码:

二、SDK结果回调

按照微信SDK Sample,在类实现onResp函数,支付完成后,微信App会返回到商户App并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码, 如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意 一定不能以客户端返回作为用户支付的结果,应以服务器端接收的支付通知或查询API返回的结果为准。

代码示例如下:

回调中errCode值列表:

名称 描述 解决方案 -2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回App。 0 成功 展示成功页面 -1 错误 可能的原因:签名错误、未注册AppID、项目设置AppID不正确、注册的AppID与设置的不匹配、其他异常等。
Android SDK调用说明
一、SDK拉起支付

商户服务器生成支付订单,先调用App下单API生成预付单,获取到prepay_id后将参数再次签名传输给App发起支付。以下是调起微信支付的关键代码:

二、支付结果回调

参照微信SDK Sample,在商户包名.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信App会返回到商户App并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码, 如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。

代码示例如下:

回调中errCode值列表:

名称 描述 解决方案 0 成功 展示成功页面 -1 错误 可能的原因:签名错误、未注册AppID、项目设置AppID不正确、注册的AppID与设置的不匹配、其他异常等。 -2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回App。
鸿蒙 SDK调用说明
一、SDK 拉起支付

商户服务器生成支付订单,先调用App下单API生成预付单,获取到prepay_id后将参数再次签名传输给App发起支付。以下是调起微信支付的关键代码:

二、 支付结果回调

支付完成后,微信App会返回到商户App并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码。如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端接收的支付通知或查询API返回的结果为准

示例代码:

回调中errCode值列表:

值 描述 解决方案 0 成功 展示成功页面 -1 错误 可能的原因:签名错误、未注册AppID、项目设置AppID不正确、注册的AppID与设置的不匹配、其他异常等 -2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回App

3.2.3.【服务端】接收支付结果通知

步骤说明: 当用户完成支付,微信会把相关支付结果将通过异步回调的方式通知商户,商户需要接收处理,并按文档规范返回应答。

更多参数、响应详情及错误码请参见 支付结果通知接口文档。

3.2.4. 【服务端】查询订单

步骤说明: 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知时,商户可通过查询订单接口核实订单支付状态

示例代码(通过微信订单号查询):

更多参数、响应详情及错误码请参见 微信支付订单号/商户订单号接口文档。

3.2.5. 【服务端】关闭订单

步骤说明: 当商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口

更多参数、响应详情及错误码请参见 关闭订单接口文档。

3.2.6. 【服务端】申请交易账单

步骤说明: 微信支付按天提供交易账单文件,商户可以通过该接口获取账单文件的下载地址。

更多参数、响应详情及错误码请参见 申请交易账单接口文档。

3.2.7. 【服务端】下载账单

步骤说明: 通过申请交易账单接口获取到账单下载地址(download_url)后,再通过该接口获取到对应的账单文件,文件内包含交易相关的金额、时间、营销等信息,供商户核对订单、退款、银行到账等情况。

更多参数、响应详情及错误码请参见 下载账单接口文档。

A:请按以下步骤进行排查:

  1. 查看App下单参数返回是否正常,是否有正确的在调用SDK前获取了正确的prepay_id;
  2. 查看调用SDK签名是否正确,请注意以下几点:
    • 参与签名的参数名大小写一定要与文档中保持一致;
    • App下单返回的签名和调用SDK使用的签名不是同一个,调用SDK需要单独根据SDK参数生成签名。
  3. 检查客户端调用sendReq(PayReq)对象赋值的正确性(必要时让商户提供数据),若通过异步获取到后台数据,比如data对象是通过异步请求得到的对象:request.AppID = data.AppID; 实际AppID属性值为空;
  4. 检查对应的开发配置,包括iOS的AppID配置,Android的包名及包签名设置。

A:请确认唤起支付参数字段名是否与文档的一致。

A:App支付需要进行单独的授权开通才可使用,请前往服务商平台子商户管理中找到对应的子商户授权服务商App支付权限。

A:在调用App下单接口前,需保证子商户号与子商户App的AppID存在绑定关系,请服务商前往服务商平台的子商户管理页面中操作绑定。

到此这篇微信hook api(微信hookvip)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 51单片机设计计算器(51单片机设计计算器使用数码管)2025-10-01 19:09:07
  • win32api中文手册(windowsapi中文手册)2025-10-01 19:09:07
  • 单片机设计作品(单片机设计作品有哪些)2025-10-01 19:09:07
  • ddd领域驱动设计视频教程(ddd 领域驱动)2025-10-01 19:09:07
  • 单片机设计与开发比赛(单片机设计与开发比赛题目)2025-10-01 19:09:07
  • 字体标志设计(字体标志设计的案例)2025-10-01 19:09:07
  • 单片机课设概述(单片机课程教学设计)2025-10-01 19:09:07
  • 战斗系统设计(战斗系统设定)2025-10-01 19:09:07
  • 单片机设计论文结论(单片机设计论文结论怎么写)2025-10-01 19:09:07
  • 单片机设计与开发大赛(单片机设计与开发大赛专用仿真图)2025-10-01 19:09:07
  • 全屏图片