1.调用统一下单的接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder

2.调用统一下单必传参数:

  appid:需要进行支付功能的公众号的appId

  mch_id:微信分配的商户号

  nonce_str:随机字符串,自己生成,要求在32位以内,微信官方文档推荐方式是调用随机数函数生成,将得到的值转换为字符串,主要用于保证签名不可测

  sign:签名,通过签名算法生成,使用md5进行加密

  body:商品描述,自定义,如对什么进行付款

  out_trade_no:随机单号,要求是32个字符内,只能是数字、大小写字母_-|* 且在同一个商户号下唯一

  total_fee:支付的金额,注意是以分为单位

  spbill_create_ip:客户请求的地址

  notify_url:你的回调地址

  trade_type:交易类型,这里微信公众号支付为:JSAPI

3.其他可能需要但是非必传的参数:

  sign_type:签名类型,默认是md5,还支持HMAC-SHA256

  attach:此参数可自行传String类型的值,支付成功后微信会原样返回

  参考微信官方api文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

4.调用统一下单之前先获取sign签名:

这里的generateSignature方法,只需要将传过去的集合遍历,按顺序用字符串拼接好,再进行md5的加密即可

5.调用统一下单:

把前面包含了sign的集合转成xml再用post的方式请求统一下单,返回统一下单的xml

<xml>
<appid>你的appId</appid>
<mch_id>你的商户Id</mch_id>
<nonce_str>70beD14citQ9QVXReoS6o032S00pTUvW</nonce_str>
<sign>7223ADBF584548B313EEACA0E11F77ED</sign>
<body>测试付款</body>
<out_trade_no>1310433801201812119763998320</out_trade_no>
<total_fee>1</total_fee>
<spbill_create_ip>客户请求的地址</spbill_create_ip>
<notify_url>回调地址</notify_url>
<trade_type>JSAPI</trade_type>
<attach>931</attach>
<openid>o4vANuJk1m7jSAwP67gqu6GMGSsA</openid>
</xml>

然后把返回的xml转成集合传到页面用于唤起H5的支付,之后进行二次签名,这个需要用appId,timeStamp,nonceStr,package,signType,paySign参数重新获取签名,这里注意在将xml转map的时候,微信公布的XEE的漏洞,如果是使用微信支付的sdk,那只需要更新就行。

页面唤起h5支付得代码(直接使用微信文档里面得,把值改成自己后台传过来得值就行):

后续再写微信浏览器外得H5支付......

微信公众号内唤起h5支付详解的更多相关文章

  1. Vue — 微信公众号内置h5支付相关

    首先,在公众号后台配置h5页面地址 开发流程 1.通过配置h5地址,获取code.再通过code,获取openid getOpenid(){ let url = 'https://open.weixi ...

  2. 微信公众号内H5调用微信支付国内服务商模式

    最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP ...

  3. 微信公众开发URL和token填写详解

    微信公众开发URL和token填写详解 方法/步骤     作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服 ...

  4. JAVA微信支付——微信公众号内支付 代码

    官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 微信PC二维码支付方式参考:https://www.cnblogs. ...

  5. 微信公众号中的支付宝支付与微信支付 && 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  6. asp.net mvc下实现微信公众号(JsApi)支付介绍

    本文主要讲解asp.net mvc框架下公众号支付如何实现,公众号支付主要包括三个核心代码,前台调起支付js代码.对应js调用参数参数生成代码.支付成功处理代码. 一.微信支付方式介绍 微信提供了各种 ...

  7. 关于微信公众号内嵌网页的几个meta标签

    最近在做微信公众平台内嵌app,其实也就是web app="=,不过就是基于微信内置浏览器(safari加了一个WeixinJS对象),稍微记一下几个html的meta标签(web app通 ...

  8. 微信公众号开发之H5页面跳转到指定的小程序

    前言: 最近公司有一个这样的需要,需要从我们在现有的公众号H5页面中加一个跳转到第三方小程序的按钮.之前只知道小程序之间是可以相互跳转的,今天查阅了下微信开发文档原来现在H5网页也支持小程序之间的跳转 ...

  9. 【转】微信公众开发URL和token填写详解

    很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写.看了教程也不理解是什么,本文详述一下这个问题. 第一步:作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见 ...

随机推荐

  1. 重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下

    1.先看下整体效果 2.前端代码 <UserControl x:Class="iPIS.UI.Base.Tree.ImageTreeControl" xmlns=" ...

  2. CEF3编译添加mp4支持(对应CefSharp63.0.3),chromium63(3239),附release下载

    编译环境需求(3239版本) win7或更高,64位 vs2017 15.3.2+ 默认位置安装 不需要安装附带的win10sdk,sdk单独装 Windows 10.0.15063.468 SDK ...

  3. Android sharedUserId 和系统权限

    sharedUserId 给不同的应用使用同一个 sharedUserId 可以运行在这几个应用间互相访问数据(数据库,SharedPreferences,文件). sharedUserId 一旦使用 ...

  4. 关于错误 openssl/ssl.h:没有那个文件或目录的解决办法

    原文链接:https://blog.csdn.net/kulala082/article/details/68484314 首先得安装openssl:sudo apt-get install open ...

  5. 小猴打架(luogu4430)(数论+生成树计数)

    一开始森林里面有\(N\)只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过\(N-1\)次打架之后,整个森林的小猴 ...

  6. [学习笔记]树形dp

    最近几天学了一下树形\(dp\) 其实早就学过了 来提高一下打开树形\(dp\)的姿势. 1.没有上司的晚会 我的人生第一道树形\(dp\),其实就是两种情况: \(dp[i][1]\)表示第i个人来 ...

  7. ssh登录时在参数中加入密码的解决方案

    在使用ssh登录远程服务器的时候,在执行完ssh user@ip后,要输入登录密码,有时候登录密码记不住,这样以来Ian带来的很多的麻烦,有没有一种在ssh的参数中直接加入密码的方法呢?查看ssh的帮 ...

  8. updateByPrimaryKey 和 updateByPrimaryKeySelective

    1. 数据库记录 2. updateByPrimaryKey Preparing: UPDATE t_token_info SET entity_id = ?,entity_type = ?,time ...

  9. cmd命令关闭占用程序的端口

    遇到的问题: 在重新启动tomcat服务时,启动失败,显示的信息大概为:Error running 'cus_manager_system': Unable to open debugger port ...

  10. VS2013 编辑器

    1. VS -> 本地Git -> Github 1. 右键单击解决方案,选择“将解决方案添加到源代码管理器”,选择Git 2. 切换到团队资源管理器([菜单]视图->团队资源管理器 ...