appid=〃-1〃/>(appid是什么?)

mip.xncswj.com 2025-12-28 07:55:27
本文介绍appid=〃-1〃/>(appid是什么?)
微信支付参数详情

// 微信支付参数

appid=〃-1〃/>(appid是什么?)

/**

appid=〃-1〃/>(appid是什么?)

* 微信APP支付

appid=〃-1〃/>(appid是什么?)

* @param body          商品描述

* @param out_trade_no    订单号

* @param total_fee      金额(分)

* @param objectStr            附加字段

* @param loca_ip        用户实际ip地址

* @return

* @throws Exception

*/

public static ReturnData wxAppPay(String body, Stringout_trade_no, Integertotal_fee, String objectStr, Stringloca_ip)throws Exception{

  ReturnData result =new ReturnData();

String nonce_str =getRandomString(32);// 随机字符串

  // 封装参数

  SortedMapString, String signParams =new TreeMapString, String();

signParams.put("appid", WechatConfig.appid);// 微信开放平台审核通过的应用APPID

  signParams.put("mch_id", WechatConfig.mch_id);// 微信支付分配的商户号

  signParams.put("nonce_str", nonce_str);// 随机字符串,不长于32位

  signParams.put("body", body);// 商品描述

  signParams.put("attach", objectStr);// 附加数据,在查询API和支付通知中原样返回

  signParams.put("out_trade_no", out_trade_no);// 商户系统内部订单号

  signParams.put("total_fee", String.valueOf(total_fee));// 订单总金额,单位为分

  signParams.put("spbill_create_ip", loca_ip);// 用户端实际ip

  signParams.put("notify_url", WechatConfig.notify_url);// 接收微信支付异步通知回调地址

  signParams.put("trade_type","APP");// 支付类型

      logger.info("微信支付:"+ JSONObject.toJSONString(signParams));

String sign = WeinPayUtil.createSign("UTF-8", signParams ,WechatConfig.key);// 生成签名

  signParams.put("sign", sign);// 签名

  String requestXml = WeinPayUtil.getRequestXml(signParams);// 生成Xml格式的字符串

  // 调用统一支付接口

  // requestXml = new String(requestXml.getBytes("utf-8"), "ISO-8859-1");                //乱码时使用

  String resXml = HttpUtil.post("", requestXml);

//支付返回

  // 返回的result成功结果取出prepay_id:

  Map map = XMLUtil.doXMLParse(resXml);

Stringreturn_code=(String) map.get("return_code");

if (return_code.contains("SUCCESS")) {

      String prepay_id =(String) map.get("prepay_id");// 获取到prepay_id (预支付ID)

      String timestamp = String.valueOf(System.currentTimeMillis() /1000);

SortedMapString, String signParam =new TreeMapString, String();

signParam.put("appid", WechatConfig.appid);// app_id

      signParam.put("partnerid", WechatConfig.mch_id);// 微信商户账号

      signParam.put("prepayid", prepay_id);// 预付订单id

      signParam.put("package","Sign=WXPay");// 默认sign=WXPay

      signParam.put("noncestr", nonce_str);// 自定义不重复的长度不长于32位

      signParam.put("timestamp", timestamp);// 北京时间时间戳

      String signAgain = WeinPayUtil.createSign("UTF-8", signParam, WechatConfig.key);// 再次生成签名

          signParam.put("sign", signAgain);

JSONObject returnParam = JSONObject.parseObject(JSONObject.toJSONString(signParam));

logger.info("微信APP支付返回:"+returnParam.toString());

result.setCode(200);

result.setData(returnParam.toString());

} else {

      result.setMsg((String) map.get("return_msg"));

result.setCode(2);

result.setData(false);

}

  return result;

}

(appid是什么?)">

怎样开发个微信服务号应用

注册应用,这个就不解释了,企业用户才可以使用服务号了,但是菜单什么的订阅号还是可以使用的。

平台地址:

开发文档:

开启开发模式后,设置服务器URL(用来部署自己的应用),Token(用于数据校验)

初次设置有个校验

public static bool Check(string signature, string timestamp, string nonce, string token = null)

{

Logger.Info(string.Format("{0}=?{1}", signature, GetSignature(timestamp, nonce, token)));

return signature == GetSignature(timestamp, nonce, token);

}

public static string GetSignature(string timestamp, string nonce, string token = null)

