官网定义:通过微信可以实现在非微信浏览器(例如:谷歌浏览器、Safari、360浏览器等)中使用微信支付的场景。说白了就是在微信外的所有浏览器来点击“微信支付”然后自动唤起微信客户端来支付。
1、申请入口:登录商户平台-->产品中心-->我的产品-->支付产品-->H5支付
2、浏览开发文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1,这里面几乎介绍了全部流程。
3、在微信公众平台和微信商户平台拿到或配置一下参数:
appid:公众平台的appid
商户号:公众平台的商户号
appsecrut:商户平台里的签名密钥(这个要保存好,现在不支持查看,忘了就得重新配置了)
商户支付密钥Key:api_key 审核通过后,在微信发送的邮件中查看
1、API接口:https://api.mch.weixin.qq.com/pay/unifiedorder
2、请求参数如下:
1、微信支付接口中,涉及资金回滚的接口会使用到商户证书,包括退款、撤销接口。商家在申请微信支付成功后,可以按照以下路径下载:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->证书下载 。
☆☆☆证书:
API证书及秘钥使用: http://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html
2、API接口:https://api.mch.weixin.qq.com/secapi/pay/refund
1、回调页面
正常流程用户支付完成会返回至发起支付的页面,如需返回至指定页面,则可以在mweb_url后面拼接上redirect_url参数,来指定回调页面。
举个栗子:
假设您通过统一下单接口获到的MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096
则拼接后的地址为MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn
注意:
1.需对redirect_url进行urlencode处理
2.由于设置redirect_url后,回跳指定页面的操作可能发生在:1,微信支付中间页调起微信收银台后超过5秒 2,用户点击“取消支付“或支付完成后点“完成”按钮。因此无法保证页面回跳时,支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作
2、其他
①
原因:① 商户侧统一下单传的终端IP(spbill_create_ip) 与用户实际调起支付时微信检测到的终端IP不一致导致的
② 统一下单与调起支付时的网络有变动,(比如下单时是WIFI网络,下单后切换成4G网络再调起支付,这样可能会引发微信的正常拦截,请保持网络一致的情况下重新发起支付流程)
②
原因:①当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,应按正常流程进行页面跳转后发起支付。
②如果是APP里调起H5支付,需要在webview中手动设置referer,如(Map extraHeaders = new HashMap();
extraHeaders.put("Referer", "商户申请H5时提交的授权域名");//例如 http://www.baidu.com ))