本文介绍微信支付下的H5支付实现流程。

一、介绍

H5支付是基于公众号基础开发的一种非微信内浏览器支付方式(需要单独申请支付权限),可以满足在微信外的手机H5页面进行微信支付的需求。。

测试地址

http://wxpay.weixin.qq.com/pub_v2/pay/wap.v2.php

http://wxpay.weixin.qq.com/mch/pay/h5.v2.php

效果图

流程图

二、商品信息准备

主要是先定义商品的名称及价格,以及交易号。代码如下。

include_once("../WxPayPubHelper/WxPayPubHelper.php"); //使用统一支付接口

$unifiedOrder = new UnifiedOrder_pub();

//设置统一支付接口参数

//设置必填参数

//appid已填,商户无需重复填写

//mch_id已填,商户无需重复填写

//noncestr已填,商户无需重复填写

//spbill_create_ip已填,商户无需重复填写

//sign已填,商户无需重复填写

$unifiedOrder->setParameter("body","H5支付测试");//商品描述

$timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号

$unifiedOrder->setParameter("total_fee","1");//总金额

//$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址

$unifiedOrder->setParameter("trade_type","WAP");//交易类型

//非必填参数,商户可根据实际情况选填

$unifiedOrder->setParameter("device_info","100001");//设备号

上述参数最终封装成如下类似XML参数

1

//

100001

1237905502

2. 调用统一支付请求

将上述XML发送给统一支付接口

https://api.mch.weixin.qq.com/pay/unifiedorder

得到如下XML数据

这样就得到一个prepayid

二、DeepLink

商户server调用统一下单接口请求订单,api参见公共api【统一下单】(接口中trade_type需定义为WAP),微信会返回给商户prepayid,商户按固定格式生成deeplink,通过用户点击deeplink来调起微信支付。

deeplink格式:

weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3D123%26prepayid%3Dwx20141203201153d7bac0d2e10889028866%26sign%3D6AF4B69CCC30926F85770F900D098D64%26timestamp%3D1417511263

生成deeplink 的步骤如下:

步骤1:按URL 格式组装参数, $value 部分进行URL 编码,生成string1:

