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

微信支付接口中为什么demo中提供的js调用不到支付界面_百度知道
微信支付接口中为什么demo中提供的js调用不到支付界面
提问者采纳
不然会出现莫名其妙的参数错误6。否则会返回错误;access_control,本来非静态方法在DEMO里是调用的静态方法,未实例化类5;4:not_allowed&quot1,android返回“System、最基本的操作就是检查各项参数正确2:Access_denied”、目录正确,ios返回&quot:发起授权请求的页面必须是在授权目录下的页面、确保将测试微信号加入测试白名单3. 在微信支付给出的PHP DEMO里面是有BUG的. 微信支付给出的DEMO里面没有回调处理的模块. 在JS 请求微信支付的时候参数最好自己组装为JSON格式,而不能是存在与子目录中
其他类似问题
为您推荐:
demo的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&&&微信支付
js api 接口文档及例子demo
js api 接口文档及例子demo
开发微信使用的 微信支付的接口, 在公众帐号上跳转到的 html页面上,使用js进行支付,里面有 java php asp c# 的例子
若举报审核通过,可奖励20下载分
被举报人:
wangshixiu86
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
js api 接口文档及例子demo
所需积分:3
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
js api 接口文档及例子demo
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员微信支付接口中为什么demo中提供的js调用不到支付界面_百度知道
微信支付接口中为什么demo中提供的js调用不到支付界面
提问者采纳
不要手续费; 提示银行卡密码忘记需要银行卡本人带上身份证及银行卡到同行任意营业网点柜台 办理密码挂失及重置业务、不要手续费:到同行柜台办理密码挂失并重置业务
其他类似问题
为您推荐:
demo的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁微信支付问题,支付成功后跳转到指定页面
微信支付分为四步:
1、获取code
2、获取opendi
3、获取相应数据得到商品订单数组
4、支付返回(js 判断)
include("includes/modules/payment/WxPayPubHelper.php");
&//使用jsapi接口
&$jsApi = new JsApi_pub();
&//=========步骤1:网页授权获取用户openid============
&//通过code获得openid
&if (!isset($_GET['code']))
&//触发微信返回code码
& & &$url =
$jsApi-&createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
&ecs_header("Location: $url");
&//获取code码,以获取openid&
& & &$code =
$_GET['code'];
&$jsApi-&setCode($code);
& & &$openid =
$jsApi-&getOpenId();
&if(!empty($openid)){
&include_once('includes/lib_clips.php');
&include_once('includes/lib_payment.php');
获取订单信息& }
&$unifiedOrder = new
UnifiedOrder_pub();
&//设置统一支付接口参数
&//设置必填参数
&//appid已填,商户无需重复填写
&//mch_id已填,商户无需重复填写
&//noncestr已填,商户无需重复填写
&//spbill_create_ip已填,商户无需重复填写
&//sign已填,商户无需重复填写
&$unifiedOrder-&setParameter("openid","$openid");//商品描述
&$out_trade_no = $order['order_sn'];
&$unifiedOrder-&setParameter("body","$goods_name");//商品描述
&//自定义订单号,此处仅作举例
&//$timeStamp = time();
&//$out_trade_no =
WxPayConf_pub::APPID."$timeStamp";
& & &$total_fee
&$total['amount']*100;
&$unifiedOrder-&setParameter("out_trade_no","$out_trade_no");//商户订单号
&$unifiedOrder-&setParameter("total_fee","$total_fee");//总金额
&$unifiedOrder-&setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
&$unifiedOrder-&setParameter("trade_type","JSAPI");//交易类型
&//非必填参数,商户可根据实际情况选填
&//$unifiedOrder-&setParameter("sub_mch_id","XXXX");//子商户号
&//$unifiedOrder-&setParameter("device_info","XXXX");//设备号
&//$unifiedOrder-&setParameter("attach","XXXX");//附加数据
&//$unifiedOrder-&setParameter("time_start","XXXX");//交易起始时间
&//$unifiedOrder-&setParameter("time_expire","XXXX");//交易结束时间
&//$unifiedOrder-&setParameter("goods_tag","XXXX");//商品标记
&//$unifiedOrder-&setParameter("openid","XXXX");//用户标识
&//$unifiedOrder-&setParameter("product_id","XXXX");//商品ID
& & &$prepay_id
= $unifiedOrder-&getPrepayId();
&//=========步骤3:使用jsapi调起支付============
&$jsApi-&setPrepayId($prepay_id);
&$jsApiParameters =
$jsApi-&getParameters();
&//$jsApiParameters =
json_encode($jsApiParameters);
&$smarty-&assign('pay_online',
$jsApiParameters);
JavaScript语言:&
&&/span&script type="text/javascript"&
&//调用微信JS api
jsApiCall()
&WeixinJSBridge.invoke(
& &'getBrandWCPayRequest',
& &{$pay_online},
& &function(res){
&WeixinJSBridge.log(res.err_msg);
&if(res.err_msg == "get_brand_wcpay_request:ok"){
&//alert(res.err_code+res.err_desc+res.err_msg);
&window.location.href=".cn/u/";
&//返回跳转到订单详情页面
&alert(支付失败);
&window.location.href=".cn/u/";
WeixinJSBridge
== "undefined"){
& &if( document.addEventListener ){
&document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
(document.attachEvent){
&document.attachEvent('WeixinJSBridgeReady', jsApiCall);
&document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
& &jsApiCall();
& &&&/span&/script&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。JSSDK微信支付开发攻略
  一、吐槽篇
  一个字&&坑!两个字&&很坑!三个字&&非常坑!首先,微信支付接口作为微信开发接口的一部分,竟然有一本书那么厚的官方文档,共36页,更重要的是,这36页还不能把开发的流程说清楚,描述过于分散,过度分类,导致遇到一个问题的时候很难定位,虽然文档前面给了时序图,但是开发流程的时序化仍然不够,让人觉得十分混乱。本来接手这个任务的时候时间就非常的紧,想着找个demo撑死一两天就完事了,没想到最终耗费了接近一个星期,除去中间别的事耽误的时间也用了整整五天的时间,在网上查找资料的时候也看到很多人说一个问题卡好几天甚至几周的情况,实在是难以接受。
  二、开发流程
  我这里就一并按顺序总结了。首先我用的是JS-SDK,即所描述的方式去做,必须说明的是,虽然是JS-SDK,但是整个签名过程不可能只在JS里完成,由于安全性问题,微信提供的接口JS是无法跨域调用的,必须在后台进行调用再将结果发给前台。OK,我的开发的宏观情况是,前端使用JS-SDK,后端使用JAVA tomcat。
  总体流程是:①授权部分:后端通过微信接口拿到access_token,再拿到ticket(jsapi_ticket),给前台,前台通过js-sdk将jsapi_ticket,noncestr,timestamp,url签名,获取授权。
        ②支付部分:前端获取code,给后端,后端通过code访问微信接口拿到openid,通过openid等一堆key信息和回调url拿到prepayid,把prepayid,timestamp,noncestr给前台,前台通把这些东西以及签名提交,发起支付。
        ③回调部分:支付成功后,支付部分填写的url的对应方法会执行,拿到后从参数中拿到支付成功后的信息,校验签名,发送成功结果给支付发起端。
        ④完成部分:前端收到成功的消息,自定义跳转页面。
  1、授权部分
  js部分:
  wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: ["chooseWXPay"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
这是发起授权申请的部分,signature需要签名的字段包括:
"jsapi_ticket="+ticket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+
①jsapi_ticket获取:需要调用接口获取,调用接口不能用js(跨域),所以在后台进行,接口调用使用https://api./cgi-bin/ticket/getticket,GET方法即可,参数是"access_token="+access_token +"&type=JSAPI"②access_token获取:调用https://api./cgi-bin/token,同样使用GET方法,参数是"appid="+appid+"&secret="+secret+"&grant_type=client_credential",只要参数不错,就能拿到jsapi_ticket了。(后面获取opendid的时候也会拿到一个access_token,但不是同一个!)
③nonceStr、timestamp在JS生成即可,记得签名时候的timestamp和nonceStr要和参数填写的一样。④签名规则:就是在上面那一串东西后面加上"&key=xxxx",然后MD5加密处理后,变成大写,key是商户的key,千万别搞错了,不是appkey。规则具体。⑤appId,这里I是大写的⑥url的获取:这个url不需要urlencode,但是必须是当前发起支付页的url,若url中有#号,只取#前面的。下面代码直接拿走吧!
location.href.split("#")[0]
⑦invalid signature:如⑥所说,url输入的不对,url要动态获取
⑧invalid url domain :url和appid没绑定,要在微信公众号那里的功能配置里配置,别把安全域名和业务域名搞混了&&(我就在这里卡了半天)
配置成功后,就会进入
wx.ready(function(){}这个函数里面,并且如果debug打开,能看到configok的反馈。  2、支付部分为了确保wx.config成功后再支付(否则不可能支付),请把下面函数放到wx.ready里面:
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
首先说明填写要怎么填,别的应该都好理解,package这个东西有点不明所以,这个东西官方文档叫做扩展包,但是在整个官方文档里却又找不到扩展包要填什么,只知道肯定要填"package=prepay_id=xxxx",我翻查了旧版微信支付的demo等,知道了这个扩展包主要是填写一些选填的东西,例如币种、编码等,但这并不是必须的,用最简单的"package=prepay_id=xxxx"填写就可以了。
先给出要签名的字符串列表
String signstr = "appid="+appid+"&body="+body+"&mch_id="+mch_id+"&nonce_str="+nonce_str+"&notify_url="+ notify_url +"&openid="+openid+"&out_trade_no="+out_trade_no+"&spbill_create_ip="+spbill_create_ip+"&total_fee="+total_fee+"&trade_type=JSAPI"+"&key="+
①签名必须在后端完成,前端timestamp和nonceStr必须和后端签名时用的值一致。
②notify_url不需要urlencode,回调地址最好不要加参数(回调地址是支付成功后通知的那个地址接口,接口内容自己完成)
③openid的获取:
可以看,这些文档都不是一个文档,所以很容易找不到。
具体做法:
首先,在客户端点击支付后,必须先跳转到这个地址:
1)redirect_uri,是你使用JS-SDK的页面的地址,也就是wx.chooseWXPay所在页面的地址,必须进行urlencode,跳转过去后能在url中尾部看到?code=CODE&state=STATE,把CODE从url中取出来。
2)使用GET方法调用这个接口,把刚取到的code填进去,还有别的参数不要填错了。3) 返回的json格式中就能取到openid了。④prepayid的获取:这部分仍然在后台进行,使用post并且是XML格式发送数据,也就是说发送一段XML格式的字符串就是了,格式如下:
String text = "&xml&"+
"&appid&"+appid+"&/appid&"+
"&body&"+body+"&/body&"+
"&mch_id&"+mch_id+"&/mch_id&"+
" &nonce_str&"+nonce_str+"&/nonce_str&"+
" &notify_url&"+notify_url+"&/notify_url&"+
"&openid&"+openid+"&/openid&"+
"&out_trade_no&"+out_trade_no+"&/out_trade_no&"+
"&spbill_create_ip&"+spbill_create_ip+"&/spbill_create_ip&"+
"&total_fee&"+total_fee+"&/total_fee&"+
"&trade_type&"+"JSAPI"+"&/trade_type&"+
"&sign&"+sign+"&/sign&"+
1)spbill_create_ip是支付终端的IP地址
2)notify_url不用urlencode
3)total_fee不能是小数,因为单位是分
4)签名上面已经给了,就是用key,value方式把除了sign以外的所有字符串连起来,最后加上"&key=xxx",然后MD5再转大写。
5)out_trade_no,这个是自己标记自己商品号的一个号,不能重复,所以建议用时间戳+一些自己的规则。
6)body是中文时报签名错误:首先确保中文是utf-8,然后转成iso8859-1,可以用下面这句代码:
text = new String(text.getBytes(), "iso8859-1");
注意:①假如是自己在本地调用接口,写死一个中文去测试,请确保你的页面编码是utf-8,像我这种不太注意的,本来页面用了GBK编码,所以怎么试都不成功,怎么查编辑文件用什么编码,自行谷歌百度自己的编辑器的设置编码在哪里。
   & ②tomcat的编码,如果是从ajax把中文的body传到后台,请注意tomcat的编码设置,确保拿到的中文是utf-8。
