微信支付对接流程及注意事项
刚开始接到任务要接微信支付,一头雾水没接过,不知道咋接,百度一番之后,发现很多博客都说接微信支付各种坑,顿时心头一沉,这事怕不是那么好搞,哈哈。不过这一路对接过来,发现微信支付确实有很多需要注意的小细节,有的是容易看漏的,有的是官方文档都没提到的。有必要整理总结一下,后面再对接微信支付就很快了,好了话不多说,下面开始微信支付的对接流程。
一、微信支付配置
1.开通对应的支付功能
登录微信商户平台开通对应的支付功能,公众号支付、App支付、扫码支付、刷卡支付、H5支付
2,设置支付授权目录(公众号支付)、扫码回调链接(扫码支付)、H5支付域名(H5支付)
注意:支付授权目录为微信回调你的系统时所访问的链接,授权目录需要去掉最后一个斜杠后面的内容才行
3.设置业务域名、JS接口安全域名、网页授权域名
登录微信公众平台,开发-->接口权限-->网页服务-->网页授权-->修改
注意:步骤2、3中配置的域名都必须是备案过的域名
4.APPID绑定授权申请
在商户平台绑定APPID之后,然后在微信公众平台中审核通过
好了,微信支付配置基本上就是这么多
二、本机调试之花生壳
微信商户平台、公众平台配置的域名都需要是备案过的域名,但是我们一般只有生产环境才有备案过的域名,这个时候要在开发环境对接调试微信支付,我们可以用花生壳,花生壳有个6元体验版,提供一个备案过的域名。然后我们可以用花生壳的内网穿透将域名直接映射到本地服务上,这样就可以实现手机端访问H5或App,PC上能直接进行服务调试。在对接微信支付的过程中,花生壳解决了我的一大环境问题。
三、接口对接调试
1.公众号支付
官方支付接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
根据业务流程时序图,我们首先需要请求微信支付统一下单接口
上面是下单必传参数
appid为微信公众平台上的开发者ID
mch_id为商户平台上的商户号
spbill_create_id为终端IP,这里把获取代码贴出来,试了好几种,就这一种可以
/**
* 获取IP地址
* @param request
* @return
*/
public String getIpAddress(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
ip = request.getRemoteAddr();
}
if(ip.indexOf(",")>-1){
ip = ip.split(",")[0];
}
return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
}
notify_url为接收微信支付结果通知url,后面处理交易状态会用到
trade_type交易状态,我们这里是公众号支付就填JSAPI
openid需要重点强调下,这里必填栏写的否,如果你真的不填就太粗心啦,请看描述里面的备注trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。
那么问题来了,怎么获取openid,即微信网页授权
可以参考官方技术文档,https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
网页授权分两种一种用来获取openid,一种用来获取用户信息,我们这里用第一种
获取openid步骤如下
第一步:用户同意授权,获取code
第二步:通过code换取openid
上面是理论描述,下面说下我的具体做法,上代码
先从H5端请求到服务端接口,再从服务端重定向到微信
服务端重定向到微信接口获取code
获取code的回调url需要进行编码,这边回调的url,我直接用的后台获取openid接口地址,回调url的时候微信支付那边会带上code,所以在获取openid的接口中可以通过request.getParameter("code");获得code
根据code请求微信接口获取openid,这里的appSecret为微信公众平台-->基本配置-->公众号开发信息-->开发者密码(AppSecret)
好了,统一下单接口的参数准备完毕,接下来可以开始调用了,服务端调用微信支付,我这边是直接依赖微信官方的wxpay-sdk
里面封装了微信支付用到的业务接口和工具类很方便
微信支付需要用到的配置参数开发平台appid,公众平台appid,商户号mchid,key为API密钥(在商户平台配置),这里的apiclient_cert.p12文件(API证书),需从商户平台下载,我直接放在工程目录下。
下单接口,直接调用 WXPay中封装的下单接口unifiedOrder,将接口返回的结果返回给前台
注意:接口中返回的sign不能直接用,如果直接返回给H5前台支付会报签名失败,这里要进行二次签名,这一点在微信官方文档中没有看到说明,参与二次签名的参数有appId、timeStamp、nonceStr、package、signType,格式一定要对,签名方法可以工具类里面的方法WXPayUtil.generateSignature()
注意:参数package的格式为"prepay_id="
微信支付对接流程及注意事项相关推荐
- JPA框架微信支付对接-V3支付接口,V2退款接口对接,复制即用
框架:springDateJPA 对接微信支付首先需要需要在微信商户平台注册微信商户号 微信商户平台入口 微信公众平台入口 这里主要是微信支付的方式,一共有七种,我这里主要对接了3种,App支付,JS ...
- JSAPI微信支付开发流程和坑
首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...
- 微信支付对接海关申报
微信支付对接海关申报 1.先微信商户中心,进行海关申报配置 重点注意:请求接口前请先在以下页面提交您的海关信息,所有你需要报关的海关信息都需要提交 2.进行海关申报(本文章是没有子订单的) 注意:商户 ...
- 微信JSAPI支付对接流程及支付接口设计
文章目录 前言 一.JSAPI支付场景及逻辑 二.开发步骤 1.设置支付目录 2.设置授权域名 3.业务流程 三.代码设计 1. 支付页面 2. Controller 3. JS调起支付 4. 工具类 ...
- 微信公众号支付对接流程
一.首先申请公众号,认证,开通支付功能(具体配置参照API) 二.登录商户平台进行开发设置(具体配置参照API) 三.具体开发流程 首先,官方给出的SDK和demo和一些具体的API文档看起来比较麻烦 ...
- 小程序微信支付开发流程记录
我所在公司需要开发一款商城小程序,里面需要用到微信支付,我负责里面的下单功能,从小程序端到后台的支付流程都是我自己开发的,由于我们组没有人有开发微信支付的经验,只有我有开发过JSAPI的微信支付的经验 ...
- 微信小程序收款手续费_小程序微信支付收款流程
大家都知道,小程序具备微信支付功能,但是,很多商家还不知道具体的收款流程是什么?用户在小程序下单支付的款项究竟到了哪里?或者找第三方公司开发担心资金安全问题? 今天给大家详细的讲解一下: 在实现微信小 ...
- 小程序支付管理-新版支付对接流程
背景简介 目前是灰度测试阶段,少部分小程序需要[支付管理]方式对接:大部分不需要 [支付管理]方式跟视频号的[自定义支付组件]对接流程类似:使用方式类似. 官方对接说明文档: 小程序支付管理服务介绍 ...
- 萤石微信支付对接(小程序版)
1.萤石支付简介及流程 萤石支付,是对第三方支付平台的二次封装.考虑到的目的可能有:1.合资公司的金钱交易需要走总部财务 2.二次封装对接更加容易,与第三方支付sdk的交互都由萤石平台封装完成了. 1 ...
最新文章
- ecplise安装flowable插件
- matlab如何读取csv,Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件 | 学步园...
- Spring IOC详解与配置
- Charles 二三谈
- Redis命令小细节
- 我的世界服务器怎么在计分板上面显示,我的世界计分板指令教程 计分板指令怎么使用...
- 烂泥:LVM学习之LVM基础
- storm流式处理框架
- Apollo-原理以及架构图分析
- STM32 - Cube介绍
- MacBook安装wget几种方式
- Googler:现在可以 Linux 终端下进行 Google 搜索了!
- matlab如何生成极坐标,如何在matlab中极坐标画图
- AlphaGo Zero 初探
- 游戏安全初学者学习资料
- ios airplay mirroring镜像
- 你知道wps可以开启护眼模式吗?
- 华为OD机试2023年最新题库(JAVA、Python、C++)
- 清华姚班教授: 「读博,你真的想好了吗?」与 UIUC 王鸿伟「读博,我想好了!」...
- 2018.9-江苏电赛省赛-基于STM32F103RCT6和FDC2214的手势识别装置