为了在保证支付安全的前提下,带给商户简单、一致且易用的开发体验,我们推出了全新的微信支付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后,可根据下面每个接口的示例代码替换相关参数后进行快速测试。
- 开发者如果想详细了解签名生成、签名验证、敏感信息加/解密、媒体文件上传等常用方法的具体代码实现,可阅读下面的详细说明:
- 签名生成
- 签名验证
- 敏感信息加解密
- merchantPrivateKey(私钥)
- wechatpayCertificates(平台证书)
- APIV3Key(V3 key)
- 如想更详细的了解我们的接口规则,可查看我们的接口规则指引文档。
2.2.1. 注册App
App接入微信支付,需要先将商户App在微信开放平台进行注册,登记App开发参数以生成AppID。具体操作步骤如下:
- 登录微信开放平台 ,进入【管理中心 → 移动应用 → 创建移动应用】;
- 完成基本信息的录入,商户需要在本步骤提交App对应的下载地址,应用官网,应用水印,icon等业务信息;
- 完成平台信息的录入,商户需要在本步骤提交App在Android/iOS/鸿蒙端对应的开发参数,包括Android端应用的包名,应用签名,iOS端应用的Bundle ID, Universal Links,鸿蒙端应用的Bundle ID 和 Identifier等;
- 以上信息全部提交完成后,即完成App的注册,商户可在【管理中心 → 移动应用】中,选择具体的应用查看其AppID及已获得的接口能力;
- 获取到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值列表:
Android SDK调用说明
一、SDK拉起支付
商户服务器生成支付订单,先调用App下单API生成预付单,获取到prepay_id后将参数再次签名传输给App发起支付。以下是调起微信支付的关键代码:
二、支付结果回调
参照微信SDK Sample,在商户包名.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信App会返回到商户App并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码, 如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。
代码示例如下:
回调中errCode值列表:
鸿蒙 SDK调用说明
一、SDK 拉起支付
商户服务器生成支付订单,先调用App下单API生成预付单,获取到prepay_id后将参数再次签名传输给App发起支付。以下是调起微信支付的关键代码:
二、 支付结果回调
支付完成后,微信App会返回到商户App并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码。如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端接收的支付通知或查询API返回的结果为准。
示例代码:
回调中errCode值列表:
3.2.3.【服务端】接收支付结果通知
步骤说明: 当用户完成支付,微信会把相关支付结果将通过异步回调的方式通知商户,商户需要接收处理,并按文档规范返回应答。
更多参数、响应详情及错误码请参见 支付结果通知接口文档。
3.2.4. 【服务端】查询订单
步骤说明: 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知时,商户可通过查询订单接口核实订单支付状态
示例代码(通过微信订单号查询):
更多参数、响应详情及错误码请参见 微信支付订单号/商户订单号接口文档。
3.2.5. 【服务端】关闭订单
步骤说明: 当商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口
更多参数、响应详情及错误码请参见 关闭订单接口文档。
3.2.6. 【服务端】申请交易账单
步骤说明: 微信支付按天提供交易账单文件,商户可以通过该接口获取账单文件的下载地址。
更多参数、响应详情及错误码请参见 申请交易账单接口文档。
3.2.7. 【服务端】下载账单
步骤说明: 通过申请交易账单接口获取到账单下载地址(download_url)后,再通过该接口获取到对应的账单文件,文件内包含交易相关的金额、时间、营销等信息,供商户核对订单、退款、银行到账等情况。
更多参数、响应详情及错误码请参见 下载账单接口文档。
A:请按以下步骤进行排查:
- 查看App下单参数返回是否正常,是否有正确的在调用SDK前获取了正确的prepay_id;
- 查看调用SDK签名是否正确,请注意以下几点:
- 参与签名的参数名大小写一定要与文档中保持一致;
- App下单返回的签名和调用SDK使用的签名不是同一个,调用SDK需要单独根据SDK参数生成签名。
- 检查客户端调用sendReq(PayReq)对象赋值的正确性(必要时让商户提供数据),若通过异步获取到后台数据,比如data对象是通过异步请求得到的对象:request.AppID = data.AppID; 实际AppID属性值为空;
- 检查对应的开发配置,包括iOS的AppID配置,Android的包名及包签名设置。
A:请确认唤起支付参数字段名是否与文档的一致。
A:App支付需要进行单独的授权开通才可使用,请前往服务商平台子商户管理中找到对应的子商户授权服务商App支付权限。
A:在调用App下单接口前,需保证子商户号与子商户App的AppID存在绑定关系,请服务商前往服务商平台的子商户管理页面中操作绑定。
到此这篇微信hook api(微信hookvip)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-api/22639.html