微信支付完成自动关注后无法启动机器,必须要点击右上角的完成才会启动机器,

微信支付开发
我的图书馆
微信支付开发
  年底了,反而工作更忙了,我从15年11月开始写《1024伐木累》系列小说和爆笑对白,得到了很多身边的技术好友的支持,现在爆笑对白已经有越来越多的朋友一起帮着写段子,整理,包括小说内容的编辑工作等。虽然《1024伐木累》得到的褒贬不一,但是,对我来说,坚持的过程还是快乐的。我一直有一个愿望,也愿意一直坚持着尝试下去,包括我在公司做技术管理一样,传递给身边程序员小伙伴的思想只有一个:快快乐乐工作,健健康康编码。我想能够参与到技术开发中来的朋友,都希望如此。所以,小说的目的,是希望处于不同开发阶段的朋友,找到自己的方向,最终实现自己的人生价值。而爆笑对白的制作,就是想让更多的程序工作者得到快乐,哪怕只是瞬间的。
  回归主题,16年1月初我对微信开发比较好奇,由于自己是一个比较喜欢钱的人,所以对支付功能颇为冲动,就用公司信息在微信平台申请了一个服务号,还给腾讯打赏了300大洋做了下认证,抽空看了下微信支付官方的文档,大概了解了一下微信支付的流程以及开发过程,说实话,虽然看完了,但是对微信官方提供的文档有些不满,感觉不清不楚的,但是大概的支付方式已经了解,这时候,我的懒劲又来了,在网上找到了做微信对接的C#SDK:Senparc.Weixin.MP。这个类库的封装,在我看来,还是不错的,基本囊货了微信的功能,并且在不断的完善。类库是开源的,每个功能都有写简单的单元测试,看起来一目了然。主要对接DLL对应的功能如下:
  公众号+微信支付 SDK:Senparc.Weixin.MP.dll
  企业号 SDK:Senparc.Weixin.QY.dll
  开放平台 SDK:Senparc.Weixin.Open.dll&
  官方地址: &
  当然,我们要完成公众号微信支付功能的开发,需要使用Senparc.Weixin.MP.dll这个DLL,查阅了一下官方提供的DEMO以及教程,并没有载入微信支付相关的说明,没办法,既然拿到源码了,自己找吧。
  打开Senparc.Weixin.MP.sln,根据英文文件夹名称的分类,可以初步判断,关于微信支付,被封装在TenPayLib文件夹中,但是我还发现,里面存在名称叫“TenPayLibV3”的文件夹,那如何选择呢?网上搜索了一下,得出这个结论:号之前申请的为v2版,之后申请的为v3版。我用来测试微信支付的服务号是在16年刚申请,并且通过验证的,那么果断使用V3吧。
  打开TenPayLibV3文件夹:
  这里发现多个类库,每一个都是做什么的呢?我们这里不一一叙述,感兴趣的朋友可以下载来看,每一个类的文件头都有功能说明与描述,对照微信官方支付说明,我们直接开始做支付。
  进入微信公众号,点击功能菜单中的微信支付:并相应点击 使用教程-公众号支付
  迅速对文档内容重温、浏览,以方便在Senparc.Weixin.MP.dll中查找相应的功能。
  先配置支付授权目录,添加支付测试白名单,支付目录只支持三个,并且域名必须经过ICP备案。授权目录的作用是,如果要发起微信支付请求,请求的链接地址必须在授权目录下,否则身份无效,支付不能成功。测试白名单中添加的个人微信号,才能完成微信支付测试目录支付的测试,不在白名单中人员发起支付申请,支付不能成功。
  配置完成后,如何调用呢?我们继续看官方说明:  
  “在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。
  注意:WeixinJSBridge内置对象在其他浏览器中无效。
  列表中参数名区分大小,大小写错误签名验证会失败。”
  OK,这里说明了几个事情,第一必须在微信浏览器进行;第二,参数区分大小写;第三,数据格式为JSON。
  官方说明,只要在页面中调用如下脚本,即可开启微信支付功能:
