微信支付 JS API支付接口详解


Posted in Javascript onJuly 11, 2016

一、JS API支付接口(getBrandWCPayRequest)

微信JS API只能在微信内置浏览器中使用,其他浏览器调用无效。微信提供getBrandWCPayRequest接口供商户前端网页调用,调用之前微信会鉴定商户支付权限,若商户具有调起支付的权限,则将开始支付流程。这里主要介绍支付前的接口调用规则,支付状态消息通知机制请参加下文。接口需要注意:所有传入参数都是字符串类型!

getBrandWCPayRequest参数如下图所示。

参数 名称 必填 格式 说明
appId 公众号id 字符串类型 商户注册具有支付权限的公众号成功后即可获得;
timeStamp 时间戳 字符串类型,32个字节以下 商户生成,从1970年1月1日00:00:00至今的秒数,即当前的时间,且最终需要转换为字符串形式;
nonceStr 随机字符串 字符串类型,32个字节以下 商户生成的随机字符串;
package 订单详情扩展字符串 字符串类型,4096个字节以下 商户将订单信息组成该字符串,具体组成方案参见接口使用说明中package组包帮劣;由商户按照规范拼接后传入;
signType 签名方式 字符串类型,参数取值"SHA1" 按照文档中所示填入,目前仅支持SHA1;
paySign 签名 字符串类型 商户将接口列表中的参数按照指定方式?行签名,签名方式使用signType中标示的签名方式,具体签名方案参见接口使用说明中签名帮劣;由商户按照规范签名后传入;

    getBrandWCPayRequest返回值如下表所示。

返回值 说明
err_msg get_brand_wcpay_request:ok  支付成功 get_brand_wcpay_request:cancel 支付过程中用户取消 get_brand_wcpay_request:fail 支付失败

JS API的返回结果 get_brand_wcpay_request:ok 仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel 或者 get_brand_wcpay_request:fail 可以统一处理为用户遇到错误或者主动放弃,不必细化区分。

二、JS API支付实现

下面代码是微信官方提供的JS API支付demo

<?php
include_once("WxPayHelper.php");
$commonUtil = new CommonUtil();
$wxPayHelper = new WxPayHelper();
$wxPayHelper->setParameter("bank_type", "WX");
$wxPayHelper->setParameter("body", "test");
$wxPayHelper->setParameter("partner", "1900000109");
$wxPayHelper->setParameter("out_trade_no", $commonUtil->create_noncestr());
$wxPayHelper->setParameter("total_fee", "1");
$wxPayHelper->setParameter("fee_type", "1");
$wxPayHelper->setParameter("notify_url", "htttp://www.baidu.com");
$wxPayHelper->setParameter("spbill_create_ip", "127.0.0.1");
$wxPayHelper->setParameter("input_charset", "GBK");
?>
<html>
<script language="javascript">
function callpay()
{
 WeixinJSBridge.invoke('getBrandWCPayRequest',<?php echo $wxPayHelper->create_biz_package(); ?>,function(res){
 WeixinJSBridge.log(res.err_msg);
 alert(res.err_code+res.err_desc+res.err_msg);
 });
}
</script>
<body>
<button type="button" onclick="callpay()">wx pay test</button>
</body>
</html>

将其中的微信支付参数修改成自己所申请得到的,然后将网页上传到微信支付目录下,给测试账号回复该网页地址。用户就可以实现一次JS API支付。

三、效果演示

下面是官方DEMO修改后,发起支付的页面图。

微信支付 JS API支付接口详解

确认交易:

微信支付 JS API支付接口详解

输入支付密码:

微信支付 JS API支付接口详解

交易成功:

微信支付 JS API支付接口详解

       以上就是对微信支付JS API 资料的整理,希望能帮到大家,谢谢支持!

Javascript 相关文章推荐
基于node.js的快速开发透明代理
Dec 25 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
Jan 07 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
仿JQuery输写高效JSLite代码的一些技巧
Jan 13 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
Apr 21 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
基于bootstrop常用类总结(推荐)
Sep 11 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
jQuery带控制按钮轮播图插件
Jul 31 jQuery
判断输入的字符串是否是日期格式的简单方法
Jul 11 #Javascript
JS判断日期格式是否合法的简单实例
Jul 11 #Javascript
深入浅析JavaScript中的scrollTop
Jul 11 #Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 #Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 #Javascript
Bootstrap3制作搜索框样式的方法
Jul 11 #Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 #Javascript
You might like
PHP动态变静态原理
2006/11/25 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python 中如何写注释
2020/08/28 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
简述数组与指针的区别
2014/01/02 面试题
盛大二次面试题
2016/11/18 面试题
洗煤厂厂长岗位职责
2014/01/03 职场文书
签约仪式主持词
2014/03/19 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
小学教师教学随笔
2015/08/14 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL