Android端接入微信支付的坑

Android--快速接入微信支付 前言最近实习的时候要求我做支付模块,主要是介入支付宝支付和微信支付的。支付宝支付接入相对来说比较好做,官网文档也比较容易懂。但是做微信支付的时候,官网文档就有点懵逼了,不过慢慢读还是能够开通的。与是抽时间记录一下微信支付接入的过程。 这里我不去说明AppID申请的过程,主要记录一下开发过程。微信支付首先一定要清楚微信支付业务流程,这样接下来就事半功倍了。 主要官方文档看这: - 业务流程 - A 阅读详情

这篇文章纯属记录,在一个问题上的爬坑辛酸(>~<)

微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

微信支付开发步骤:

遇到问题:

步骤1、2、3都没问题,卡在了步骤四,App调起微信支付时,出错了,一直返回-1,一直返回-1,一直返回-1!!!

真的好气哦,用了一天来解决这个问题!

其实主要是微信的开发文档并不友好,甚至有点恶心!(>!<)

为什么这么说,看看他给的文档就知道了,-1,-1,-1!!!

签名问题?

先看看我的上任大佬,遇到这个问题总结的博客吧,https://www.jianshu.com/p/ca7707943423

多半是签名问题,但是后台服务器返回的签名进行过二次签名啊,而且我也尝试过不用后台返回的签名,自己签名,但是依然报那个该死的-1错误。

于是和后台不停的调试,对字段,看空格,大小写···,但是调用微信支付的代码量真的不多,无论Android前端还是后台,就不知道错在哪儿了!!!

看微信Demo?https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

但是说实话,我还是很抱怨微信提供的文档,连个Demo都这么恶心,AS打开不停的报错,解决一个还来一个,索性不看你了呗

重点来了-》来填坑吧

我们知道要接入微信支付,需要微信支付开发文档,还有微信开放平台-管理中心,既然使用前者找不出问题,就看看后者吧!

好吧,问题就出在这了,你个小妖精,终于被我抓住了。

在管理中心需要配置app的包名和签名,包名肯定没问题,应用签名那就用APK helper看看呗,不看不知道一看吓一跳,签名竟然不一样,额,额,额,

原来啊,上任大佬走之前改了app的签名文件,忘了在管理中心更新应用签名!!!

解决问题

你以为改了应用签名就可以了吗?no,no,no,程序员总是乐观主义者,为啥还是返回-1呢,我相信还是有很多同学都遇到这个问题了,然后找找啊,原来问题出在这

~豁然开朗~

虽然你后台应用签名修改过了,并且修改后的应用签名可以立即生效,但是之前app调用微信的时候使用的签名已经保存在微信中了,客户端会缓存之前的签名!!!

最后,去将微信的数据缓存给清除或者就是将微信客户端重新安装,就可以成功接入微信支付啦,啦啦,啦啦啦~

自我总结:

微信支付,从三方面查找问题,

  • android代码中的签名、appid等;
  • 服务器后台访问微信以及传给android客户端的数据字段,还有二次签名等;
  • 微信开放平台-管理中心的包名和应用签名。

总的看来,签名出错几率比较大。为啥好多人容易出错,因为不只是应用内的代码,还涉及其他人员和平台的辅助。

 

 

Android端的微信支付接入实战 1.开始之前 在开始接入之前,我们先来玩儿一玩儿官网的Demo. 代码下载地址自己百度,但是下载好了之后你无法直接跑起来,为什么?问微信… 我直接把我改好了能用的demo跑起来,key还是微信的测试key,所以大家甩着梭子随意干吧: https://github.com/zj614android/wxpay 注意是eclipse版本的,不要问我为什么不整成eclipse的,还是那句话,问... 阅读详情

相关推荐

Android App支付系列(一):微信支付接入详细指南(附官方支付demo)

一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统显然是不明智的,国内已经有多家成熟的移动支付提供商,腾讯就是其中之一。梳理了下微信支付的接入,今天给大家分享下腾讯旗下的微信支付SDK的接入流程

MichaelX的专栏 7万+

微信:签名不对,请检查签名是否与开放平台上填写的一致

今天接完微信登录SDK后,满怀期待打开app,提示“微信:签名不对,请检查签名是否与开放平台上填写的一致”,给我泼了一下冷水,还好这冷水不是特别冷!!! 1.用一个工具,名字叫GenSignature,下载链接是微信开放平台的:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_lis...

xmx5166的博客 8万+

Android进阶——安卓接入微信,获取OpenID

需求:接入微信支付,需要获取 OpenID。 安卓接入微信指南:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN 移动应用微信登录开发指南:https://open.weixin.qq

