安卓微信支付开发基本流程-demo篇
微信支付的应用场景非常广泛,但是官方文档写的不够详细。我百度了很多资料,结果也不满意,在填了很多坑以后,特意写下此博客,给自己总结,也让后面的人少走些弯路。
微信支付的开发基本流程在官方文档已经说清楚了,由于我们项目的服务器接口还没写好,所以我先导入官方demo看能不能支付成功并成功回调到结果页面。
以Android Studio为例
1.先导入sdk包
把下载好的libammsdk.jar 文件复制到libs文件夹下,在build.gradle里面配置信息:compile files('libs/libammsdk.jar'),这个没难度,不放图了
调试的时候需要用到appid 测试的时候用官方demo里面的appid即可:wxb4ba3c02aa476ea1
2.核心代码
//1.注册appidapi = WXAPIFactory.createWXAPI(this, "wxb4ba3c02aa476ea1");//2.将该app注册到微信api.registerApp("wxb4ba3c02aa476ea1");//3.预支付请求的服务器地址String url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android";
</pre><p></p><pre>
3.请求服务器获取结果,并调用微信支付
try {JSONObject json = new JSONObject(s);if(null != json ){PayReq req = new PayReq();//req.appId = "wxf8b4f85f3a794e77"; // 测试用appIdreq.appId = json.getString("appid");req.partnerId = json.getString("partnerid");req.prepayId = json.getString("prepayid");req.nonceStr = json.getString("noncestr");req.timeStamp = json.getString("timestamp");req.packageValue = json.getString("package");req.sign = json.getString("sign");req.extData = "app data"; // optionalToast.makeText(context, "正常调起支付", Toast.LENGTH_SHORT).show();// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信api.sendReq(req);}else{Log.d("PAY_GET", "返回错误"+json.getString("retmsg"));Toast.makeText(context, "返回错误"+json.getString("retmsg"), Toast.LENGTH_SHORT).show();}
4.支付成功后的回调页面,一点要在com.xxx.xxx.wxapi包下,也就是最后一个包是wxapi,文件名必须是WXPayEntryActivity
代码,注意在回调支付结果的时候也需要注册密钥,而且和之前那个不一样,这边还用官方demo提供的wxd930ea5d5a258f4f
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";private IWXAPI api;@Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LogUtil.d("jieguo","ol");setContentView(R.layout.activty_res); api = WXAPIFactory.createWXAPI(this, "wxd930ea5d5a258f4f");api.handleIntent(getIntent(), this);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);}@Overridepublic void onReq(BaseReq req) {}@Overridepublic void onResp(BaseResp resp) {int errCode = resp.errCode;if (errCode == 0) {// 0成功 展示成功页面 Log.d("test","支付成功的回调方法--onResp--"); new AlertDialog.Builder(this).setMessage("支付成功").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();finish();}}).setTitle("提示").create().show();}else if (errCode == -1) {//-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 LogUtil.d("fail","-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。");new AlertDialog.Builder(this).setMessage("支付出错").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();finish();}}).setTitle("提示").create().show();finish();}else if (errCode == -2) {//-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。 finish();}}}
5.还有一点千万注意,这个WXPayEntryActivity一定要注册,而且要设置下,否则不会调用的
<activity android:name=".wxapi.WXPayEntryActivity"android:exported="true"android:screenOrientation="portrait"/>
我当时还碰到一个坑,支付成功一次以后,就一直报-1的错误了,是因为当前app的签名文件和demo里面的签名不一样。
解决方法:
参考网页 http://www.2cto.com/kf/201604/498327.html
将自己的应用签名换成和微信开放平台上应用签名一致,简单的说就是第一次应用签名的时候有个.keystore文件,拿过来重新布置一下(对于签名不熟悉的童鞋,可以百度一下)。注意一点微信开放平台上面的包名必须和你在配置文件中注册的包名一致我拿官方支付的demo演示一下
安卓微信支付开发基本流程-demo篇相关推荐
- JSAPI微信支付开发流程和坑
首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...
- 实战:微信小程序支付开发具体流程
2019独角兽企业重金招聘Python工程师标准>>> 来源:授权地址 作者:会编码的熊 该文章纪录了我在开发小程序支付过程中的具体流程 1. 申请微信支付 小程序认证后进入微信支付 ...
- iOS之“微信支付”开发流程
实现微信支付的开发,iOS端里面只需要四个步骤: 向服务端请求预支付,获得prepayid以及noncestr: 把参数拼起来签名: 发起支付请求: 处理支付结果. iOS的微信SDK的接入:即为&q ...
- PHP版本微信支付开发----电脑网站扫码支付(native)(心得、总结)
早就听说微信支付比支付宝支付的坑多,但还得得该填的填,该绕的绕, 最终我们网站的微信支付功能成功上线啦♪(^ ∇ ^*) 首先自报家门,我的PHP版本是7,微信demo用的是php_sdk_v3.0. ...
- 微信支付开发(1) JS API支付
From: http://www.cnblogs.com/txw1958/p/wxpayv3-jsapi.html 关键字:微信支付 微信支付v3 jsapi支付 统一支付 Native支付 prep ...
- 微信支付开发准备工作和详细步骤
微信支付前的准备工作 1 开发者资质认证 微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入"账号中心",进行开发者资质认证,需要填写公司资料,包括但不限于,公司 ...
- 工作笔记——微信支付开发相关知识整理
在最近的工作中,引入了微信小程序支付,在开发过程中积累和整理了一些技术知识,现将其整理如下 目录 一.概念认识 (一)术语介绍 (二)名词解释 (四)对接微信支付接口规则整理 二.微信支付开发参考 ( ...
- 微信支付SDK接入流程梳理
微信SDK的支付功能接入简单梳理. 首先说一下,你需要的官网都有,但是官网提供的东西不管新旧与否先给你放上去,部分地方提供的链接点击时还提示404,不同的页面提示相同的下载内容(demo)还不一样,表 ...
- 微信支付开发教程(公众号支付)
前段时间公司电商项目需要接入微信支付,因此研究了一下如何使用微信支付.和支付宝支付相比,微信支付相对复杂一些,需要配置的东西更多,限制也更多.经过两天的研究,终于搞定微信支付,在这里对于使用微信支付的 ...
最新文章
- NLP深度学习:近期趋势概述
- mysql 配置32g内存_MySQL性能测试 : 新的InnoDB Double Write Buffer
- 两种重要的图——Snapshot diagram UML diagram
- [ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束
- php安装soap扩展
- 银行招聘网计算机类笔试,中国人民银行计算机类笔试模拟题
- 云昆明理工大学 计算机复试,2012年昆明理工大学计算机考研复试试题(回忆版)...
- 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第23章 XWindows设定介绍 笔记
- 零基础带你学习MySQL—MySQL常用的数据类型(列类型)(五)
- pythonjam教程_Python学习:安装配置pycharm编辑器教程
- bzoj 4517: [Sdoi2016]排列计数(错排+组合数逆元)
- [bzoj 3110][zjoi 2013]K大数查询
- php该怎么下载文件,php怎么实现下载文件?
- HarmonyOS开源第三方组件 —— B站开源弹幕库引擎的使用
- DBeaver执行SQL脚本文件
- velocity定制模板文件
- Windows11 家庭版开启远程桌面解决方案之RDP Wrapper Library,小白全面攻略
- oracle中的varchar2存储中文,varchar2存储汉字
- java 框架医院系统,java毕业设计_springboot框架的医院信息管理系统
- Excel把表中一个单元格对应多个数据汇总到一个单元格内