7)上面的做好了,就可以拿到prepayid了,将prepayid和自己生成的nocestr和timestamp以及刚才生成的签名sign传回给前台,并且填到wx.chooseWXPay里,尝试支付。
8)&商户签名错误&:假如已经拿验算工具查过,签名是正确的,仍然报错,那必然是这个原因&&timeStamp,S是大写的!!。虽然官网已经做出了提醒,但是绕了那么多圈之后你早就不记得这件事了,或者说没搞清楚,没错,签名的时候timeStamp的S必须是大写的,然后前台的wx.chooseWXPay里的timestamp是小写的,就是那么的神奇!
9)当前的页面URL未注册:
微信公众账户里的微信支付-支付测试,看看填写的地址是不是支付所在的地址。
10)系统繁忙,正在升级,请稍后再试:
基本上不会是系统繁忙,这是我整个过程遇到微信接口唯一的一次报错错误,请检查签名参数,着重检查中文编码问题。
3、支付部分
终于,突过重重难关,弹出支付图标并且可以支付了,但是怪并没有打完,你的回调接口可能还没完善,这篇文章对回调部分的描述挺不错的,网上能下到JAVA的DEMO,但有些部分已经不能用了,主要不能用的部分是拿到数据的时候需要用inputstream去处理,而不能通过request直接读取。回调要要做的事:①拿到反馈数据只要支付成功了,微信会推送一个XML格式的数据过来,JAVA请用下面的代码解析出来
public static byte[] readBytes(InputStream in) throws IOException {
byte[] temp = new byte[in.available()];
byte[] result = new byte[0];
int size = 0;
while ((size = in.read(temp)) != -1) {
byte[] readBytes = new byte[size];
System.arraycopy(temp, 0, readBytes, 0, size);
result = SystemUtil.mergeArray(result,readBytes);
②校验签名
微信支付传过来数据,但未必是对的,所以把里面的签名拿出来,把别的变量拿出用keyvalue同样的方式加密再和签名对比,一样的就是对的。
③返回SUCCESS
④微信会在30分钟内进行8次回调,这是担心你网络问题等拿不到支付后的数据,所以你要判断这个东西是否已经成功处理过了
⑤处理:不外乎就是拿出订单号等,写入自己的数据库里。
4、完成部分
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
看到&支付成功后的回调函数&了吗?就在这里面写完成后跳转的页面,location.href=xxx,完结了~
大功告成&&唉,真不好意思说大功,像支付宝一样的话也就一天半天的事,这个却整了那么久。给官方的建议是,Demo能否出现在显眼的位置,能否做一个针对DEMO的文档或者说明(例如这个demo是适合哪个版本的都没说),对DEMO做相应修改或者填写各种key和id就行了,顶多再教一下配置些什么,毕竟很多东西都是死的,不需要用户全部敲一遍,只不过按照规则填就是了。
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
微信买火车票教程来咯~下文将为大家演示微信抢票攻略,微信也能够购买火车票哦,而且步骤并不难,如果你想知道的话可以来了解一下,希望能帮助到大家. 进入微信钱包,选择“机票火车票”,在底部. 点击之后会进入“同程旅游”,选择“火车票”. 填写乘车信息后提交订单并用微信支付即可. 订票成功后,就可以去火车站,代售点或者自动取票机取票了,返回到个人中心还可以看到火车 ...
这两天做微信支付开发.碰到大坑.纠结死我了.好不容做完. 后台java:直接上代码:注意区分前后端的变量大小写... @RequestMapping(value = &/index&) public Model index(@RequestParam(value = &openid&, required = true) ...
DAVINCI DM3730开发攻略——序
走进2013年了,去年长长一年没有时间写博客,因为两个大客户定制的板子一直下单生产,他们新的衍生产品也需要我们不断去调试,所以事情多了,写技术文章的时间就少了.我们桐烨科技成立不久,公司规模不大,但是有那些支持我们的客户,让我们步履艰难做起来了,现在想逐步招人把公司做大一点,以后慢慢有多一些时间,写 ...
本文介绍微信支付中发货通知功能的实现.
一.发货通知 为了更好地跟踪订单的情况,需要第三方在收到最终支付通知之后,调用发货通知API告知微信后台该订单的发货状态. 发货时间限制:虚拟.服务类24小时内,实物类72小时内. 请在收到支付通知后,按时发货,并使用发货通知接口将相关信息同步到微信后台.若平台在规定时间内没有收到,将视作发货超时处理. 发货通知A ...
本文介绍微信支付中如何获得告警通知.
一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付时填写的告警通知URL,在“公众平台-服务-服务中心-商户功能-商户基本资料-告警通知URL”可以查看.商户接收到告警通知后需要尽快修复其中提到的问题,以免 ...
本文介绍微信支付中如何获得维权通知.
一.维权通知URL 在 微信支付开发(1) 微信支付URL配置 已提到,维权通知URL为 /wxpay/rights.php
二.用户维权系统接口 用户在公众号进行支付贩买行为出现异常时,通常会投诉到腾讯客服,因此微信侧需要即时了解公众号不用户交易的详情.同时,为了最快 ...
关键字:微信公众平台 微信支付 Native原生支付作者:方倍工作室原文:/txw1958/p/wxpay-native.html
在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的Native功能. 本文分为以下三个部分: 生成Native支付URL 生成二维码 生成Package 一.生成Nat ...
关键字:微信公众平台 微信支付 全网发布 作者:方倍工作室原文:/txw1958/p/wxpay-publish.html
在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的全网发布功能. 全网发布是指微信支付后台最后一步中的维权功能.告警接口.发货接口的检测发布. 本文分为以下三个部分: 微信支付 ...

我要回帖

更多关于 中国银联支付接口demo 的文章

 

随机推荐