JavaEE 微信支付
发布日期:2021-08-25 15:35:19 浏览次数:15 分类:技术文章

本文共 2057 字,大约阅读时间需要 6 分钟。

微信境内支付包括:

  • App支付
  • 公众号支付
  • 小程序支付
  • H5 支付
  • 扫码支付
  • 刷卡支付

除刷卡支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。

1. 常用API 列表

  1. 统一下单(提交刷卡支付)
  2. 查询订单
  3. 关闭订单
  4. 申请退款
  5. 查询退款
  6. 下载对账账单
  7. 下载资金账单
  8. 支付结果通知
  9. 退款结果通知

2. 微信支付接口请求大致流程

  1. 封装请求参数
  2. 将请求参数进行sort()
  3. 对排序好的参数进行trim()
  4. 将参数拼接为正确顺序的uri并加入key(秘钥)到最后
  5. 将uri进行签名得到sign
  6. 将参数以及sign(排除秘钥)按顺序转为xml
  7. 请求对应接口(统一下单等)
  8. 响应时也是xml格式
  9. 转换xml为Map格式
  10. 校验returnCode和resultCode

3. 常用API中的区别点

3.1 刷卡支付

1.下单非统一下单,而是提交刷卡支付,即请求的url和其他几种都不同。

  • 刷卡请求url:https://api.mch.weixin.qq.com/pay/micropay
  • 其他统一下单url:https://api.mch.weixin.qq.com/pay/unifiedorde

2.提交刷卡支付参数中不能携带参数有以下:(其他类型支付均可)。

名称 变量名 必填 类型 示例值 描述
交易类型 trade_type String(16) JSAPI JSAPI 公众号支付 NATIVE 扫码支付 APP APP支付
用户标识 openid String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换
通知地址 notify_url String(256) http://www.weixin.qq.com/wxpay/pay.php 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。

3.2 授权码

提交刷卡支接口需要:auth_code.

名称 变量名 必填 类型 示例值 描述
授权码 auth_code String(128) 120061098828009406 扫码支付授权码,设备读取用户微信中的条码或者二维码信息(注:用户刷卡条形码规则:18位纯数字,以10、11、12、13、14、15开头)

3.3 H5支付

注⚠️:提醒:H5支付不建议在APP端使用,如需要在APP中使用微信支付,请接APP支付

名称 变量名 必填 类型 示例值 描述
场景信息 scene_info String(256)
  1. 示例值
//IOS移动应用{
"h5_info": {
"type":"IOS","app_name": "王者荣耀","bundle_id": "com.tencent.wzryIOS"}}//安卓移动应用{
"h5_info": {
"type":"Android","app_name": "王者荣耀","package_name": "com.tencent.tmgp.sgame"}}//WAP网站应用{
"h5_info": {
"type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}} 该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题复制代码
  1. 描述.

1,IOS移动应用

{"h5_info": //h5支付固定传"h5_info"    {"type": "",  //场景类型     "app_name": "",  //应用名     "bundle_id": ""  //bundle_id     }}复制代码

2,安卓移动应用

{"h5_info": //h5支付固定传"h5_info"    {"type": "",  //场景类型     "app_name": "",  //应用名     "package_name": ""  //包名     }}复制代码

3,WAP网站应用

{"h5_info": //h5支付固定传"h5_info"   {"type": "",  //场景类型    "wap_url": "",//WAP网站URL地址    "wap_name": ""  //WAP 网站名    }}复制代码

4. 微信境外支付

转载地址:https://blog.csdn.net/weixin_33858336/article/details/88000954 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:从自定义Annotation、APT、JavaPoet再到Butterknife原理
下一篇:[译] CSS Grid 之列宽自适应:`auto-fill` vs `auto-fit`

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月06日 14时21分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

mysql分组显示行号_mysql 显示行号,以及分组排序 2019-04-21
MySQL常见的主从复制架构_如何搭建经典的MySQL 主从复制架构 2019-04-21
编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?... 2019-04-21
python 公众号引流_公众号引流方法有哪些? 2019-04-21
java 减少内存_java中减少内存占用小技巧 2019-04-21
centos 7 mysql图形界面_centos7-vnstat图形界面搭建 2019-04-21
java 防渗透_「java、工程师工作经验怎么写」-看准网 2019-04-21
java中跳出当前循环怎么做_在java中,如何跳出当前的多重循环? 2019-04-21
java程序中执行maven_java – 将一个enviornment变量传递给Maven中的已执行进程 2019-04-21
java16下载_java lombok下载 2019-04-21
python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解) 2019-04-21
java安全初始化_java安全编码指南之:声明和初始化 2019-04-21
java jstat gc_分析JVM GC及内存情况的方法 2019-04-21
php pclzip.lib.php,php使用pclzip类实现文件压缩的方法(附pclzip类下载地址) 2019-04-21
php dns更新,php_mzdns: 站群,大量域名 通过 dns 服务商 api 批量添加 ip 工具。你懂的~ 基于 mzphp2 框架。... 2019-04-21
jdk 1.8 java.policy,JDK1.8 导致系统报错:java.security.InvalidKeyException:illegal Key Size 2019-04-21
php linux权限,Linux权限详细介绍 2019-04-21
典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc 2019-04-21
Php contenttype类型,各种类型文件的Content Type 2019-04-21
php使用redis持久化,redis如何持久化 2019-04-21