1 function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" : "wx0ec43b",
//公众号名称,由商户传入
"timeStamp":" ",
//时间戳,自1970年以来的秒数
"nonceStr" : "e61463f8efacccfbbb444", //随机串
"package" : "prepay_id=u802345jgfjsdfgsdg888",
"signType" : "MD5",
//微信签名方式:
"paySign" : "70EABB79628FBCAFADD89" //微信签名
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {}
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回
ok,但并不保证它绝对可靠。
16 if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
onBridgeReady();
  我的调用代码:因为我要在点击按钮确认支付之后,在调用微信支付进行后续操作,把官方代码提出到方法中
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": $('#APPID').val(),
//公众号名称,由商户传入
"timeStamp": $('#Timestamp').val(),
//时间戳,自1970年以来的秒数
"nonceStr": $('#Noncestr').val(), //随机串
"package": $('#package').val(),
"signType": "MD5",
//微信签名方式:
"paySign": $('#paySign').val() //微信签名
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
//支付成功,后续自行处理
//支付取消,或者其他错误,自行处理
  好吧,那这堆参数是从哪来的,都是啥玩意儿?我们逐个分析一下:
  appId:这个做微信开发都应该知道,公众号在开发者菜单就能找到
  timeStamp:时间戳,官方描述为“自1970年以来的秒数”,不用担心,肯定能从支付类库里找到
  nonceStr:官方解释是随机串“e61463f8efacccfbbb444”,靠啥玩意儿?详见,原来就是一套加密规则和算法,做过URL请求接口的朋友应该知道,有些公司JSON串的签名方式和这比较类似。
  package:预支付ID,调用官方API统一下单接口可以获得
  signType:字符串"MD5" & &
  paySign:官方解释是微信签名“70EABB79628FBCAFADD89”,好吧,我忍了,在看下,看来和随机串一个鸟样&
  到这里,官方的接口说明已经了解的很清楚了,那么下面就要解决调用微信支付的这几个参数了,通过Senparc.Weixin.MP.dll应该如何使用呢?既然需要先调用统一下单接口获取预支付订单ID,好吧,我们先来研究一下,如何获得这个ID吧。
  官方给出了,我们不在赘述,各参数研究按照上述接口的方式自行研究解决,唯一区别在于,调用官方接口需要传入一个XML,那很好办,拼接一下就可以了,预支付调用方法如下:
