微信h5支付-微信H5支付流程

admin2年前生活百科23
󦘖

微信号

KTV115116

添加微信

本文目录一览:

微信H5支付流程

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

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

3、统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名“mweb_url”),商户通过mweb_url调起微信支付中间页

4、中间页进行H5权限的校验,安全性检查(此处常见错误请见下文)

5、如支付成功,商户后台会接收到微信侧的异步通知

6、用户在微信支付收银台完成支付或取消支付,返回商户页面(默认为返回支付发起页面)

7、商户在展示页面,引导用户主动发起支付结果的查询

8,9、商户后台判断是否接收到微信侧的支付结果通知,如没有,后台调用我们的 订单查询接口 确认订单状态(查单实现可参考: 支付回调和查单实现指引 )

10、展示最终的订单支付结果给用户

常见问题

一、回调页面

正常流程用户支付完成后会返回至发起支付的页面,如需返回至指定页面,则可以在MWEB_URL后拼接上redirect_url参数,来指定回调页面。

如,您希望用户支付完成后跳转至 ,则可以做如下处理:

假设您通过统一下单接口获到的MWEB_URL= ;package=1037687096

则拼接后的地址为MWEB_URL= ;package=1037687096redirect_url=https%3A%2F%2F

注意:

1.需对redirect_url进行urlencode处理

2.由于设置redirect_url后,回跳指定页面的操作可能发生在:

a、微信支付中间页调起微信收银台后超过5秒

b、用户点击“取消支付”或支付完成后点击“完成”按钮。因此无法保证页面回跳时,支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作。回跳页面展示效果可参考下图

二、其它常见错误

| 网络环境未能通过安全验证,请稍后再试 | 1. 商户侧统一下单传的终端IP(spbill_create_ip)与用户实际调起支付时微信侧检测到的终端IP不一致导致的,这个问题一般是商户在统一下单时没有传递正确的终端IP到spbill_create_ip导致,详细可参见 客户端ip获取指引

2. 统一下单与调起支付时的网络有变动,如统一下单时是WIFI网络,下单成功后切换成4G网络再调起支付,这样可能会引发我们的正常拦截,请保持网络环境一致的情况下重新发起支付流程

|

| 2 |

| 商家参数格式有误,请联系商家解决 |

1. 当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空

2. 如果是APP里调起H5支付,需要在webview中手动设置referer,如(

Mapstring extraHeaders = new HashMapstring();

extraHeaders.put("Referer", "商户申请H5时提交的授权域名");//例如 )/string/string

|

| 3 |

| 商家存在未配置的参数,请联系商家解决 | 1,当前调起H5支付的域名(微信侧从referer中获取)与申请H5支付时提交的授权域名不一致,如需添加或修改授权域名,请登录商户号对应的【商户平台-产品中心-开发配置】自行配置

2,如果设置了回跳地址redirect_url,请确认设置的回跳地址的域名与申请H5支付时提交的授权域名是否一致 |

| 4 |

| 支付请求已失效,请重新发起支付 | 统一下单返回的MWEB_URL生成后,有效期为5分钟,如超时请重新生成MWEB_URL后再发起支付 |

| 5 |

| 请在微信外打开订单,进行支付 | H5支付不能直接在微信客户端内调起,请在外部浏览器调起 |

| 6 |

| IOS:签名验证失败

安卓:系统繁忙,请稍后再试 | 1,请确认同一个MWEB_URL只被一个微信号调起,如果不同微信号调起请重新下单生成新的MWEB_URL

2,如MWEB_URL有添加redirect_url,请确认参数拼接格式是否有误,是否有对redirect_url的值做urlencode,可对比以下例子格式:

;package=1037687096redirect_url=https%3A%2F%2F |

|

|

| 7 |

| 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决 | 统一下单中 spbill_create_ip 字段必须为客户端IP地址 |

三、QA

Q1:

1、传递redirect_url safari浏览器时支付完成后会新开一个页面;

2、还有就是有些ios手机使用其他浏览器支付完成后默认会回到safari浏览器。

A1:

1、目前逻辑就是这样设计的,防止商户无限循环调用微信客户端

2、对的,返回需要浏览器的schema信息,部分浏览器隐藏了这个信息,在无法拿到schema信息的情况下,就会回到safari浏览器

h5微信支付功能封装

因为各种原因吧,我们在做移动端开发的时候,涉及到money,我们经常要做微信支付。如果是做小程序开发,我们可以直接用小程序的原生接口,一键搞定,如果是h5网页的话,那我们就需要使用微信提供的js-sdk了。

注:使用了jssdk不是所有的环境都可以调用微信来支付,它只是单纯的微信环境下支付,如果要想支持非微信浏览器内支付,需要开通微信h5支付功能,我们现在用的都是微信的JSAPI支付,而微信的h5支付是要求商户已有H5商城网站,并且已经过ICP备案。哈哈哈哈,是不是很惊讶!太坑了呀!

虽然坑,还得用,那咱就搞一下它。

首先,打开我们的微信公众平台,阅读一下网页开发的基本要求

然后我们了解到,使用js-sdk,我们先要

然后呢,这里给你们讲一下,我们接下来要做的事情。

首先呢,我们要先要获得网页授权,然后我们跳转我们项目中的业务页面。

这里主要是appid和重定向页面,至于是否弹出授权页面(scope=snsapi_userinfo/snsapi_base )等等,根据你自己需求来。然后呢,我们通过这个来进入页面的时候,在当前你支付页面的url上会有授权后返回的code参数。

如果提示:调用支付jsapi缺少参数: 这是由于没拿到openid导致,可以把window.location.href 替换成window,location.replace() ,这是因为微信网页授权会2次刷新页面,我们这样做能有效避免错误。

然后呢,我们定义一个方法

通过 let code = this.getQueryString('code'),我们去调用后端提供的接口,来获取openId。我们的支付不需要我去另外获取openId了,同学们自行卑微的通过接口用code换取openId吧

要注意的是,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期 。

然后我们接下来就是我们真正进行支付操作的时刻了

到这里,我们的微信支付基本就是完成了.其实整体做下来我们发现,无非是比把大象装冰箱里多两步而已

然后我们把我们封装的接口用起来

到此,一个完整的h5微信支付就完成了。下一次,我们把微信分享也添加进来。这样,一个我们常用的基于微信SDK的支付分享功能就被我们完成了。如果觉得对你有帮助的话,帮作者点个赞吧,码文不易,点一下支持支持!谢谢您嘞!

iOS-APP实现微信H5支付总结

1、发起下单请求( 调用统一下单接口 )注:交易类型trade_type=MWEB

2、统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名“mweb_url”),商户通过mweb_url调起微信支付中间页。如: ;package=600759311redirect_url=http%3a%2f%2

3、中间页进行H5权限的校验,安全性检查( 具体错误见微信官方文档 )

4、如果权限校验成功,微信支付中间页会发起支付请求。请求完毕跳到回调页面(由redirect_url决定)。APP需要在webView中监听这个请求,打开微信进行支付。如: weixin://wap/pay?prepayid%3Dwx2718114258281033efb8751f1574826586package=2965581453noncestr=1545905512sign=cb0f6dbd067549a04aada9c3eef09aac

5、微信支付完毕跳回APP。

HTTP Referer是header的一部分,当浏览器向web服务器发起请求的时,一般会带上Referer,告诉服务器我是从哪个页面链接过来。微信中间页会对Referer进行校验,非安全域名将不能正常加载。

redirect_url是微信中间页唤起微信支付之后,页面重定向的地址。中间页唤起微信支付后会跳转到指定的redirect_url。并且微信APP在支付完成时,也是通过redirect_url回调结果,redirect_url一般是一个页面地址,所以微信支付完成会打开Safari浏览器。本文通过修改redirect_url,实现微信支付完毕跳回当前APP。

需要将微信H5支付的安全域名配置成scheme,微信支付完成会通过这个scheme跳转回APP。

再shouldStartLoadWithRequest:方法里面拦截微信中间页(以“ ”开头的请求),截取redirect_url,如果redirect_url已经被替换成scheme不拦截,如果没有被替换,拦截请求,保存当前的redirect_url。创建一个新的微信中间页请求,将redirect_url替换成“安全域名://”(微信支付完毕会通过openURL打开当前APP,如果不替换redirect_url,微信支付完毕会打开Safari浏览器。)。设置“Referer”为安全域名(微信会校验Referer,不是安全域名会加载失败),重新load请求。

微信中间页加载成功后,会收到一个打开微信的请求,用openURL:打开这个url实现跳转到微信支付。

