微信内置h5浏览器 JSAPI 支付 |
您所在的位置:网站首页 › psapp微信支付 › 微信内置h5浏览器 JSAPI 支付 |
目录 JSAPI 支付流程 简介 应用场景 配置应用 设置支付授权目录(解决当前页面的URL未注册) 支付授权目录说明 支付授权目录设置说明 支付授权目录校验规则说明 设置授权域名(获取OpenID) 【客户端】JSAPI调起支付 接口说明 字段说明 请求参数 应答参数 JSAPI 支付流程重点步骤说明: 步骤3 用户下单发起支付,商户可通过JSAPI下单创建支付订单。步骤8 商户可在微信浏览器内通过JSAPI调起支付API调起微信支付,发起支付请求。步骤15 用户支付成功后,商户可接收到微信支付支付结果通知支付结果通知API。步骤20 商户在没有接收到微信支付结果通知的情况下需要主动调用查询订单API查询支付结果。 简介JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。 应用场景JSAPI支付适用于线下场所、公众号场景和PC网站场景。 商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。具体操作流程如下: 步骤一 如图2.1,商户下发图文消息或者通过自定义菜单吸引用户点击进入商户网页。 步骤二 如图2.2,进入商户网页,用户选择购买,完成选购流程。 步骤三 如图2.3,调起微信支付控件,用户开始输入支付密码。 步骤四 如图2.4,密码验证通过,支付成功。商户后台得到支付成功的通知。 步骤五 如图2.5,返回商户页面,显示购买成功。该页面由商户自定义。 步骤六 如图2.6,微信支付公众号下发支付凭证。 (1) 服务商最后请求拉起微信支付收银台的页面地址我们称之为“支付授权目录”,例如:https://www.weixin.com/pay.php的支付授权目录为:https://www.weixin.com/。 (2) 服务商实际的支付授权目录必须和在微信支付服务商平台 (opens new window)设置的一致,否则会报错“当前页面的URL未注册:” (3) 服务商模式支付授权目录设置可分为2种方式: 服务商为全体子商户设置支付授权目录服务商为某一子商户单独设置支付授权目录 支付授权目录设置说明(1). 服务商为全体子商户设置支付授权目录 登录【微信支付商户平台 (opens new window)—>产品中心—>开发配置】,设置后一般5分钟内生效。 (2). 服务商为某一子商户单独设置支付授权目录 登录【微信支付服务商平台 (opens new window)—>服务商功能—>特约商户管理】,设置后一般5分钟内生效。 (1) 如果支付授权目录设置为顶级域名(例如:https://www.weixin.com/ ),那么只校验顶级域名,不校验后缀; (2) 如果支付授权目录设置为多级目录,就会进行全匹配,例如设置支付授权目录为https://www.weixin.com/abc/123/,则实际请求页面目录不能为https://www.weixin.com/abc/,也不能为https://www.weixin.com/abc/123/pay/,必须为https://www.weixin.com/abc/123/。 设置授权域名(获取OpenID)开发JSAPI支付时,在JSAPI下单接口中要求必传用户OpenID,而获取OpenID则需要您在微信公众平台 (opens new window)设置获取OpenID的域名,只有被设置过的域名才是一个有效的获取OpenID的域名,否则将获取失败。具体界面如图所示: 步骤说明: 通过JSAPI下单API成功获取预支付交易会话标识(prepay_id)后,需要通过JSAPI调起支付API来调起微信支付收银台。 注意 WeixinJSBridge内置对象在其他浏览器中无效。此API需要将请求参数进行签名(参与签名的参数为:AppID、timeStamp、nonceStr、package,参数区分大小写)。 请确保实际支付时的请求目录与后台配置的目录一致(现在已经支持配置根目录,配置后有一定的生效时间,一般5分钟内生效),否则将无法成功唤起微信支付。配置方式详见支付授权目录。WeixinJSBridge内置对象在其他浏览器中无效。JSSDK的wx.chooseWXPay唤起支付,唤起格式内容参考公众号开发指南 (opens new window)。JSSDK的JSSDK使用步骤说明链接地址,内容说明信息 (opens new window)。唤起支付返回的res对象驼峰式是JSSDK返回的格式,而err_msg是WeixinJSBridge返回的格式,如商户使用不同的方式,此处响应的字符大小写、格式需注意。 function onBridgeReady() { WeixinJSBridge.invoke('getBrandWCPayRequest', { "appId": "wx2421b1c4370ecxxx", //公众号ID,由商户传入 "timeStamp": "1395712654", //时间戳,自1970年以来的秒数 "nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串 "package": "prepay_id=wx21201855730335ac86f8c43d1889123400", "signType": "RSA", //微信签名方式: "paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名 }, function(res) { if (res.err_msg == "get_brand_wcpay_request:ok") { // 使用以上方式判断前端返回,微信团队郑重提示: //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 } }); } if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) { document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); } else if (document.attachEvent) { document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } } else { onBridgeReady(); }重要入参说明: package: JSAPI下单接口返回的prepay_id参数值,提交格式如:prepay_id=***。signType: 该接口V3版本仅支持RSA。paySign: 签名。paySign生成规则、响应详情及错误码请参见 JSAPI调起支付接口文档。 接口说明支持商户: 【普通服务商】 字段说明 请求参数此API无后台接口交互,需要将列表中的数据签名 appId必填string(32) 商户申请的公众号对应的AppID,由微信支付生成,可在公众号后台查看。若下单时传了sub_appid,可为sub_appid的值。 timeStamp必填string(32) 时间戳,标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数。注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。 nonceStr必填string(32) 随机字符串,不长于32位。 package必填string(128) JSAPI下单接口返回的prepay_id参数值,提交格式如:prepay_id=*** signType必填string(32) 签名类型,默认为RSA,仅支持RSA paySign必填string(256) 签名,使用字段AppID、timeStamp、nonceStr、package计算得出的签名值 应答参数 get_brand_wcpay_request:ok支付成功get_brand_wcpay_request:cancel支付过程中用户取消get_brand_wcpay_request:fail支付失败 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |