微信小程序支付接口的实现

小程序支付:

   学生介绍了一项私人工作,并开发了一个支付模块。他以前做过一个小程序来借此机会学习。由于甲方的原因(不会设置支付目录,不理解APP_ID与MCH_ID区别,给错了API_KEY)调研了一下午后决定使用小程序支付API。小程序的支付更较简单,不需要设置支付目录、授权域名等操作。主要流程有两个步骤:

   开发者服务器向微信服务器发起统一订单请求,将返回参数处理到小程序端,小程序调动微信支付。

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 关于代码:

   官方下载J ** Asdk包后修改 WXPayRequest.requestOnce()方法,将do ** in改为微信统一下单url,也可直接实现IWXPayDo ** in主备域名自动切换接口。

HttpClient httpClient = HttpClientBuilder.create() .setConnectionManager(connManager) .build();String url = "https://" do ** in 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. 开发过程中的问题:甲方给出了错误的密钥!!!预计一天结束,浪费了一个下午。确认用户openid和appid是对应的。请求统一下单接口时,必须确保参数中提交的参数openid是其对应appid下一个用户,不匹配appid和openid统一下单会一一返回APPID_MCHID_NOT_MATCH 错误。小程序支付需要再次签名验证。最初,我认为只要第一个签名和各种参数传输到前端,结果总是显示签名失败。小程序调用支付方式所需的签名需要按照规定的格式再次转换为XML然后用加密算法获得加密算法sign,注意小程序支付的参数名。

扫码免费用

源码支持二开

申请免费使用

在线咨询