微信中间页跳转到微信时,会将页面从定向到redirect_url,由于redirect_url被我们修改为scheme,所以需要拦截这个非法的scheme请求,替换成记录下的redirect_url。

以UIWebView为例

还有一篇文章讲的是H5支付封装,H5支付不仅可以在网页上使用,原生也可以调用。具体内容见: iOS-H5支付(微信、支付宝)原生封装

微信h5支付和jsapi支付的区别

1、含义不同。

微信h5支付:是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。

jsapi支付:以绑定银行卡的快捷支付为基础的支付。

2、支付方式不同。

微信h5支付:h5支付是用在公众号内。

jsapi支付:jsapi支付是网页发起的微信支付请求。

3、功能不同。

微信h5支付:可以在手机网站内直接支付,为移动支付方式,简单快捷。

jsapi支付:仅可以在微信浏览器内发起支付,比如公众号内的网页和微信小程序,略微麻烦。

参考资料来源:微信支付-普通商户接入

H5在微信小程序及公众号中的支付

为了解决在公众号支付和在小程序中支付问题,写了个js工具文件,根据当前环境执行不同的支付方法(以小程序支付流程为主)

在小程序支付中,需要注意两个地方,第一是由于package='prepay_id=XXX'传到小程序时会导致数据接收不完全,所以就只传XXX,‘prepay_id=’由小程序那边拼接上了;第二点是‘/pages/Pay/Pay’是与小程序约定的处理支付功能的页面,需要对应着。

在需要调用的文件用引入【import {payTool} from './PayTool.js';】,并在获取订单信息后,传入订单信息,发起支付流程【payTool(payParam);】

在小程序中获取订单信息

根据微信小程序支付说明文档使用接收的参数调取支付功能

2024.12.24补充

刚学到还有个qs可以用,,,

1、npm install qs

2、var qs = require('qs')

3、不需要对package进行修改,直接传参即可。 小程序那边也不需要再处理了

标签: 微信h5支付

相关文章

隔夜要闻:美股收低 标普下破4200 科技股领跌 谷歌季报带崩股价 30年期美债重上5% 土耳其股指盘中熔断重挫

隔夜要闻:美股收低 标普下破4200 科技股领跌 谷歌季报带崩股价 30年期美债重上5% 土耳其股指盘中熔断重挫

  欲览更多环球财经资讯,请移步7×24小时实时财经新闻   市场   收盘:标普指数跌破4200点关口 纳指创2月以来最大单日跌幅   10月25日美股成交额前20:谷歌云收入增速放缓,股价重挫近...

恒大集团有限公司新增被执行人信息 执行标的合计3.5亿余元

转自:金融界 本文源自:观点网 观点网讯:10月16日,天眼查App显示,恒大集团有限公司新增2条被执行人信息,执行标的合计3.5亿余元,立案日期为10月12日。 观点新媒体获悉,执行法院为南昌市中级...

一阳穿四线,趋势反转还是下跌中继?看立中集团7次回测数据nn

一阳穿四线,趋势反转还是下跌中继?看立中集团7次回测数据nn

策略之王发现,2024年07月18日收盘立中集团出现一阳穿四线(出水芙蓉)形态,是捕捉股价底部启动很好的参照物。点击咨询立中集团如何操作? 股票市场中有人把一阳穿四线的大阳线称之为“出水芙蓉”,具有扭...

湖北车牌简称-湖北车牌简称什么?

湖北车牌简称-湖北车牌简称什么?

本文目录一览: 1、湖北车牌简称什么? 2、湖北的车牌简称 3、湖北省车牌缩写是什么? 湖北车牌简称什么? 湖北省的车牌简称是“鄂”。以下是湖北省各地区车牌首字母:A 武汉市 B 黄石市 C...

美股部分明星科技股走低 特斯拉跌1%

美股部分明星科技股走低 特斯拉跌1%

来源:格隆汇 格隆汇5月15日丨特斯拉跌1%,奈飞、亚马逊、苹果、谷歌等股均有跌幅。...

东莞农商行、东莞银行董事长同日官宣辞职,背后是何原因?

东莞农商行、东莞银行董事长同日官宣辞职,背后是何原因?

  因银行业关键岗位任职期限的监管规定,东莞两家银行的董事长几乎在相同时间辞职。   4月28日,东莞农商银行(09889.HK)发布公告称,为满足有关银行业关键岗位任职期限的监管规定,根据组织工作安...

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!