0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

全新微信支付APIv3接口规则(opensnew)(私钥)

发表时间:2023-11-29 09:06:30

文章来源:炫佑科技

浏览次数:122

菏泽炫佑科技

全新微信支付APIv3接口规则(opensnew)(私钥)

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

2、开发准备 2.1. 设置和配置开发环境

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

测试步骤:

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

-php (opens new) (推荐), -- (opens new),适合PHP开发者。 -go (opens new),适合Go开发者。

更多资源可以在微信支付开发者社区(opens new)中搜索。

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

示例代码

3. 根据接口示例代码,替换请求参数后即可发起测试。

阐明:

签名生成 签名验证 敏感信息加解密(私钥)(平台证书)(V3密钥) 2.2. 业务开发配置 2.2.1. 注册应用程序

App接入微信支付,需要先在微信开放平台注册商户App,并注册App开发参数,生成AppID。 具体步骤如下:

登录微信开放平台(打开新),进入【管理中心→移动应用→创建移动应用】;

完成基本信息录入后,商户需要在此步骤提交App对应的下载地址、App官网、App水印、图标等业务信息;

完成平台信息录入,商户需要在这一步提交App和iOS端对应的开发参数,包括iOS端应用的包名、应用签名、ID、链接等;

以上信息全部提交后,App注册完成。 商户可以在【管理中心→移动应用】中选择具体应用,查看其AppID及获取的接口能力;

获取应用的AppID后,您需要将该AppID与商户支付进行绑定。 商户可以登录商户平台,进入【产品中心->AppID账户管理】界面进行AppID的绑定和管理。 界面如图所示。 展示:

2.2.2. iOS开发要点

由于苹果在iOS13系统中取消了查询App的能力,因此微信无法保证授权凭据能够正确返回给AppID对应的应用程序。 为此app开发,微信支付强烈要求所有商户尽快升级至.8.6,并让用户及时更新App,否则安全风险将始终存在。 谢谢您的合作!

详细升级说明请参见:升级指南(opens new)

注意

升级后,请务必按照文档要求完成验证工作,以确保升级成功。

下面以项目开发环境以.0、运行环境为IOS7.0为例来说明其开发时所需的操作。

1.项目设置AppID

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

2、注册AppID

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

[WXApi:@"":@"演示2.0"];

注意

前端支付发起及SDK回调说明请参见发起支付说明(另开)

2.2.3. 开发要点1.后台设置

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

应用包名:是App工程配置文件.xml中声明的值,如上图中的“”。

应用签名:根据项目的应用包名称和编译用途,签名工具可以生成32位md5字符串。 在被调试手机上安装签名工具后,运行即可生成应用签名字符串,如图8.9所示,绿色字符串为Apply签名。

点击下载签名生成工具(opens new)

2、注册AppID

商户App项目引入微信JAR包。 调用API之前,您需要向微信注册您的AppID。 代码如下:

1final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
2// 将该app注册到微信
3msgApi.registerApp("wxd930ea5d5a258f4f");

注意

前端支付发起及SDK回调说明请参见发起支付说明(另开)

3. 快速访问 3.1. 业务流程图

关键步骤:

第三步:用户下单发起支付,商户可以通过微信支付App订单接口创建支付订单。

商户调用App下单接口后,会有正常返回和异常返回两种情况:

步骤8:商户通过App激活微信支付,并发起支付请求。 有关发起付款的详细说明,请参阅说明。

步骤15-19:用户支付成功后,商户可以通过以下两种方式获取订单状态。

我们通过以下接口通知商户系统用户确认订单信息回调:

方式一:付款结果通知。 用户支付成功后,微信支付会将支付成功结果以回调通知的形式同步给商户。 调用App的订单接口时,需要参数传入商户的回调地址。

方式二:当因网络抖动或问题而无法收到回调通知时,商户也可以主动调用查询订单接口获取订单状态。

3.2. API访问(包括示例代码)

文档展示了如何使用微信支付服务器SDK快速接入支付并完成与微信支付的接口。

注意

3.2.1. [服务器] 应用程序订购

步骤描述:用户在商户App中完成商户选择后,进入支付页面。 商户需要通过后台请求App的订单接口获取预付款ID。

示例代码

重要输入说明:

更多参数、响应详情和错误码请参考App订购API接口文档。

3.2.2. [客户] 电话付款

步骤说明:通过App点餐接口成功获取预付款交易 ID()后,需要调用微信支付收银台

SDK调用需要携带签名(签名涉及的参数有:AppID,,,,,,,参数区分大小写)

重要输入说明:

生成规则、响应详情和错误码请参考App支付接口文档。

iOS SDK调用说明 1.发起支付

商户服务器生成支付订单,首先调用App的订单API生成预付费订单,获取后重新签名并传输参数给App发起支付。 以下是激活微信支付的关键代码:

1PayReq *request = [[[PayReq alloc] init] autorelease];
2request.partnerId = @"10000100";
3request.prepayId= @"1101000000140415649af9fc314aa427";
4request.package = @"Sign=WXPay";
5request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
6request.timeStamp= @"1397527777";
7request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
8[WXApi sendReq:request]

注意