{

token = token ?? Config.Token;

var arr = new Liststring { token, timestamp, nonce };

arr.Sort();

var result = arr.Aggregate("", (current, s) = current + s);

var sha1 = new SHA1CryptoServiceProvider();

return BitConverter.ToString(sha1.ComputeHash(Encoding.Default.GetBytes(result))).Replace("-", "").ToLower();

}

应用注册成功后,微信也给了我们 AppId 和 AppSecret

定义菜单,目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。

文档地址:

目前自定义菜单接口可实现两种类型按钮,

click: 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

view: 用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。

这里用到access_token

public static string GetAccessToken()

{

var key = Cache.Get("access_token")?? InitAccessToken();

return key+"";

}

public static string InitAccessToken()

{

var url = string.Format(Config.UrlForGetAccessToken, Config.AppId, Config.AppSecret);

var result = new ReadUrlParser(url).HttpContent;

Logger.Info(result);

var key = "";

var jss= new JavaScriptSerializer();

if(result.Contains("access_token"))

{

var rep = jss.DeserializeEntities.AccessToken(result);

key = rep.access_token;

Cache.Set("access_token",key,rep.expires_in);

}else

{

var rep = jss.DeserializeEntities.ErrorMsg(result);

Logger.Error(rep.errcode+rep.errmsg);

key ="";

}

return key;

}

菜单定义后用json格式Post到它的API接口就可以了。

MenuItem

[DataContract]

public class MenuItem

{

[DataMember(Name = "key")]

public string key { get; set; }

[DataMember(Name = "url")]

public string url { get; set; }

[DataMember(Name = "type")]

public string type { get; set; }

[DataMember(Name = "name")]

public string name { get; set; }

}

Button

[Serializable]

[DataContract]

public class Button:MenuItem

{

[DataMember(Name = "sub_button")]

public ListButton sub_button { get; set; }

}

Menu

[DataContract]

public class Menu

{

[DataMember(Name = "button")]

public ListButton button { get; set; }

}

CreateMenu

public ActionResult CreateMenu()

{

var jss = new JavaScriptSerializer();

var menu=jss.Serialize(Util.Config.AppMenu);

menu = menu.Replace("\"sub_button\":null,", "");

menu = menu.Replace("\"url\":null,", "");

menu = menu.Replace("\"key\":null,", "");

var url = string.Format(Util.Config.UrlForCreateMenu, Util.Client.GetAccessToken());

var result = new Util.ClientRequest().SendHttpRequestPost(url, menu);

return Content(result);

}

消息的接收

[ActionName("Index")]

public ActionResult Post(string signature, string timestamp, string nonce, string echostr)

{

Logger.Info("START POST PARSE.");

if (!Util.Client.Check(signature, timestamp, nonce))

{

Logger.Error("参数错误");

return Content("参数错误");

}

var doc = XDocument.Load(Request.InputStream);

var requestMessage = RequestMessageFactory.GetRequestEntity(doc);

处理接收到的requestMessage ,每次都要验证信息的真实性,也就和第一步验证是一回事,

消息有几种:文本、图片、语音、视频、位置、链接

消息的发送

var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage(requestMessage, ResponseMsgType.Text) as ResponseMessageText;

strongresponseMessage.Content =(guest!=null?guest.nickname:"您")+ string.Format("刚才发送了文字信息:{0}", strongRequestMessage.Content);

responseMessage = strongresponseMessage;

var responseDoc =Helper.EntityHelper.ConvertEntityToXml(responseMessage);

return Content(responseDoc.ToString());

用xml 响应就可以了,也是文本、图片、语音、视频、音乐、图文

4

事件的接收,和消息接收是一样的,不过MsgType=event 包括关注、取消关注、上报地址、地定义菜单(click类型)的点击,响应也和消息的响应一样。

5

其余功能还没怎么使用,现在建商城还是使用手机站的页面,可以把用户信息推送到手机站

百度地图签名报错问题求助

完成百度地图签名,运行我的app,获得报错:

01-02 17:39:26.261 11673-11673/com.hu7 E/baidumapsdk﹕ Authentication Error errorcode: -1 uid: -1 appid -1 msg: Exception:com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: current time: Sun Jan 02 17:39:26 格林尼治标准时间+0800 2000, validation time: Wed Nov 08 08:00:00 格林尼治标准时间+0800 2006

签名生成步骤:

1.获取debug.keystore的sha1串

glone@7hu ~$keytool -list -v -keystore ~/.android/debug.keystore

输入密钥库口令:

密钥库类型: JKS

密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: androiddebugkey

创建日期: 2013-11-5

条目类型: PrivateKeyEntry

证书链长度: 1

证书[1]:

所有者: CN=Android Debug, O=Android, C=US

发布者: CN=Android Debug, O=Android, C=US

序列号: 52790da3

有效期开始日期: Tue Nov 05 23:24:19 CST 2013, 截止日期: Wed Nov 05 23:24:19 CST 2014

证书指纹:

MD5: 45:AC:93:20:04:DE:E6:2F:7F:C9:DE:8F:BC:98:DA:79

SHA1: 63:DA:04:51:18:9F:5D:2A:1F:B4:53:2B:B9:73:1F:F1:7E:81:**:**

SHA256: FB:A9:81:4B:EF:EA:A9:A9:EE:84:B8:B3:70:CA:27:D7:F0:51:98:72:A9:37:BE:A8:46:4A:B2:88:B0:E7:F0:E4

签名算法名称: SHA1withRSA

版本: 3

输入到api控制台申请 for mobile key,获取到签名 HuQk3qvYigssTWCiMH*****

填入到 meta-data

android:name="com.baidu.lbsapi.API_KEY"

android:value="HuQk3qvYigssTWCiMHbg****"/

在调用接口的过程中(PC上开发,调试机器用手机,或者模拟器),能用Location定位到位置信息,但是使用

com.baidu.mapapi.map.MapView

android:id="@+id/bmapView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/无法看到地图,显示的是空白。

有没有那种可以给自已的微信发消息的 API

一、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://"); $wxPayHelper-setParameter("spbill_create_ip", "127.0.0.1"); $wxPayHelper-setParameter("input_charset", "GBK"); ? html script language="javascript" function callpay() { WeinJSBridge.invoke('getBrandWCPayRequest',?php echo $wxPayHelper-create_biz_package(); ?,function(res){ WeinJSBridge.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 资料的整理,希望能帮到大家,谢谢支持!

分享网页到微信朋友圈,怎样才能带缩略图

微信公众平台有公布接口,毕竟是TX的产品,还是使用官方接口吧

官方的链接微信分享网页的缩略图、链接、标题和摘要

未注册的可能看不到,直接上代码,粗体的是修改

script

var imgUrl = 'your imgUrl';

var lineLink = 'your link';

var descContent = "万达狂欢节, 夺宝幸运星大抽奖活动开始啦!";

var shareTitle = '万达狂欢节';

var appid = ' ';//填入你的appid

function shareFriend() {

WeinJSBridge.invoke('sendAppMessage',{

"appid": appid,

"img_url": imgUrl,

"img_width": "640",

"img_height": "640",

"link": lineLink,

"desc": descContent,

"title": shareTitle

}, function(res) {

_report('send_msg', res.err_msg);

})

}

function shareTimeline() {

WeinJSBridge.invoke('shareTimeline',{

"img_url": imgUrl,

"img_width": "640",

"img_height": "640",

"link": lineLink,

"desc": descContent,

"title": shareTitle

}, function(res) {

_report('timeline', res.err_msg);

});

}

function shareWeibo() {

WeinJSBridge.invoke('shareWeibo',{

"content": descContent,

"url": lineLink,

}, function(res) {

_report('weibo', res.err_msg);

});

}

// 当微信内置浏览器完成内部初始化后会触发WeinJSBridgeReady事件。

document.addEventListener('WeinJSBridgeReady', function onBridgeReady() {

// 发送给好友

WeinJSBridge.on('menu:share:appmessage', function(argv){

shareFriend();

});

// 分享到朋友圈

WeinJSBridge.on('menu:share:timeline', function(argv){

shareTimeline();

});

// 分享到微博

WeinJSBridge.on('menu:share:weibo', function(argv){

shareWeibo();

});

}, false);

/script

C语言报错,哪儿错了大佬指点一下

在C语言中,如果 standalone 是一个字符串,要判断㝊是否等于 yes (区分大小写)的话,应该是要先包含头文件string.h,然后用函数表达式

strcmp(standalone,"yes")==0

来表示的。

单引号是用来表示单个字符的,不能用来表示字符串。


以上就是关于appid=〃-1〃/>(appid是什么?)的介绍,更多问题请留言或者咨询老师呢

文档于 2025-12-28 07:55:27 修改