微信支付 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 相关文章推荐
xheditor与validate插件冲突的解决方案
Apr 15 Javascript
javascript测试题练习代码
Oct 10 Javascript
JS的千分位算法实现思路
Jul 31 Javascript
使用js解决由border属性引起的div宽度问题
Nov 26 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
ES6正则表达式的一些新功能总结
May 09 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
JavaScript实现移动端拖动元素
Nov 24 Javascript
判断输入的字符串是否是日期格式的简单方法
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 escape URL编码
2008/12/10 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python pickle模块用法实例分析
2015/05/27 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
用python写爬虫简单吗
2020/07/28 Python
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
前台接待员岗位职责
2014/01/02 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
关于开学的感想
2015/08/10 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
python基础之类方法和静态方法
2021/10/24 Python
mysql 排序失效
2022/05/20 MySQL