记录H5支付

433 阅读3分钟

一、H5支付类型

  • 微信支付
  • 支付宝支付

二、H5支付分以下几种情况

  • 微信内部浏览器打开
  • 非微信内部浏览器打开
  • App 里内嵌 H5

三、支付文档

四、微信支付

WeixinJSBridge.invoke(
	'getBrandWCPayRequest', 
	{
         "appId":"wx2421b1c4370ec43b",     //公众号ID,由商户传入     
         "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信签名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
	},
    function(res){
    	if(res.err_msg == "get_brand_wcpay_request:ok" ){
    	    // 使用以上方式判断前端返回,微信团队郑重提示:
            // res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
            // 返回成功页面
    	} else {
            // 支付失败
        }
   }
); 
  • H5 支付,非微信内部浏览器

    H5 支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于在手机、ipad等移动设备中通过浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。

  • 微信支付时序图 7_2.png

  • 注意事项:

    (1)微信支付成功后,需要拿到订单支付状态,这个状态,微信那边是异步通知到商户的,所以前端页面上可能出现 支付成功,但订单状态仍是待支付 问题,需要前端主动查询订单状态,设置定时器测试 官方支付回调和查单实现指引

    (2)若支付过程中提示 当前页面的URL未注册, 请检查下单接口中使用的商户号是否在商户平台(pay.weixin.qq.com)配置了对应的支付目录(可能没有在微信支付商户平台配置支付,请前往配置,注意配置时的协议[http,https]与调用支付的协议是否一致);

五、支付宝支付

  • 微信内置浏览器,引导页,引导用户在外部浏览器打开,页面重定向

1. 微信内置浏览器

微信内置浏览器只支持微信支付,如果想在微信内置浏览器进行支付宝支付,是不现实的,但是可以通过一个引导页,引导用户在外部浏览器打开该页面,在外部浏览器打开后,H5可以做两种方式(一种是在外部浏览器打开该页面后进行重定向,另一种是用户主动点击按钮实现重定向)以唤起支付宝APP进行支付。这里,唤起支付宝APP支付,可以不用支付宝开通商户号,支付宝提供了一个虚拟的商户号供没有商户号的使用(当然能开通商户号尽量开一个),使用如下:

alipays://platformapi/startapp?appId=20000067&url=' + decodeURIComponent(getQueryString('toUrl'))