string1 : key1=Urlencode($value1)&key2=Urlencode($value2、&...

步骤2:对string1 作整体的Urlencode,生成string2:

String2=Urlencode(string1);

步骤3:拼接前缀,生成最终deeplink

举例如下:

String1:

appid=wxf5b5e87a6a0fde94&noncestr=123&package=WAP&prepayid=wx201412101630480281750c890475924233&sign=53D411FB74FE0B0C79CC94F2AB0E2333&timestamp=1417511263

再对整个string1 做一次URLEncode

string2:

appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263

再加上协议头weixin://wap/pay? 得到最后的deeplink

weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263

字段名变量名必填类型示例值描述

公众账号IDappid是String(32)wx8888888888888888微信分配的公众账号ID

随机字符串noncestr是String(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法

订单详情扩展字符串package是String(32)WAP扩展字段,固定填写WAP

预支付交易会话标识prepayid是String(64)wx201410272009395522657a690389285100微信统一下单接口返回的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时

签名sign是String(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法

时间戳timestamp是String(32)1414561699当前的时间,其他详见时间戳规则

开发文档:https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1

三、新版流程

1、用户在商户侧完成下单,使用微信支付进行支付

2、由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB

3、微信支付校验商户权限

4、统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名“mweb_url”,即流程图中的微信中转页面地址)

5、商户后台收到统一下单接口返回参数,将mweb_url返回给前端

6、商户通过前端页面访问微信中转页面mweb_url(此步骤微信支付会校验refer,以判断请求来源是否合法)

7、由中转页面mweb_url主动唤起微信支付收银台

8、微信支付收银台被唤起同时关闭mweb_url中转页面

9、用户在微信支付收银台完成支付

更多微信支付开发H5支付相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php wap微信h5支付接口,微信支付开发H5支付相关推荐

  1. php银联支付接口 demo,php版银联支付接口开发简单实例详解

    这篇文章主要介绍了php版银联支付接口开发的方法,结合实例形式分析了php银联支付接口开发的具体流程与相关操作技巧,需要的朋友可以参考下 支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍 ...

  2. springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证

    转:springmvc开发微信公众号接口 微信公众号测试账号配置接口Token验证 开发前必读以及准备工作: 1.微信公众平台开发是指为微信公众号进行业务开发,为移动应用.PC端网站.公众号第三方平台 ...

  3. php h5微信公众号支付接口,微信公众号H5支付接口调用方法

    本文实例为大家分享了 微信内h5调用支付接口的具体代码,供大家参考,具体内容如下 官方文档 微信公众号h5接口调用 // 判断微信版本是否在5.0以上 // window.navigator.user ...

  4. 个人申请微信H5支付接口(个人免签约支付平台)

    以下仅对企业开放的,如果个人想要申请 转到网址狸云支付 - 行业领先的免签约支付平台,提供微信支付接口,支付宝H5支付接口,个人支付接口申请,二维码支付接口​http://www.alywlzf.co ...

  5. 微信支付接口,提示:调用支付jsapi缺少参数: $key0$

    下面是 官方给的 帮助文档. 支付返回签名错误 注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合.以下链接为签名过程. (https://pay.weix ...

  6. php微信统一公众号支付接口,微信公众号支付怎么实现统一下单接口

    微信公众号支付怎么实现统一下单接口 发布时间:2021-03-12 09:44:45 来源:亿速云 阅读:89 作者:小新 这篇文章将为大家详细讲解有关微信公众号支付怎么实现统一下单接口,小编觉得挺实 ...

  7. 第三方银联支付接口对接_聊聊三方支付对接那点事儿(附Demo)

    每一个做过支付对接的少年上辈子都是折翼的天使.--题记 三方支付对接是一件比较有意思的事儿,今天就拿这个话题来掰扯掰扯.相信每个做过支付对接的小伙伴都有段血与火的经历,那段日子只有痛苦与煎熬,恨不得大 ...

  8. 支付宝支付接口_美团取消支付宝支付接口,支付大战硝烟又起!

    用户在使用美团支付时发现,支付宝支付被取消了,美团月付和银行卡支付占据优先位置,而微信支付和Apple pay还在支付选择列表上.值得注意的是,支付宝母公司蚂蚁集团刚宣布要上市. 一时间," ...

  9. ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试

    1.新建.NET Core web项目 2.Controllers-Models-Views 分三个大部分 3.下载安装最新sdk 官方的SDK以及Demo都还是.NET Framework的,根据官 ...

  10. PHP检查微信域名屏蔽接口,微信域名检测API接口,实时查询域名是否被微信拦截...

    微信域名检测API接口的应用场景: 由于微信对外部链接内容规范比较严格,所以可能一不小心就会被判定为是违反内容规范的,或被同行恶意举报投诉之类的. 那么此时就要用到微信域名检测接口,实时检测域名的状态 ...

最新文章

  1. “12306” 是如何支撑百万 QPS 的?
  2. 量子计算和量子模拟研究获进展
  3. 微信利用PHP创建自定义菜单的方法
  4. java概念,Java基础概念
  5. HttpClient调用http接口(POST)
  6. ListView 搜索函数
  7. Linux系统各个目录的一般作用
  8. atitit.编程语言 类与对象的 扩展机制.doc
  9. Win10安装.net framework 4.0已是操作系统一部分//手误删掉.NET Framework 4 Multi-Targeting Pack
  10. zblog php 首页经常被篡改,浏览器首页经常被篡改,这样设置,自己也改不掉!...
  11. IETester汉化文件下载
  12. JSP七动作---<jsp:setProperty>
  13. net start mysql启动mysql,提示发生系统错误5拒绝访问解决方法
  14. 泰拉瑞亚 (Terraria v1.4.1.2) ---PC
  15. 扣哒世界CodeCombat:少儿编程的“传道、授业、解惑”-环球网
  16. oracle pfm,多平台监控管理 日立JP1/PFM 性能详解
  17. edge浏览器怎么设置activex_微软Edge浏览器将不再支持ActiveX等老技术
  18. 敌兵布阵(hdu-1166)
  19. illustrator插件--常用功能开发--绘制手提袋--js脚本开发--AI插件
  20. 搜索引擎与爬虫结合的示例:书虫找书

热门文章

  1. 计算机教室验收结果报告模板,课题结题验收总结报告powerpoint演示文稿.ppt
  2. 更改Edge浏览器缓存位置
  3. vs2010开发android教程,用Visual Studio 2010开发Android应用
  4. 软件评测师教程书本对软考的作用有多大?
  5. python模板匹配_python实现模板匹配
  6. 【口令破解】远程口令破解和本地口令破解(crunch 字典工具和hydra工具)
  7. flash mx拖拽实例_Flash MX 2004片段面板预览
  8. 极品抓鸡36课------8080端口入侵笔记
  9. Java学习笔记(一)
  10. 25个最好免费下载电子书(Ebooks)的网站