微信H5支付&退款【一】

一,什么是H5支付?

官网定义:通过微信可以实现在非微信浏览器(例如:谷歌浏览器、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、请求参数如下:

微信H5支付&退款【一】_第1张图片

微信H5支付&退款【一】_第2张图片

微信H5支付&退款【一】_第3张图片

四、退款概述(需要证书)

 1、微信支付接口中,涉及资金回滚的接口会使用到商户证书,包括退款、撤销接口。商家在申请微信支付成功后,可以按照以下路径下载:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->证书下载 。

☆☆☆证书:

微信H5支付&退款【一】_第4张图片

 API证书及秘钥使用:   http://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html

 

2、API接口:https://api.mch.weixin.qq.com/secapi/pay/refund

3、请求参数如下:微信H5支付&退款【一】_第5张图片

微信H5支付&退款【一】_第6张图片
五、常见问题

 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、其他

微信H5支付&退款【一】_第7张图片

原因:① 商户侧统一下单传的终端IP(spbill_create_ip) 与用户实际调起支付时微信检测到的终端IP不一致导致的

          ②  统一下单与调起支付时的网络有变动,(比如下单时是WIFI网络,下单后切换成4G网络再调起支付,这样可能会引发微信的正常拦截,请保持网络一致的情况下重新发起支付流程)

微信H5支付&退款【一】_第8张图片

原因:①当前调起H5支付的referer为空导致,一般是因为直接访问页面调起H5支付,应按正常流程进行页面跳转后发起支付。

          ②如果是APP里调起H5支付,需要在webview中手动设置referer,如(Map extraHeaders = new HashMap();
extraHeaders.put("Referer", "商户申请H5时提交的授权域名");//例如 http://www.baidu.com ))

 

 

 

 

 

 

你可能感兴趣的:(微信H5支付&退款【一】)