贵宝的博客 2万+

微信支付问题记录(android)

1.在某台机子上支付失败,换台手机可以支付成功? 原因是微信会记录所要进行支付的app的签名,因为以前记录的这个app的签名不是正式签名导致支付失败,后面即使再安装正式签名的app也会支付失败,原因是微信会缓存记录的签名,解决方法是进到手机的设置的应用中找到微信,然后清除缓存,再重新安装就可以了(或者删掉微信重装)。2.不管什么机子都支付失败,签名错误? 一般的这种情况是应为你在开放平台

cuiweicai的博客 760

android实现跳转支付宝微信支付,Android接入支付宝和微信支付的方法

前言很多APP都需要支付功能,国内一般就是支付宝和微信了。目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端。APP端总结起来就是三步走:接入支付的库接受服务端的订单信息,发起调用支付宝和微信接收支付宝和微信的回调支付宝接入首先是接入支付宝的aar文件比较坑的是支付宝还需要下载aar文件导入,而不是gradle里面一行依赖就能搞定的。我们需要去官网下载最新...

weixin_42510453的博客 3215

Unity接入微信支付/登录功能-Android

继之前的文章Unity头像上传功能实现 一 , 将Unity与安卓交互的功能整合了一下,接入了微信支付/登录,支付宝支付 GitHub地址: https://github.com/alexchenc/unityplugins 微信支付/登录 接入微信的功能,需要先到微信开放平台申请一个应用,拿到AppID和AppSecret,并且已获得微信支付和微信登录的权限 获取微信支付的权限之后,...

cscscs007的博客 2951

签名不对,请检查签名是否与开放平台上填写的一致,问题彻底解决

做APP微信登录的时候,弹出『签名不对,请检查签名是否与开放平台上填写的一致。

yw0769com的博客 1万+

Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法(后台订单支付API设计)

