微信支付
微信支付分为两个版本
(1) V2版本
一个是统一支付的接口版本,也就是旧的支付接口版本(开发文档首页),这个的支付接口统一为https://api.mch.weixin.qq.com/pay/unifiedorder
(2) V3版本
而最新的接口为V3.0版(开发指引),根据不同的接入场景的支付接口也有所不同,比如使用JSAPI的支付接口为:https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
关于支付流程都教程其实网上有很多都文章,推荐最近看都一篇 手把手教你接入微信支付 ,我感觉这篇文章写的很好,关于流程,开发,内容等都讲都很详细。
1.基于 WxJava 和 Spring Boot 构建的微信支付示例 (这里封装了WxPay的调用方式,我查了很多的资料,也看了源码,好像这个封装其实也就是一个调用,根本就不是一个示例,比如创建订单的过程,其实也就是调用了官方的一个创建订单接口,然后返回了一个官方给的结果)
2.Wechat-Group/WxJava (官方的Java类库)
4.一文搞懂微信支付 Api-v3 接口规则与具体实现 (这里有V2和V3的版本说明)
5.IJPay 让支付触手可及 (一个集成了多种支付方式的开源代码)
6.什么是API证书?如何获取API证书?
1.微信APP支付流程
主要分为五个步骤:
(1) 用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单,签名后将数据传输到APP端。
(2) 用户点击后发起支付操作,进入到微信界面,调起微信支付,出现确认支付界面。
(3) 用户确认收款方和金额,点击立即支付后出现输入密码界面,可选择零钱或银行卡支付。
(4) 输入正确密码后,支付完成,用户端微信出现支付详情页面。
(5) 回跳到商户APP中,商户APP根据支付结果个性化展示订单处理结果。
2.H5商城网站支付流程
商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程:
(1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。
(2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。
(3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。
注:(2)和(3)的触发不保证遵循严格的时序。JS API返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。
3.网页扫码支付流程
就像简书上的打赏功能一样的,点击打赏->选择打赏金额->选择微信支付->调起微信支付二维码->微信上进行支付。除付款码支付场景以外,微信扫码支付,也是使用统一下单接口进行支付,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按Native、JSAPI、APP等不同场景生成交易串调起支付。
统一下单接口调用成功后,return_code 和result_code都为SUCCESS的时候有返回值,其中当交易类型为trade_type=NATIVE时会返回一个code_url参数,此url用于生成支付二维码,然后提供给用户进行扫码支付。(注意:code_url的值并非固定,使用时按照URL格式转成二维码即可)
1.微信扫码支付接口 (这里是扫码支付的使用场景)
2.请问如何在pc端网站调用微信支付的接口 (1.创建订单并调用微信接口,生成二维码;2、在二维码显示页面,增加个 计时器,每隔X秒,查询一次订单状态;3、客户扫码后,你会收到微信的主动通知,根据通知修改订单状态;4、第2步,检测到订单完成,提示客户支付成功)
4.测试代码
V2版本的创建订单的主要代码:
1 | /** |
1.微信支付 Java 实现(服务器端) (从支付到签名,基本上的逻辑以及主要代码已经给出来了,这里使用了)
2.支付验收指引 (这里在接口中添加了sandboxnew的路由参数,实现了微信支付的测试和验收,也就是能实现全部的微信支付接口,但是不会实现真正的转账和付款操作)
3.微信小程序开发之微信支付(三)微信下单 (微信下单的一个简单的代码)
4.Java WxPayUnifiedOrderRequest.setBody方法代碼示例 (这里组装的WxPayUnifiedOrderRequest更加的详细,但是还是没有签名的信息)
5.错误
微信支付报错提示“商户号该产品权限未开通,请前往商户平台>产品中心检查后重试”
(1) 第一步,关联AppID
- 进入微信支付商户平台->点击产品中心->然后点击AppID账号管理->然后点击关联AppID按钮,将相应的微信公众号的AppID和微信支付进行关联。
- 打开需要关联的微信公众号->选择左侧的菜单栏->选择微信支付->确认绑定
(2) 第二步,修改代码的”trade_type”为”JSAPI”
我打开了商户平台>产品中心,发现了只开通了JSAPI,像APP等都没有开通,我猜是不是这个trade_type参数就是指示了支付的类型呢,于是我将代码修改为JSAPI
1 | // 源代码 |
返回的结果果真不一样了。
1.微信支付报错提示“商户号该产品权限未开通,请前往商户平台>产品中心检查后重试”
2.账号关联(AppID绑定) (这里是官方说明账号关联的途径,我找这个微信支付还找了好久了,就在左侧)
3.参数规定 (这里有参数类型的规定,说明了如何传递trade_type参数)