//这里通过官方的一个实体,用户自行使用,我这里是直接读取的CONFIG文件
private static Senparc.Weixin.MP.TenPayLibV3.TenPayV3Info tenPayV3Info = new Senparc.Weixin.MP.TenPayLibV3.TenPayV3Info(ConfigurationManager.AppSettings["corpId"], ConfigurationManager.AppSettings["corpSecret"], ConfigurationManager.AppSettings["mch_id"]
, ConfigurationManager.AppSettings["key"], ConfigurationManager.AppSettings["v3url"]);
/// &summary&
/// 微信预支付
/// &/summary&
/// &param name="attach"&&/param&
/// &param name="body"&&/param&
/// &param name="openid"&&/param&
/// &param name="price"&&/param&
/// &param name="orderNum"&&/param&
/// &returns&&/returns&
public static string PayInfo(string attach, string body, string openid, string price, string orderNum = "3549")
RequestHandler requestHandler = new RequestHandler(HttpContext.Current);
//微信分配的公众账号ID(企业号corpid即为此appId)
requestHandler.SetParameter("appid", tenPayV3Info.AppId);
//附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
requestHandler.SetParameter("attach", attach);
//商品或支付单简要描述
requestHandler.SetParameter("body", body);
//微信支付分配的商户号
requestHandler.SetParameter("mch_id", tenPayV3Info.MchId);
//随机字符串,不长于32位。
requestHandler.SetParameter("nonce_str", TenPayUtil.GetNoncestr());
//接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
requestHandler.SetParameter("notify_url", tenPayV3Info.TenPayV3Notify);
//trade_type=JSAPI,此参数必传,用户在商户公众号appid下的唯一标识。
requestHandler.SetParameter("openid", openid);
//商户系统内部的订单号,32个字符内、可包含字母,自己生成
requestHandler.SetParameter("out_trade_no", orderNum);
//APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
requestHandler.SetParameter("spbill_create_ip", "127.0.0.1");
//订单总金额,单位为分,做过银联支付的朋友应该知道,代表金额为12位,末位分分
requestHandler.SetParameter("total_fee", price);
//取值如下:JSAPI,NATIVE,APP,我们这里使用JSAPI
requestHandler.SetParameter("trade_type", "JSAPI");
requestHandler.SetKey(tenPayV3Info.Key);
requestHandler.CreateMd5Sign();
requestHandler.GetRequestURL();
requestHandler.CreateSHA1Sign();
string data = requestHandler.ParseXML();
requestHandler.GetDebugInfo();
//获取并返回预支付XML信息
return TenPayV3.Unifiedorder(data);
好的,拿到预支付订单的返回数据,一切又都好办了,根据返回参数的不同,自行解决,我们只关心调用正确的过程,操作继续,在返回的正确XML数据中,我们获取到了&&prepay_id&&![CDATA[wx507cbf6ffd8b]]&&/prepay_id&(官方示例),好的,开始在页面做支付吧!
这里,我封装了一个实体,用来传输常用的数据,当然,各位也可以参考Senparc.Weixin.MP.dll提供的实体类。
public class ShareInfo
string corpId = string.E
public string CorpId
get { return corpId; }
set { corpId = }
string ticket = string.E
public string Ticket
get { return }
set { ticket = }
string noncestr = string.E
public string Noncestr
get { return }
set { noncestr = }
string timestamp = string.E
public string Timestamp
get { return }
set { timestamp = }
private string paySign = string.E
public string PaySign
get { return payS }
set { paySign = }
private string package = string.E
public string Package
get { return }
set { package = }
我们继续,来看一下支付接口需要用到的参数如何获取:
public static ShareInfo GetPayInfo(string prepayid)
shareInfo = new ShareInfo();
//检查是否已经注册jssdk
if (!JsApiTicketContainer.CheckRegistered(corpId))
JsApiTicketContainer.Register(corpId, corpSecret);
JsApiTicketResult jsApiTicket = JsApiTicketContainer.GetTicketResult(corpId);
JSSDKHelper jssdkHelper = new JSSDKHelper();
shareInfo.Ticket = jsApiTicket.
shareInfo.CorpId = corpId.ToLower();
shareInfo.Noncestr = JSSDKHelper.GetNoncestr().ToLower();
shareInfo.Timestamp = JSSDKHelper.GetTimestamp().ToLower();
shareInfo.Package="prepay_id=" + prepayid.ToLower();
RequestHandler requestHandler = new RequestHandler(HttpContext.Current);
requestHandler.SetParameter("appId", shareInfo.CorpId);
requestHandler.SetParameter("timeStamp", shareInfo.Timestamp);
requestHandler.SetParameter("nonceStr", shareInfo.Noncestr);
requestHandler.SetParameter("package", shareInfo.Package);
requestHandler.SetParameter("signType", "MD5");
requestHandler.SetKey(tenPayV3Info.Key);
requestHandler.CreateMd5Sign();
requestHandler.GetRequestURL();
requestHandler.CreateSHA1Sign();
shareInfo.PaySign = (requestHandler.GetAllParameters()["sign"]).ToString();
return shareI
这样,支付接口需要用到的参数,就都封装在ShareInfo里了,好吧,调用之后,我们回到页面的后置代码中,或者你采用的ORM对应代码中去,将参数输出到页面
//处理页面支付调用信息
ShareInfo shareInfo = TenPayModule.GetPayInfo(prepayid);
System.Web.HttpContext.Current.Response.Write(string.Format("&input type=\"hidden\" id=\"Noncestr\" runat=\"server\" value=\"{0}\" /&", shareInfo.Noncestr));
System.Web.HttpContext.Current.Response.Write(string.Format("&input type=\"hidden\" id=\"Timestamp\" runat=\"server\" value=\"{0}\" /&", shareInfo.Timestamp));
System.Web.HttpContext.Current.Response.Write(string.Format("&input type=\"hidden\" id=\"APPID\" runat=\"server\" value=\"{0}\" /&", shareInfo.CorpId));
System.Web.HttpContext.Current.Response.Write(string.Format("&input type=\"hidden\" id=\"paySign\" runat=\"server\" value=\"{0}\" /&", shareInfo.PaySign));
System.Web.HttpContext.Current.Response.Write(string.Format("&input type=\"hidden\" id=\"package\" runat=\"server\" value=\"{0}\" /&", shareInfo.Package));
好的,写到这里,大家参照上面的JS代码,就可以完成整个的支付功能了。最后,再附送一个生成商家订单号的方法,代码如下:
public string GetOrderNumber()
string Number = DateTime.Now.ToString("yyMMddHHmmss");
return Number + Next(1000, 1).ToString();
private static int Next(int numSeeds, int length)
byte[] buffer = new byte[length];
System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider();
Gen.GetBytes(buffer);
uint randomResult = 0x0;
for (int i = 0; i & i++)
randomResult |= ((uint)buffer[i] && ((length - 1 - i) * 8));
return (int)(randomResult % numSeeds);
好了,一切都是这样的简单,一两个小时,微信支付轻松搞定!
TA的推荐TA的最新馆藏
喜欢该文的人也喜欢微信支付后怎样实现自动关注平台? - 知乎270被浏览130554分享邀请回答299 条评论分享收藏感谢收起11 条评论分享收藏感谢收起查看更多回答3 个回答被折叠()微信支付获取 prepay id 出现失败问题
[摘要]微信支付获取prepayid出现失败问题微信支付会要求先从微信服务器获取prepayid。我们开发完成后(语言是PHP,使用微信的支付SDK...
微信支付获取 prepay id 出现失败问题
微信支付会要求先从微信服务器获取 prepay id 。我们开发完成后(语言是PHP,使用微信的支付SDK,请求时使用curl),在测试环境的机器上,基本没有发现请求失败的情况,上线后,却发现经常出现错误,概率1/5甚至更高。开始没有深究原因,采用重试的方式,不过发现,只要失败了,重试也会失败。
记录下 curl 的错误是:errno:35, error: SSL Connect Error。
网上查相关资料,没有找到解决方案。联系微信技术支持,他们没有任何建议,觉得是我们的问题,让我们自己查。
在我们服务器上通过 tcpdump 抓包: tcpdump -i eth1 ip host 140.207.69.102 -w wxpay.cap ,对比成功和失败的包(使用wireshark分析):
成功的数据包:
失败的数据包:
可以看到,失败的时候,TCP 3次握手后马上进行4次挥手操作 没有任何内容交互,而且 close 是客户端(我们这边)发起的。
推论:与remote服务端应该无关,还没开始https内容部分的交换,应该是本地在进行某些工作的时候发现异常,close了连接(但程序如果让我写会考虑先本地工作结束后再connect,不清楚为什么先connect然后再获取本地资源)。
可以通过 strace curl -X POST https://api.mch./pay/unifiedorder 查看整个系统调用过程,是先 connect,然后从 系统本地etc目录下加载一些CA相关文件。
也可以通过 curl -v -X POST https://api.mch./pay/unifiedorder 查看相关信息。对于 PHP 中,可以设置:curl_setopt($ch, CURLOPT_VERBOSE, true) 。
失败时是类似这样的输出:
* About to connect() to api.mch. port 443 (#0)
* Trying 140.207.69.102… connected
* Connected to api.mch. (140.207.69.102) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5990
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
成功时输出如下(省略了response):
* About to connect() to api.mch. port 443 (#0)
* Trying 140.207.69.102… connected
* Connected to api.mch. (140.207.69.102) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS: client certificate not found (nickname not specified)
* SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA
* Server certificate:
* subject: CN=payapp.,OU=R&D,O=Tencent Technology (Shenzhen) Company Limited,L=shenzhen,ST=guangdong,C=CN
* start date: 4月 28 00:00:00 2015 GMT
* expire date: 4月 27 23:59:59 2016 GMT
* common name: payapp.
* issuer: CN=GeoTrust SSL CA – G2,O=GeoTrust Inc.,C=US
> POST /pay/unifiedorder HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: api.mch.
> Accept: */*
1、从现象:有些机器有问题,有些没有问题;有些概率大,有些概率小;可大体上推断,跟机器有关系,可能机器环境不一样导致的;
2、抓包分析原因,进一步确认不是服务端(微信支付)的问题;
3、根据错误描述在网络上寻求帮助;
4、学习 curl 相关选项的使用;strace 的使用;
相关介绍:微信支付
微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。微信支付以绑定银行卡的快捷支付为基础,向用户提供安全、快捷、高效的支付服务。
日,腾讯公司发布的腾讯手机管家5.1版本为微信支付打造了“手机管家软件锁”,在安全入口上独创了“微信支付加密”功能,大大提高微信支付的安全性。
用户只需在微信中关联一张银行卡,并完成身份认证,即可将装有微信app的智能手机变成一个全能钱包,之后即可购买合作商户的商品及服务,用户在支付时只需在自己的智能手机上输入密码,无需任何刷卡步骤即可完成支付,整个过程简便流畅。
目前微信支付已实现刷卡支付、扫码支付、公众号支付、APP支付,并提供企业红包、代金券、立减优惠等营销新工具,满足用户及商户的不同支付场景。
微信支付支持以下银行发卡的贷记卡:深圳发展银行、宁波银行。此外,微信支付还支持以下银行的借记卡及信用卡:招商银行、建设银行、光大银行、中信银行、农业银行、广发银行、平安银行、兴业银行、民生银行。
编程开发子分类只需一步,快速开始
当前位置: &
31406人阅读 36人回复
微信扫一扫看帖、分享更快捷
在线时间121 小时最后登录精华1UID3326124性别保密帖子积分2288阅读权限70注册时间
高中二年级, 积分 2288, 距离下一级还需 712 积分
UID3326124性别保密帖子阅读权限70注册时间
 & &支付宝、微信支付、闪付、Apple Pay……支付手段越来越多,打开手机就可快速完成交易,但有的是用户扫商家的二维码,有的是商家扫用户的二维码……是不是脑子都乱了?
  果然就有人分不清收款码和付款码。据中国台州网报道,浙江台州新河24岁的姑娘小赵是一名微商,却因搞不清楚收款码和付款码,不仅让原本进账的288元打了水漂,而且让自己亏进去1500元。
  24岁的小赵是一名微商,在朋友圈卖化妆品。4月24日上午11时30分许,一名微信昵称叫“美美”的加了她的微信。一番交谈后,“美美”表示想买一只眼霜,小赵推荐了一款价格是288元的眼霜。“美美”同意购买。很快,一单生意就谈妥了。小赵让“美美”通过微信红包将钱汇过来。“美美”称微信转账支付金额超额了,让她发一个二维码,扫码付款。
  没多想,小赵就发了一个收款码给她,但“美美”说这不对,让小赵进入微信钱包首页,将付款码的二维码发给她。“二维码这个我不太懂,就按照她说的发过去了,”小赵说,第一次“美美”说超时,让再发,第二次发过去说网络不好,又发了一次,一共发了三次二维码。
  等小赵发完验证码后,再联系“美美”,已经联系不上对方。小赵慌了,此时短信提醒微信绑定的农业银行分三次付款共1500元,每次500元左右。
网友nice2018也在一论坛上晒出了类似的骗局 ↓↓
  这里要提醒大家的是,当微信支付交易金额小于1000元时(支付宝的免密金额是2000元),对方通过特定收款工具即可扫描你的付款码扣款,不需要密码!(前提当然是你先展示了自己的付款码)
  当然,付款码会不断动态更新,被扫过一次后将会失效。
  针对一些网友反馈的情况,今天(19日)下午,微信支付团队发出紧急提醒:
  千万不要随便把付款码截图发送出去!!
  无缘无故向你要付款码截图的人99%是骗子!!
  下面再给大家科普一下付款码的相关知识,以后再也不怕上当受骗啦!收款二维码及付款码一定要分清!!
  点击微信右上角的“+”,进入“收付款”-“我要收款”,就会出现一个二维码页面。
属性:二维码
特点:长期不变
用途:别人无需加你好友,扫二维码就可以向你转账。
  点击微信右上角的“+”,进入“收付款”-“向商家付款”或者,打开“钱包”-“付款”。
属性:由一个条形码+一个二维码组成
特点:动态更新
用途:商家用专用的设备扫一扫,支付过程就完成了。
  好不容易分清了收款码和付款码(其实还是挺明显的),有小伙伴又会担心:付款码对1000元以内的交易免密支付,那消费安全该如何保障呢?
  微信支付团队建议:设置手势密码,这样就算他人拿到你的手机也无法进入钱包进行消费。当你输入手势密码之后展示出来的条形码+二维码,可用于向商家付款,但仅限自己使用,切勿截屏分享。
  万一碰见无良商家诱骗盗刷顾客付款码怎么办?如果你遇到了商户或他人利用付款码截图进行违规操作或诈骗等行为,只要向微信支付团队投诉并提供证据,就会获得退款。
(内容来源:微信)
请登录后再回复!
网友ID经验
我和我的小伙伴都惊呆了
在线时间43 小时最后登录精华0UID983259性别男帖子积分502阅读权限30注册时间
小学六年级, 积分 502, 距离下一级还需 98 积分
UID983259性别男帖子阅读权限30注册时间
顶贴…………
在线时间639 小时最后登录精华1UID1883928性别保密帖子积分61573阅读权限90注册时间
博士, 积分 61573, 距离下一级还需 38427 积分
UID1883928性别保密帖子阅读权限90注册时间
在线时间2 小时最后登录精华0UID3391041性别保密帖子积分76阅读权限0注册时间
UID3391041性别保密帖子阅读权限0注册时间
提示: 作者被禁止或删除 内容自动屏蔽
在线时间174 小时最后登录精华0UID3325212性别男帖子积分399阅读权限30注册时间
小学四年级, 积分 399, 距离下一级还需 1 积分
UID3325212性别男帖子阅读权限30注册时间
哎,太无脑了!
在线时间5 小时最后登录精华0UID350332性别保密帖子积分1390阅读权限0注册时间
UID350332性别保密帖子阅读权限0注册时间
提示: 作者被禁止或删除 内容自动屏蔽
pc蛋蛋微信群http://
pc蛋蛋外围群http://
在线时间290 小时最后登录精华0UID2163828性别男帖子积分3872阅读权限70注册时间
高中三年级, 积分 3872, 距离下一级还需 128 积分
UID2163828性别男帖子阅读权限70注册时间
在线时间55 小时最后登录精华0UID3386394性别保密帖子积分1614阅读权限150注册时间
UID3386394性别保密帖子阅读权限150注册时间
这个帖子一定要支持啊
在线时间55 小时最后登录精华0UID3386394性别保密帖子积分1614阅读权限150注册时间
UID3386394性别保密帖子阅读权限150注册时间
再次支持!提高警惕!
在线时间284 小时最后登录精华0UID2779920性别保密帖子积分9316阅读权限80注册时间
大学三年级, 积分 9316, 距离下一级还需 684 积分
UID2779920性别保密帖子阅读权限80注册时间
精彩看台热门推荐:
品牌广播台
鼓励积极发帖的网友,合论的精彩需要你们来创造!
积极其他网友们互动,使主题帖和版面更加活跃,以资鼓励!

我要回帖

更多关于 微信小程序点击完成后 的文章

 

随机推荐