上海千语创想科技有限公司
 175-2108-6175
网站建设资讯详细

微信小程序支付接口如何实现

日期:2021-09-25  作者:千语创想  浏览:3865

其实主要的流程就两步:开发者服务端向微信服务器发起统一下单请求,把返回的参数处理一下给小程序端,小程序调起微信支付。

1. 准备工作:

微信小程序的支付功能共需要以下几个参数

 APP_ID="";
 MCH_ID="";
 API_KEY="";
 OPNE_ID="";

1.1 申请服务号(需要用的MCH_ID)小程序认证、接通微信支付

小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署迁移,即完成了微信支付的申请流程。微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。

1.2 配置小程序密钥

小程序后台设置页,点击生成,管理员验证二维码后,会随机生成AppSecret。请妥善保管好Appsecret,不要明文存储于服务器,AppSecret用于和微信服务器交互。比如获取用户的openid接口就需要用到。

1.3 配置微信支付密钥和证书

在微信支付(http://pay.weixin.qq.com)在账户中心,API安全中下载证书和设置密钥。密钥是32位,设置以后需要妥善保管,因为无法查看密钥,所有微信支付相关的接口都会使用这个密钥加密。此处错误会导致调用统一下单接口时返回签名失败。

2. 微信支付流程:

微信支付有多种支付方式,包括刷卡支付,公众号支付,扫码支付,APP支付,所有微信支付的接口都可以在这里找到:https://pay.weixin.qq.com/wiki/doc/api/index.html 。

小程序是在微信里调起支付的,其实是公众号支付,关于公众号支付的详细文档可以这里找到: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1所有公众号支付相关的链接都可以在此链接找到,开发者首先需要大概了解这些接口。

小程序公众号支付的主要流程如下(本图只考虑了正常流程,异常流程参考公众号支付文档):


小程序内点击付款后,在后端生成订单,后端获取openId后对订单进行二次封装(包括APP_ID,MCH_ID等内容),将封装信息转成XML格式后进行加密获得签名(Sign)。调用统一下单接口后,微信后台会返回一个XML文件,其中包括:prepay_id(微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时)。将小程序支付所需要的内容再次封装加密后生成PaySign,然后将生成的参数传递到小程序前端调用wx.requestPayment方法即可。

2.1 关于代码:

下载官方的JAVAsdk包后修改 WXPayRequest.requestOnce()方法,将domain改成微信统一下单的url,也可以直接实现IWXPayDomain接口,实现主备域名自动切换。

HttpClient httpClient = HttpClientBuilder.create()
        .setConnectionManager(connManager)
        .build();String url = "https://" + domain + urlSuffix;HttpPost httpPost = new HttpPost(url);

流程思路:将订单信息及密钥等信息封装后进行加密签名获得sign,将sign也封装在Map集合当中,转化成XML后使用HTTPSClient转发到微信后台服务器,后台服务器会返回一个XML数据,将XML数据解析后,根据小程序支付所需要参数,进行二次签名,完成后将参数返回到小程序前端即可。

2.2 关于openid

上述流程中请求openid,用的是小程序最新api中的接口,开发者可以查看小程序的登录接口。开发者从第三方服务器获得的openid,在统一下单的接口里面需要使用到。

2.3 关于小程序调起微信支付

上述流程中的小程序调起微信支付,用的是小程序微信支付接口wx.requestPayment,该接口的详细描述可以查看小程序的微信支付API。

这个接口中的package和timeStamp参数是从开发者的第三方服务器返回的,package是第三方服务器从统一下单接口回复中获得。接口中其他的参数,appId,noceStr,signType以及paySign则由小程序这边存储或者计算而得。其中paySign是签名,签名算法文档在这里:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=20161107

整个公众号支付的主要流程基本都是在第三方服务器上实现,开发者需要熟读公众号支付文档,了解消息交互流程以及每个接口。

这里并没有描述正常微信支付必不可少的一些功能:异常处理,查询订单,发起退款,下载对账单等等。

3. 开发过程中的问题:

  1. 甲方给错了密钥!!!!本来预计一天搞完,结果浪费了一下午的时间。

  2. 确认用户的openid和appid是对应的。在请求统一下单接口时一定要确保提交参数中的openid是其对应appid下的用户,不匹配的appid和openid在统一下单会返回一个APPID_MCHID_NOT_MATCH 错误。

  3. 小程序支付需要再次签名验证。原本以为只要把第一次的签名及各类参数传到前端即可,结果一直显示签名失败。小程序调用支付的方法所需要的签名,需要按照规定格式再次转化成XML然后使用加密算法获得sign,注意小程序支付的参数名。

千语创想-专业APP开发、小程序开发服务商,提供一站式移动应用解决方案,满足您的各类需求,欢迎免费评估需求和获取报价。

提交小程序定制需求,免费获取报价和周期:

电脑请点击https://www.qianyuthink.com/?url=/index?uzchannel=500

手机请点击https://www.qianyuthink.com/?url=/m/customizedservice?uzchannel=500



转载请注明来自:https://www.qianyuthink.com/news/7877.html

填写您的项目需求给我们

或者直接拨打 7×12小时一对一咨询电话

175 2108 6175

请填写需求信息,我们会在10分钟内与您取得联系

请认真填写需求信息,我们会在10分钟内与您取得联系

×
客服二维码
咨询技术总监
175-2108-6175
客服二维码
技术总监微信
客服二维码