客户端获取后台支付API请求参数的设计 参数样例: { data: { method: 1, platform: 1, version:1.0, relate_orders:B201602031023,B2016020310231, order_no: BZY201604200952100, order_type: 1, total_fee: 1, description: 商品购买, client_ip:'192.168.1.1', limit_pay:1 }, sign: 91C1E03D0434762E45D0998F4088F438 } 返回参数样例: {

从支付服务简单聊聊缓存的正确使用姿势

前言最近,花时间撸了一个支付(支付宝、微信)服务,可实现多商户、多应用界面数据化配置。对外提供应用ID以及秘钥,调用者只需要调用相关接口即可实现支付相关逻辑。缓存为什么会聊到缓存呢?当然...

不是太高的手的专栏 456

深入解析STM32驱动AT25DF321A FLASH芯片的SPI通信与数据完整性验证

本文深入解析STM32通过SPI通信驱动AT25DF321A FLASH芯片的全过程,包括硬件连接、驱动函数实现与数据完整性验证。重点介绍SPI配置、读写操作优化及CRC校验方法,确保数据存储的可靠性,为嵌入式存储系统开发提供实用指南。

agile9scrum的博客 1064

GD32H7系列SRAM优化配置实战指南

本文详细解析了GD32H7系列MCU的SRAM架构,包括ITCM、DTCM、AXI SRAM等关键内存区域的特点与性能差异。通过实战指南,指导开发者如何通过配置寄存器和链接脚本,优化内存布局以提升系统性能,并重点探讨了DMA操作与CPU缓存一致性的解决方案,帮助充分发挥GD32H7的高性能潜力。

weixin_29169899的博客 518

Android 微信支付的坑

最近在做公司微信支付的需求,着实遇到了个大坑,在这里做一个简单的记录: 1、应用集成微信支付: 这部分不是我要说的重点,严格的按照官方集成文档来集成,https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5,不过在这里也需要注意几点, (1)签名要与开放平台上填写的一致,(签名的生成方法需要下载官方给的apk,输入包名...

m0_37550680的博客 444

Python量化交易实战:如何用pytdx库快速解析通达信.day文件(附完整代码)

本文详细介绍了如何使用Python的pytdx库高效解析通达信.day本地数据文件,构建免费、稳定的量化交易数据源。文章提供了从环境配置、基础数据读取、复权处理到板块信息获取的完整实战代码,并演示了如何将处理后的数据无缝接入Backtrader等回测框架,为量化策略开发提供可靠的数据基础。

ppp33的博客 1142

Android端微信支付接入

下面我们先来看下微信支付的效果图:                     1.首先我们来看下APP支付的业务流程:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3,如下:  2.移动端微信支付开发步骤请参考:https://pay.weixin.qq.com/wiki/doc/...

yushuangping的博客 5087

天线学习笔记——HFSS简单阵列天线

在HFSS15.0版本中使用 Radiation --> Antenna Array Setup 设置天线阵列的参数时的设计列表如下: 值得注意的是,在该版本中所定义的是:第一个阵元的位置坐标(First Cell Position)、阵元之间的间距(Directions)和阵元的数量(Number of Cells) 这些参数。 在ANSYS中的HFSS仿真中定义天线阵列如下: 与老版本不同的是:中心点坐标(Center Position)和布局设置(Layout Setting)。在布局设置中

Ethan的博客 1万+

发那科机器人通信库使用指南与踩坑记录

GitHubNuGet(如本文基于该库,在 C# / .NET 下通过 TCP 与 FANUC 机器人控制器通信,实现读当前位姿、PR 寄存器、以及 DI/DO/GI/GO 等 IO 的读写。GitHubNuGet(如本文基于该库,在 C# / .NET 下通过 TCP 与 FANUC 机器人控制器通信,实现读当前位姿、PR 寄存器、以及 DI/DO/GI/GO 等 IO 的读写。

songhuangong123的博客 323

Unity接入微信支付SDK

Unity接入微信支付SDK

5827

30、电力生产系统中的效率测量

本文探讨了如何使用数据包络分析(DEA)模型来评估电力生产系统的效率。文章详细介绍了电力生产系统的三个主要环节——发电、输电和配电,并通过多种DEA模型,如输入导向模型、输出导向模型以及基于松弛的SBM模型,展示了效率测量的方法和技术。同时,结合实际案例分析,说明了DEA模型在识别效率低下环节及提出改进建议方面的应用价值。

rgv2345678的博客 116

Android微信支付接入(三步完工解析+实例)最新版

Android微信支付接入(流程清晰) 最近有朋友问到微信支付的一些开发点,博主就把微信支付接入流程,捋一捋.基本初入安卓的也能根据本文,快速接入微信支付. 一 公司官方注册微信开放平台账号(准备1) 第一步:开发者第一点注意贵公司是否已申请微信开放平台账号( 微信目前只支持公司账号申请支付,暂不支持个人开发者支付申请),没有则协调沟通申请即可. 二 登录微信开放平台创建移动应...

KX興博客 1万+

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1322

(四)美赛画图篇:画图模板+画图工具

美赛画图篇:画图模板+画图工具(一)画图模板(二)画图工具 因为散点图、折线图等多与数据有关,且需相关软件生成,故此处多是通用模板。直接替换文字内容即可。 (一)画图模板 1、Visio圆圈图 适合于:指标体系(E题常用) 点击下载:1 C币 如果不想花费且时间充足,悄咪咪地说,在visio-模板搜索可以找到很多。(稍微会耗一点时间) 2、简单指标体系图PPT 适合于指标体系 点击下载:0 C币...

weixin_43689393的博客 1万+

Android中微信支付接入的完整教程来了

在讲解微信支付之前,最重要的也是关键的一点就是一定先把签名配置好,否则后面调不起微信支付界面【查看配置签名】 ,当然,如果你已经弄好了,就开始吧! 一.添加gradle依赖 在app module目录下的build.gralde中添加 dependencies { //微信支付SDK implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' } gralde构建完成之后,再做下一步的操作 二.在A

kaolagirl的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

鸿蒙Next如何接入微信支付

鸿蒙Next接入微信支付保姆式教程,看完直接用

m0_59023970的博客 5829

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

最简单的安卓接入微信支付教程,不简单你打我!

安卓接入微信支付最简单的教程,看完不会你打我! 接入微信支付呢,你首先得有个微信支付的商户端账户。这个账户一般你公司会提供给你的,一般是财务注册的,当然如果你们家的财务没有注册的话你可以教她怎么注册。顺便泡泡妞(财务一般都是女的吧)。注册链接点这里 https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F,或者百度

zYinux 1949

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android微信支付彻底扫坑

由于公司运营需要,Android客户端要增加微信支付。在看了几遍官方文档之后,加上之前有集成微信分享的经验,所以很快就把调用微信支付的代码写好了,待微信支付相关接口完成后联调时,才发现山高路远坑深啊!从下午2点半开始调试,一直折腾到快6点,那个微信支付界面才“千呼万唤始出来”,更坑爹的是,压根儿就不是我客户端的问题,而是后台接口那边sign生成时出了问题。在解决问题的过程中,看到网上太多关于微信支...

Battling against our own ignorance 2万+
上一篇: Android BLE4.0 从小白到理解的过程
下一篇: Charles抓包
Swuagg
Swuagg 新星创作者: 移动开发技术领域 新星创作者: 移动开发技术领域 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄10年 2355粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值