php微信支付接口demo中为什么demo中提供的js调用不到支付界面

微信支付接口中为什么demo中提供的js调用不到支付界面_百度知道调用微信支付接口提示 get_brand_wcpay_request:fail - 开源中国社区
当前访客身份:游客 [
当前位置:
生成订单的返回结果如下:
&return_code&&![CDATA[SUCCESS]]&&/return_code&
&return_msg&&![CDATA[OK]]&&/return_msg&
&appid&&![CDATA[wx63cf900]]&&/appid&
&mch_id&&![CDATA[]]&&/mch_id&
&device_info&&![CDATA[WEB]]&&/device_info&
&nonce_str&&![CDATA[820RztKTT5EiL0HU]]&&/nonce_str&
&sign&&![CDATA[BF82F41CDE8A4]]&&/sign&
&result_code&&![CDATA[SUCCESS]]&&/result_code&
&prepay_id&&![CDATA[wx2]]&&/prepay_id&
&trade_type&&![CDATA[JSAPI]]&&/trade_type&
网页上调用的js代码为
var appId = "${weiXinOrderRequset.get("appId")}";
var timeStamp = "${weiXinOrderRequset.get("timeStamp")}";
var nonceStr = "${weiXinOrderRequset.get("nonceStr")}";
var package = "${weiXinOrderRequset.get("package")}";
var signType = "${weiXinOrderRequset.get("signType")}";
var paySign = "${weiXinOrderRequset.get("paySign")}";
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": appId,
//公众号名称,由商户传入
"timeStamp": timeStamp,
//时间戳,自1970年以来的秒数
"nonceStr": nonceStr, //随机串
"package":
"signType": signType,
//微信签名方式:
"paySign": paySign
//微信签名
function (res) {
alert(res);
alert(res.err_msg);
if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("支付成功");
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回
ok,但并不保证它绝对可靠。
function pay() {
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
alert("初始化失败");
onBridgeReady();
alert("初始化成功");
但是每次调用后,得到的结果都为:get_brand_wcpay_request:fail,在商户平台没有看到生成成功在账单。已经困扰一上午了,请各位大神帮助!
共有10个答案
<span class="a_vote_num" id="a_vote_num_
很高兴看到你这个问题,这个问题也困扰过我一两天时间。你这种调用支付的方法应该已经过期的了。微信平台上的公共支付没更新。但是在jsapi中有最新的做法,贴上我的代码供参考。
&%@ page contentType="text/charset=UTF-8" %&
&%@ include file="/common/header.jsp" %&
&title&微信支付&/title&
&link rel="stylesheet" type="text/css" href="css/activity.css"&
&script type="text/javascript" charset="UTF-8" src="http://res./open/js/jweixin-1.0.0.js"&&/script&
&script type="text/javascript"&
function pay(){
var appId = $('#appId').val();
var timeStamp = $('#timeStamp').val();
var nonceStr = $('#nonceStr').val();
var pk = $('#package').val();
var signType = $('#signType').val();
var paySign = $('#paySign').val();
var timeStamp2 = $('#timeStamp2').val();
var nonceStr2 = $('#nonceStr2').val();
var signature = $('#signature').val();
var activityId = $('#activityId').val();
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: appId, // 必填,公众号的唯一标识
timestamp:timeStamp2 , // 必填,生成签名的时间戳
nonceStr: nonceStr2, // 必填,生成签名的随机串
signature: signature,// 必填,签名,见附录1
jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.chooseWXPay({
timestamp: timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: nonceStr, // 支付签名随机串,不长于 32 位
package: pk, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: paySign, // 支付签名
complete: function (res) {
// 支付成功后的回调函数
location.href=basePath+'/activityorder/activity-order!list.action?activityId='+activityId;
&body onload="pay()"&
&input id="activityId" type="hidden" value="${activityId}" /&
&input id="appId" type="hidden" value="${payparam.appId}" /&
&input id="timeStamp" type="hidden" value="${payparam.timeStamp}" /&
&input id="nonceStr" type="hidden" value="${payparam.nonceStr}" /&
&input id="package" type="hidden" value="${payparam.package1}" /&
&input id="signType" type="hidden" value="${payparam.signType}" /&
&input id="paySign" type="hidden" value="${payparam.paySign}" /&
&input id="timeStamp2" type="hidden" value="${apijsmap.timestamp}" /&
&input id="nonceStr2" type="hidden" value="${apijsmap.noncestr}" /&
&input id="signature" type="hidden" value="${apijsmap.signature}" /&
--- 共有 1 条评论 ---
额...楼主那个是最新的...楼上这个才是老的接口啊
(9个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
在微信支付 的配置里需要支付配置域名,否则也会报错&
<span class="a_vote_num" id="a_vote_num_
付费解决,500
--- 共有 1 条评论 ---
指点一下吧!小弟谢过了!
(1年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
在原来的验证的基础上需要多一个授权验证。具体看js-jdk的api文档
http://mp./wiki/7/aaa137b55fb2e48dd613f.html
--- 共有 9 条评论 ---
: 看我博客http://my.oschina.net/u/566297/blog/512675
虽然写得不是很清楚
(10个月前)&nbsp&
: 简单说就是不要用微信浏览器内置函数了,改用引入http://res./open/js/jweixin-1.0.0.js然后调用其方法。具体看apijs,说来话长
(10个月前)&nbsp&
请问你是怎么解决的?
(10个月前)&nbsp&
: 是用v3调试的吗
(11个月前)&nbsp&
: 上面的链接,用新的接口重新写了一遍
(11个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
遇到一样的问题,能否帮下忙。企鹅
<span class="a_vote_num" id="a_vote_num_
付款的微信号有没有加到测试白名单中啊?
<span class="a_vote_num" id="a_vote_num_
微信jssdk里面所有timestamp全部是小写,跟直接使用WeixinJSBridge.call调用使用timeStamp不同,jssdk中会自动将小写的timestamp转成timeStamp,直接使用timeStamp会造成undefined,我特么也是搞了半天才弄懂,官方文档的作者语文不好,特么的坑
<span class="a_vote_num" id="a_vote_num_
正巧遇到这个问题,目前还没有解决。。。
--- 共有 2 条评论 ---
: 解决了,我的是因为修改了配置文件错误导致的。
(5个月前)&nbsp&
(5个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
大神帮帮我:
<span class="a_vote_num" id="a_vote_num_
怎么解决的楼主啊啊。。。。
更多开发者职位上
有什么技术问题吗?
半个朋友的其它问题微信公众平台开发 JS-SDK开发(图像接口实例) - 博客 - 水墨寒的博客微信公众平台开发 JS-SDK开发(图像接口实例)作者:阅读:30201更新于 22:53
本文并非是对的复制,而是通过一个简单的例子来更深入的了解使用微信JS-SDK,具体文档请参考官方说明文档《》。微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK),通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照、选图、语音、位置等基本能力,还可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。微信JS-SDK提供的11类接口(分享接口、图像接口、音频接口、智能接口、设备信息、界面操作、地理位置、微信扫一扫、微信小店、微信卡券、微信支付)在使用方式上完全相同,唯一需要注意的是,这11类接口并不是都开放的,有些接口非认证用户是没有权限的,比如分享接口,小店接口、卡券接口、支付接口则必须通过微信认证后才能使用。具体权限问题可参考你的。
开放必须项
开发者ID (应用ID和应用密匙)
在公众号(服务号)设置——功能设置(JS接口安全域名)中填写已备案的域名
服务器环境
简单的后台知识,如PHP
本文将通过PHP(只会PHP)来演示图像接口(其他接口使用方式相似)
首先在微信开发者平台下载它的,链接中包含php、java、nodejs以及python的示例代码供第三方参考,这里使用php包。我把php文件夹重命名为weixin放在网站根目录下,如图:
这里我们只修改sample.php.代码如下:
//设置报错级别,忽略警告,设置字符
error_reporting(E_ALL || ~E_NOTICE);
header("Content-type:text/ charset=utf-8");
require_once "jssdk.php";
$jssdk = new JSSDK("AppID", "AppSecret");
$signPackage = $jssdk-&GetSignPackage();
&!DOCTYPE html&
&html lang="en"&
&meta charset="UTF-8"&
&!--因为在手机中,所以添加viewport--&
&meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"&
&title&微信测试&/title&
&button id="weixin" style="display:margin: 2em auto"&微信接口测试&/button&
&script src="http://res./open/js/jweixin-1.0.0.js"&&/script&
wx.config({
debug: true, //调试阶段建议开启
appId: '&?php echo $signPackage["appId"];?&',
timestamp: &?php echo $signPackage["timestamp"];?&,
nonceStr: '&?php echo $signPackage["nonceStr"];?&',
signature: '&?php echo $signPackage["signature"];?&',
jsApiList: [
* 所有要调用的 API 都要加到这个列表中
* 这里以图像接口为例
"chooseImage",
"previewImage",
"uploadImage",
"downloadImage"
var btn = document.getElementById('weixin');
wx.ready(function () {
// 在这里调用 API
btn.onclick = function(){
wx.chooseImage ({
success : function(res){
var localIds = res.localI
// 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
然后将weixin目录上传到你的服务器上,该服务器域名必须和你在微信设置中的域名一致。我上传到了根目录,通过firefox提供的页面二维码功能,在微信上扫一扫即可测试。截图如下:
图1-4分别为一进去(因为开启了debug),所以会显示你成功调用接口;图二表示点击了按钮后,将弹出微信拍照或者从照片中选择;图三是我点击了从手机相册中选择后调出你的手机相册列表;图四是我选择了其中某一张照片,点击完成后返回的该照片信息(图片的本地ID)
接着,来测试一下上传接口,修改HTML代码如下:
&button id="weixin" style="display:margin: 2em auto"&微信接口测试&/button&
&button id="upload" style="display:margin: 2em auto"&上传接口测试&/button&
&button id="getServices" style="display:margin: 2em auto"&获取已上传的图片&/button&
&script src="http://res./open/js/jweixin-1.0.0.js"&&/script&
wx.config({
debug: true, //调试阶段建议开启
appId: '&?php echo $signPackage["appId"];?&',
timestamp: &?php echo $signPackage["timestamp"];?&,
nonceStr: '&?php echo $signPackage["nonceStr"];?&',
signature: '&?php echo $signPackage["signature"];?&',
jsApiList: [
* 所有要调用的 API 都要加到这个列表中
* 这里以图像接口为例
"chooseImage",
"previewImage",
"uploadImage",
"downloadImage"
var btn = document.getElementById('weixin');
//定义images用来保存选择的本地图片ID,和上传后的服务器图片ID
var images = {
localId: [],
serverId: []
wx.ready(function () {
// 在这里调用 API
btn.onclick = function(){
wx.chooseImage ({
success : function(res){
images.localId = res.localI
//保存到images
// 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
document.getElementById('upload').onclick = function(){
var i = 0, len = images.localId.
function wxUpload(){
wx.uploadImage({
localId: images.localId[i], // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
//将上传成功后的serverId保存到serverid
images.serverId.push(res.serverId);
if(i & len){
wxUpload();
wxUpload();
document.getElementById('getServices').onclick = function(){
alert(images.serverId);
重新上传到服务器,刷新Firefox,生成新二维码,微信扫描,截图如下
图1是修改后的页面;图2是点击上传按钮后的loading提示(isShowProgressTips: 1, // 默认为1,显示进度提示);图3是上传成功后返回的该图片的serverId;图4是点击获取已上传的图片按钮后返回的已上传的图片的信息;上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id
通过以上两个简单的例子,基本可以掌握微信JS-SDK的使用方法。11个接口使用方式基本相同,你可以一一尝试。官方的说明是:
通过ready接口处理成功验证
通过error接口处理失败验证
所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
具体可参考官方API。
&延伸阅读&发布观点加载更多...微信支付接口中为什么demo中提供的js调用不到支付界面_百度知道

我要回帖

更多关于 php支付宝接口demo 的文章

 

随机推荐