wx.request fail参数的传参ID 接受不了。

微信小程序请求API接口PHPSESSID变化的解决方式
时间: 14:52:45
&&&& 阅读:28
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&微信小程序开发,请求服务器API的方法使用的是微信官方提供的wx.request()方法。在开发中发现,每一个请求都会生成一个独立的PHPSESSID,如下图示:
搜索后得知,这是由于wx.request()造成的。如果直接使用浏览器请求并不会出现这种情况。
解决方式如下:
  通过登录接口获取到用户的session_key 和 open_id,设置session信息如下:
  $3rd_session = md5(session_key . $open_id)
  $_SESSION[$3rd_session ] = session_key . ‘|‘ . $open_id;
  服务器生成此用户的session_id,接口返回 3rd_session&和 session_id。
  在其他接口请求中,在header中设置cookie的值:session_id:
  header = header || {
  ‘content-type‘: ‘application/x-www-form-‘,
  ‘Cookie‘: ‘PHPSESSID=session_id值‘
  并在接口中带上参数session=3rd_session,此时服务端获取到的就是同一个session_id,根据3rd_session从$_SESSION得到用户的openid
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:https://www.cnblogs.com/cqingt/p/8529868.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!android微信支付
==========================================
1,导入微信的libs包libammsdk.
2,测试时使用weixinDemo中的debug_
3,需要注意应用要通过审核,并且几个Key值正确,一下为微信支付Demo中的值:
//微信公众平台
private String app_wx_appid=WxConstants.app_wx_
//微信开放平台和商户约定的密钥
private String app_wx_secret_key="db426aa0dcac7b";
//微信公众平台商户模块和商户约定的密钥
private String app_wx_parent_key="53e9cf7b0519d";
//微信公众平台商户模块和商户约定的支付密钥
private String app_wx_pay_key="L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K";
// 商家向财付通申请的商家id */
private String app_tx_parent_key = "";
==========================================
根据微信支付Demo,微信支付分为三步:
第一步,获取accessToken,accessToken值第二步要用;
private class GetAccessTokenTask extends AsyncTask {
protected WxGetAccessTokenResult doInBackground(Void... params) {
WxGetAccessTokenResult result = getAccessToken();
protected void onPostExecute(WxGetAccessTokenResult result) {
if (result.localRetCode == WxLocalRetCode.ERR_OK) {
GetPrepayIdTask getPrepayId = new GetPrepayIdTask();
getPrepayId.execute(result);
}解析服务器响应
private WxGetAccessTokenResult getAccessToken() {
WxGetAccessTokenResult result = new WxGetAccessTokenResult();
String url = String.format(api_get_access_token,
"client_credential",
app_wx_appid,
app_wx_secret_key);
byte[] buf = WeixinUtil.httpGet(url);
if (buf == null || buf.length == 0) {
result.localRetCode = WxLocalRetCode.ERR_HTTP;
String content = new String(buf);
result.parseFrom(content);
}第二步,根据第一步的accesstoken值,将 组装的商品参数Post给微信服务器
private class GetPrepayIdTask extends AsyncTask {
protected WxGetPrepayIdResult doInBackground(WxGetAccessTokenResult... params) {
WxGetPrepayIdResult result = getPrepayId(params[0]);
protected void onPostExecute(WxGetPrepayIdResult result) {
if (result.localRetCode == WxLocalRetCode.ERR_OK) {
sendPayReq(result);
private WxGetPrepayIdResult getPrepayId(WxGetAccessTokenResult accessTokenResult) {
String url = String.format(api_get_preorder_id,accessTokenResult.accessToken);
String entity = appSign.getWxPrepayAppSign();
WxGetPrepayIdResult result = new WxGetPrepayIdResult();
byte[] buf = WeixinUtil.httpPost(url, entity);
if (buf == null || buf.length == 0) {
result.localRetCode = WxLocalRetCode.ERR_HTTP;
String content = new String(buf);
result.parseFrom(content);
}Post给服务器 private void sendPayReq(WxGetPrepayIdResult result) {
PayReq req = new PayReq();
req.appId = app_wx_
req.partnerId = app_tx_parent_
req.prepayId = result.prepayId;
req.nonceStr = appSign.getNoncestr();
req.timeStamp = appSign.getTimestamp();
req.packageValue = "Sign=" + appSign.getPackageSign();
List signParams = new LinkedList();
signParams.add(new BasicNameValuePair("appid", req.appId));
signParams.add(new BasicNameValuePair("appkey", app_wx_pay_key));
signParams.add(new BasicNameValuePair("noncestr", req.nonceStr));
signParams.add(new BasicNameValuePair("package", req.packageValue));
signParams.add(new BasicNameValuePair("partnerid", req.partnerId));
signParams.add(new BasicNameValuePair("prepayid", req.prepayId));
signParams.add(new BasicNameValuePair("timestamp", req.timeStamp));
req.sign = WeixinUtil.genSign(signParams);
wxRequest.sendReq(req);
第三步:在项目下新建一个包wxapi,建立一个类名为WXPayEntryActivity作为接受微信的支付结果,不过最终结果以服务器的返回为准notify_url:package net.sourceforge.simcpux.
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{ @Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("支付结果");
builder.setMessage("支付结果"+String.valueOf(resp.errCode));
builder.show();
==========================================
暂时没想到其他想说的,先看个效果
1,包结构,需要注意的就是接收微信返回结果的那个类名;
2,组装数据,规则在文档中有说明vcD4KPHByZSBjbGFzcz0="brush:">//package_ 字段生成方法
//package生成方法:
//A)对所有传入参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1;
//B) 在string1 最后拼接上key=partnerKey 得到stringSignTemp 字符串, 并对 stringSignTemp进行md5 运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
//C)对string1 中的所有键值对中的value 进行urlencode 转码,按照a 步骤重新拼接成字符串,得到string2。对于js 前端程序,一定要使用函数encodeURIComponent 进行urlencode编码(注意!进行urlencode时要将空格转化为%20而不是+)。
//D)将sign=signValue 拼接到string1 后面得到最终的package 字符串。
//app_signature生成方法:
//A)参与签名的字段包括:appid、appkey、noncestr、package、timestamp以及 traceid
//B)对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。 注意:所有参数名均为小写字符
//C)对string1 作签名算法,字段名和字段值都采用原始值,不进行URL 转义。具体签名算法为SHA1
3,对应的支付界面输入关键字或相关内容进行搜索
HBuilder 基座已实现H5 plus的支付API,现已支持支付宝App支付(移动快捷支付)和微信支付。开发指导\n支付流程如下:
plus API使用步骤:
1. 调用plus.payment.getChannels()获取系统支持的支付通道;
2. 调用plus.payment.request()发起支付请求。示例代码var channel=
// 1. 获取支付通道
function plusReady(){
// 获取支付通道
plus.payment.getChannels(function(channels){
channel=channels[0];
},function(e){
alert(&获取支付通道失败:&+e.message);
document.addEventListener('plusready',plusReady,false);
var ALIPAYSERVER='http://demo.dcloud.net.cn/helloh5/payment/alipay.php?total=';
var WXPAYSERVER='http://demo.dcloud.net.cn/helloh5/payment/wxpay.php?total=';
// 2. 发起支付请求
function pay(id){
// 从服务器请求支付订单
var PAYSERVER='';
if(id=='alipay'){
PAYSERVER=ALIPAYSERVER;
}else if(id=='wxpay'){
PAYSERVER=WXPAYSERVER;
plus.nativeUI.alert(&不支持此支付通道!&,null,&捐赠&);
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
switch(xhr.readyState){
if(xhr.status==200){
plus.payment.request(channel,xhr.responseText,function(result){
plus.nativeUI.alert(&支付成功!&,function(){
},function(error){
plus.nativeUI.alert(&支付失败:& + error.code);
alert(&获取订单信息失败!&);
xhr.open('GET',PAYSERVER);
xhr.send();
\n注:第二步中获取到的订单数据需要在服务器通过支付宝平台获取PID和密钥生成。HBuilder应用配置\n分享插件添加方法具体步骤如下:
1. 点击manifest.json文件的“代码视图”,在permissions节点下添加Payment节点:
在plus -& distribute -& plugins 节点下添加payment节点:
alipay节点下配置支付宝相关信息
scheme值为iOS平台调用支付宝的“快捷支付”应用返回时用到的标识,推荐使用小写字符串。
weixin节点下配置微信支付相关信息
appid值为在微信开放平台申请应用的AppID值。
appleiap节点下配置苹果应用内支付相关信息
在HBuilder基座中无法使用此支付通道,需要提交云端打包才可使用。
\n支付宝功能申请\n登录支付宝账号,创建应用接入支付宝App支付能力,包括以下步骤:
1. 创建应用(获取appid)
2. 开通App支付功能
3. 配置密钥(获取公钥、私钥)
参考支付宝官方文档服务器生成订单示例(PHP)
参考示例代码
老版本“移动快捷支付”参考示例代码
微信支付功能申请\n
使用微信支付功能需到微信开放平台申请移动应用并开通支付功能
申请应用后可以获取AppID和AppSecret值。
开通支付功能后可获取支付业务服务器配置数据
PARTNER:财付通商户号
PARTNER_KEY:财付通密钥
PAYSIGNKEY:支付签名密钥
\n服务器生成订单示例(PHP)
参考示例代码应用内支付(IAP)使用说明\n
为什么打包后 微信支付报错-100
亲测,官网上下载的都是坑,搞好好几天才搞好的;
微信请参考下这里:http://www.erdangjiade.com/php/2750.html
支付宝请参考下这里:http://www.erdangjiade.com/php/2475.html
请问支持最新的支付宝支付吗?
ALIPAYSERVER
和WXPAYSERVER能改变吗
我也遇到这个问题了,能问一下你解决了吗?
你哪个眼睛看到的是官方的代码
想钱想疯了,复制官方的代码
同问啊。你解决了么
请问一个app如何支持微信支付到不同的商户appid???
微信和阿里支付之外的支付不支持吗?有没有案例啊?
Dcloud官方给的到处是坑,害我研究了好几天才搞定的,两个支付亲测,完美实现:
微信支付demo请参考下这里:http://www.erdangjiade.com/php/2750.html
PHP支付宝demo请参考下这里:http://www.erdangjiade.com/php/2475.html
能不能呢个提供一个.Net版的服务端的 微信支付?
你们想知道index.php在哪里吗?你们想知道为什么一直调不起支付吗?你们想知道为什么一直报错-1吗?qq
解决了吗?
同问,你的index.php怎么解决的
微信支付的index.php哪里去了?能不能给个完整的源代码
你怎么做了 index.php 自己写出来了吗
你的打包出来ios
支付出现过闪退吗?
支付宝沙盒环境调用不起来的吗
求助:支付宝支付,返回支付失败 error.code=-100, 支付宝62001 用户中途取消支付操作,
是什么原因??
搞了3天了还是这样。
我直接输入订单信息 ,访问支付宝服务端,返回系统繁忙,连状态码都木有
我的支付宝支付好了,是因为这个接口使用的支付宝的老的手机支付接口,新的接口配置不行,按老接口文档
https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1
能不能提供个详细的DEMO,这样不等于没写!就这样糊弄?
我返回的也是error.code=-100,不知道你解决了没有
APP支付,支付宝,C#的方法,可以参考这个:http://www.cnblogs.com/nangong/p/5b5db8769efcd7eee5539.html
求助:支付宝支付,返回支付失败 error.code=-100,是什么原因??
微信支付v3在 github 上缺少 index.php 吧?
https://github.com/dcloudio/H5P.Server/tree/master/payment/wxpayv3
&部署服务器后访问index.php获取订单&
但是该目录下没有 index.php 文件!
支付失败:-100[100]:[payment微信:-1]General errors
我的支付宝进去就出现交易订单处理失败,请稍后再试(ALI64)的错误,请问你的问题解决没啊
我的支付宝支付:一点支付,就弹出:用户中途取消支付(62001),求指导?
header('Access-Control-Allow-Origin: *');
header('Content-type: text/plain');
echo 'success';
返回只有这个?没有以前pc支付接口那种返回:if($_POST['trade_status'] == 'TRADE_FINISHED') {......?
请问这个url地址是什么啊?var WXPAYSERVER='http://demo.dcloud.net.cn/helloh5/payment/wxpay.php?total=';
我也遇到了,你解决了吗
我我也遇到了,你解决了吗
大神你的这个问题解决了吗
用证书打包微信没问题支付宝直接返回-100,不用证书打包支付宝没问题,微信返回-1
同问这个问题
您好,请问您的问题解决了嘛?
选择支持第三方插件,为什么我的配置文件中没有啊!
微信支付调用一次以后就不能调用了,有没有人做成功?和官方的例子对照了很久,还是不行,服务器端用的java
@DCloud_App_Array 现在必须要在微信开放平台申请的APPID才能使用支付吗?公众号可以用吗?
请问微信支付目前开放平台和公众号支付有什么区别?DCLOUD目前支持公众号支付了吗?
可以把你写的例子给我看看吗
alipay节点下的scheme真是随便写就可以吗?
我现在Hbuilder上直接运行android 和ios 都可以打开支付宝进行支付。
android离线打包后 支付宝支付也没有问题,但ios离线打包后就出现了-7,业务参数配置缺失的错误。
在http://ask.dcloud.net.cn/article/282 中对该错误的解释是:使用第三方SDK时缺失SECRET、APPID、APPKEY等数据。
服务器端的订单信息确认过是没有问题的,哪位大神知道我这是哪地方需要填写SECRET、APPID、APPKEY呢。
这个参数是服务器上处理的,可以随意提交参数,由服务器处理即可。
var ALIPAYSERVER='http://demo.dcloud.net.cn/helloh5/payment/alipay.php?total=';
在这个链接中,我可以多带几个参数吗?这个链接要换成我公司的项目链接?
添加了 为什么总是显示没有添加呢 卧槽能不能解决呢
支付失败:-100[100]:[payment微信:-1]General errors
我也遇到这个问题了,请问一下您获取到了吗
支付宝支付中“scheme”是什么参数
正在搞hbuilder平台支付宝,一直都不行,可以给给例子代码吗?谢谢
我已经在android 原生端成功实现了支付宝,微信支付,但是换到hbuilder平台支付宝也通了,就是微信会出这个问题,有人可以解答一下吗?
微信支付时,总是提示‘打包配置的appid[scheme]和订单中的不一致’,但我真的设成一样的了,有没有人可以帮帮我?
我也遇到了,你解决了吗
“----支付失败--------
【9】:打包配置的appid[scheme]和订单中的不一致,http://ask.dcloud.net.cn/article/282
我用微信支付通道。预处理订单生成了,在执行plus.payment.request(pays[id],varpay,function(){})方法的时候,报了这个错。我manifest.json和java后台用的appid都是公众号的appid。但还是报上面的错。是什么原因?
我是按照这个拼接的。。。。。还是不对呢= =,一直提示AL159
订单数据如何生成的,请参考这里的代码:https://github.com/dcloudio/H5P.Server/tree/master/payment/alipay
订单数据格式参考示例:
http://demo.dcloud.net.cn/payment/alipay/?total=1
“打包配置的appid[scheme]和订单中的不一致”是什么意思?没明白你描述的问题。
支付宝支付每次都是62001,请问怎么解决= =
打包配置的appid[scheme]和订单中的不一致;
一直出现这个问题,我可以保证在manifest.json中配置的appid和我在微信开放平台申请到的appid是一致的,开始还是出现这个问题,能给回复下是什么原因吗?
支付宝的 scheme 怎么获取
请在manifest.json中的plus-&distribute-&plugins-&payment节点下添加“appleiap”相关的节点,并提交云端打包
我把channel.id打印出来,无论是使用模拟器和真机都不能获取值为:appleiap的channel.id,可以回复一下么?!项目卡在这了!块急死了!@DCloud_App_Array
plus.payment.getChannels(function(channels){
for(var i in channels){
var channel=channels[i];
alert(channel.id);
if(channel.id==='appleiap'){
java是不是不需要公钥私钥,只要合作id和安全校验码KEY就可以了,@DCloud_App_Array
这个东西是刚起来就死了吗?怎么都没人回答的?额
这是怎么回事啊?
微信支付v3提示62000,然后就 -100 -100 -100了,求解
跳到微信只出现确定按钮,点击按钮返回,提示支付失败-100,怎么破
是哪里配置错了吗、
换成我的参数就不对了。支付宝,交易订单处理失败,请稍候再试。(ALI64)
@DCloud_App_Array 有Java服务器的代码吗?没有的话,可以提供一下返回的数据格式吗?就是在mui里获取到的xhr.responseText ,php的代码看不懂,不知道最后格式化成了什么样
开放平台的
现在微信支付v3版用的是公众平台还是开放平台?
你好,返回-1的错误解决了吗?我的也是返回-1.急死人了,。
你好,你的错误解决了吗?我的也是返回-1
ALIPAYSERVER
这个参数应该是怎么个情况?
请问IOS 支付宝的scheme到底是什么呢?
微信V3 支付支付返回状态码:-1这是什么情况,求高手帮忙
微信V3 支付支付返回状态码:-1这是什么情况,求高手帮忙
有没有C#生成微信App支付订单的Demo啊,现在微信官方好像只有Java和PHP的,坑啊!
支付能支持 app store 支付吗?
可以开发支持 银联 的接口吗? 银联接口需求也很大呀
订单数据是服务器生成的,服务器php代码参考:
https://github.com/dcloudio/H5P.Server/tree/master/payment
请问微信支付的生成预支付订单后的,发起支付时sign数据是如何生成的?我用了很多方式都是支付失败 -1,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
弱弱的问一句啊,为什么demo代码里,没有看到js调用呢?比如说 ` plus.payment.getChannels` 之类的。。。
请问payment现在是只支持支付宝和微信是吧?支持京东网银钱包吗?
https://github.com/dcloudio/H5P.Server/tree/master/payment
php版本的微信支付功能示例代码里面的包含文件在哪里下载获得 ???请提供一下完整的PHP微信支付包
http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=9_1
现在微信开放平台里提供的接口已经不是这个版本了, 没有package这个参数了。 这个怎么解决?
示例中使用的是开放平台注册的应用,正在确认公众号的支付,预计下一版本两种类型都兼容
我的微信支付 总是不成功 错误代码 -1
有微信支付的服务器完整例子么!? 到底是用开放平台还是公众号?
java的也行啊
怎么调用测试网关呢
示例代码只是简单的生成一个订单,应该根据实际项目需求来完善业务逻辑。
生成订单不需要使用到公钥,只需要私钥,公钥是用来校验订单是否合法的。
能不能呢个提供一个.Net版的服务端订单生成?
要回复文章请先或
赞助DCloud可免广告,
赞助DCloud可免广告,这是API里面的例子:
而实际这样,服务端拿到的是空值。
将header更改一下,application/x-www-form-urlencoded,则可以让服务器收到数据
阅读(...) 评论()wx.request 请求成功,被请求方怎么设置数据_百度知道
wx.request 请求成功,被请求方怎么设置数据
我有更好的答案
x: '',
application&#47: &#39url: 'test,
'Content-Type'; ,
y: '&#39
采纳率:66%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 wx.request带参数 的文章

 

随机推荐