该标志生成的字段名称列表如调用支付接口所示。

2. SDK结果回调

根据微信SDK,该类实现了该功能。 支付完成后,微信App会返回商户App并回调该函数。 开发者需要在该函数中接收通知并判断返回的错误码。 如果支付成功,则到后台查询支付结果,然后显示用户的实际支付结果。 注意,客户端返回的结果不得作为用户的支付。 以服务器收到的支付通知或查询接口返回的结果为准。

代码示例如下:

1-(void)onResp:(BaseResp*)resp{
2if ([respisKindOfClass:[PayRespclass]]){
3 PayResp*response=(PayResp*)resp;
4 switch(response.errCode){
5 caseWXSuccess: //服务器端查询支付通知或查询API返回的结果再提示成功
6 NSlog(@"支付成功");
7 break;
8 default:
9 NSlog(@"支付失败,retcode=%d",resp.errCode);
10 break;
11 }
12 }
13}

回调中的值列表:

名称描述解决方案

-2

用户取消

无需处理。 场景:用户未付款,点击取消,返回App。

成功

显示成功页面

-1

错误

可能原因:签名错误、未注册AppID、项目设置AppID不正确、注册AppID与设置的不匹配、其他异常等。

SDK调用说明 1. SDK发起支付

商户服务器生成支付订单,首先调用App的订单API生成预付费订单,获取后重新签名并传输参数给App发起支付。 以下是激活微信支付的关键代码:

1IWXAPI api;
2 PayReq request = new PayReq();
3 request.appId = "wxd930ea5d5a258f4f";
4 request.partnerId = "1900000109";
5 request.prepayId= "1101000000140415649af9fc314aa427",;
6 request.packageValue = "Sign=WXPay";
7 request.nonceStr= "1101000000140429eb40476f8896f4c9";
8 request.timeStamp= "1398746574";
9 request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
10 api.sendReq(request);

注意

该标志生成的字段名称列表如调用支付接口所示。

2.支付结果回调

参考微信SDK,实现net...wxapi包路径中的类(包名或类名不一致会导致回调失败),实现类中的功能,支付完成后微信App会返回商户App并回调该函数。 开发 用户需要在该函数中接收通知并判断返回的错误码。 如果支付成功全新微信支付APIv3接口规则(opensnew)(私钥),则到后台查询支付结果,然后显示用户的实际支付结果。 注意,客户端返回的结果不得作为用户的支付。 以服务器收到的支付通知或查询接口返回的结果为准。

代码示例如下:

1public void onResp(BaseRespresp){
2 if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){
3 Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
4 AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
5 builder.setTitle(R.string.app_tip);
6 }
7}

回调中的值列表:

名称描述解决方案

成功

显示成功页面

-1

错误

可能原因:签名错误、未注册AppID、项目设置AppID不正确、注册AppID与设置的不匹配、其他异常等。

-2

用户取消

无需处理。 场景:用户未付款,点击取消,返回App。

3.2.3. [服务器]接收支付结果通知

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

注意

特别提醒:商户系统必须对结果通知的内容进行签名验证,并验证通知中的信息与商户侧的信息是否一致,防止数据泄露造成“虚假通知”和财务损失。

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

3.2.4. [服务器]查询订单

步骤描述:当商户后台、网络、服务器等出现异常,商户系统未收到支付通知时,商户可以通过订单查询接口验证订单支付状态。

注意

可以通过微信支付订单号和商户订单号查询订单。 两种查询方法返回相同的结果。

需要调用查询接口的情况:

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

示例代码

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

3.2.5. [服务器]关闭订单

步骤描述:当商户订单支付失败时,需要生成新的订单号才能重新发起支付。 下单后必须调用关闭原订单号,避免重复付款。 系统下单后,用户付款超时,系统退出,不再接受,阻止用户继续。 请调用自定义订单接口

注意

示例代码

更多参数、响应详情及错误码请参考平仓订单接口文档。

3.2.6. [服务器]申请交易账单

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

示例代码

更多参数、响应详情及错误码请参见交易账单支付通知API接口文档

3.2.7. [服务器]下载账单

步骤描述:通过应用交易账单接口获取账单下载地址()后,通过该接口获取对应的账单文件。 该文件包含金额、时间、营销等交易相关信息,供商户查询订单、退款、银行账户到账等。

注意

示例代码

更多参数、响应详情和错误码请参见下载缴费通知API接口文档。

4.常见问题 问:前端启动时微信支付返回=-1如何排查?

答:请根据以下几点进行检查:

调用SDK前检查App返回的订单参数是否正常,是否获取到正确的订单参数;

检查调用SDK签名是否正确,请注意以下几点:

客户端调用()时检查对象赋值的正确性(必要时要求商家提供数据)。 如果后台数据是异步获取的,例如,数据对象是通过异步请求获取的对象:.AppID = data.AppID; 实际的AppID属性值为空;

检查对应的开发配置,包括iOS AppID配置、包名和包签名设置。

Q:App调用“调用支付接口”返回:商户支付订单ID不合法。

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

Q:服务商模式下,调用App下单接口时,返回“特殊子商户商品权限未授权”。

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

Q:调用App点餐接口时,返回“不匹配”。

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

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多