本文目录一览:
- 1、h5网关支付是什么意思
- 2、app中使用h5支付
- 3、云闪付的h5支付与手机控件的区别
- 4、h5支付通道犯法不
- 5、微信H5支付流程
h5网关支付是什么意思
网关支付 : 是指用户需要开通网上银行后在线完成支付,主要对象是国内主要银行借记卡和信用卡,是银行系统为企业或个人提供的安全、快捷、稳定的支付服务
网关支付也是属于线上支付,但它又不同于前面介绍的互联网支付方式。它属于传统的银行网银支付。一般情况下是符合资质的第三方支付机构提供的一种支付服务。
这些机构后台会接入多家银行,然后在前台放出接口给到商家。交易的时候需要在商家的收银系统上选择银行,然后通过第三方支付机构跳转到对应的银行网银完成支付流程。
app中使用h5支付
因为苹果爸爸的各种封锁与限制,导致 app 中如果集成支付sdk上架会变得十分困难,总之是想办法去抽成。为了应对这种流氓政策,各小 app 公司纷纷偷梁换柱,通过 h5 支付从而绕开 sdk 支付。
常规的什么申请秘钥,配置回调地址等操作全部忽略了,直接进入核心步骤
支付宝的 h5 支付,返回一个 http 链接,是可以直接在 webview 中使用的,url 会重定向最终指向到支付宝的专属协议上。这里建议直接在 app 上直接通过 new webview 方式实现。
通过微信 h5 支付也是可以生成支付链接的,如果我们直接使用这个 url 的话,一定会抛一个错误“商家参数格式有误,请联系商家解决”, 微信支付的错误解决方案 中已经给出了原因,微信在这里校验了 http 请求中的 referer ,我们直接打开 url 请求头中是没有 referer 字段的,最容易想到的是通过 html 中的 a 标签跳转页面,a 标签会默认携带当前页面的主机地址。
所以就写了一个简单的中转页面,逻辑很简单,在中转链接中添加一个 pay_url 字段,pay_url 就是微信 h5 支付生成的链接,需要进行 encode 编码一下,我们可以在 js 里面重新解码,设置 a 标签的 href 熟悉,执行点击进行跳转。
找个服务器或者 oss 将页面放过去,配置一个域名,因为微信的 h5 支付是绑定了一个主域名,二级域名其实都是可以使用,假如最终配置为 pay.abc.com ,那么我们最终的跳转链接为 。
不管是微信支付还是支付宝支付,其实想从浏览器唤醒支付 app,都是通过特有 schema 唤醒的,支付宝的协议是 alipay://,微信的协议是 weixin://,其实和 http 协议一样,例如: ,浏览器会捕获 http 协议,支付宝和微信都会捕获属于自己的协议,这一点不管在 android 还是 ios 上,也正是利用了这一点,才使我们 app 中唤醒支付宝或者微信成为可能。当然后面很可能也被限制,在将来相当长的一段时间是不会的,正是这些协议使得 h5 和 app 进行交互才使得如今移动操作系统更加繁荣。
云闪付的h5支付与手机控件的区别
支付方式、功能。
1、云闪付H5支付是中国银联推出的移动端网页支付产品,控件支付支持云闪付付款平台购物付款时,有多种付款选项,其中有“云闪付”或“银联云闪付”付款选项。
2、控件支付具有收付款功能,而H5支付没有收款功能,可以通过银行卡进行安全的、便捷的即时支付。
h5支付通道犯法不
不犯法。
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。
操作的时候需要登陆微信商户平台之后,点击产品中心==我的产品==H5支付,进入新页面后点击申请开通即可。
微信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浏览器