Android通过Apk插件调起微信支付
App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能。这样就实现了调起微信支付的SDk的功效。操作实现中要将Apk文件安放在assets文件夹的目录下。
当安装好App之后,要将Apk文件保存到本地中
代码实现如下:
private boolean saveApk() throws Exception {
/** 首先默认个文件保存路径 */
sdcard = Environment.getExternalStorageState().equalsIgnoreCase(
Environment.MEDIA_MOUNTED) ? Environment
.getExternalStorageDirectory().getAbsolutePath()
: "/mnt/sdcard";// 保存到SD卡
apk_path = sdcard + "/paytend_wx/saveApk";// 保存的确切位置
return copyApkFromAssets(mContext, "paytendSafe2Pay.apk", apk_path);
}
private boolean copyApkFromAssets(Context context, String fileName,
String path) {
boolean copyIsFinish = false;
try {
File foder = new File(apk_path);
if (!foder.exists()) {
foder.mkdirs();
}
File myCaptureFile = new File(apk_path, fileName);
if (!myCaptureFile.exists()) {
myCaptureFile.createNewFile();
}
InputStream is = context.getAssets().open(fileName);
FileOutputStream fos = new FileOutputStream(myCaptureFile);
byte[] temp = new byte[1024];
int i = 0;
while ((i = is.read(temp)) > 0) {
fos.write(temp, 0, i);
}
fos.close();
is.close();
copyIsFinish = true;
} catch (IOException e) {
return false;
}
return copyIsFinish;
}
如果Apk已经安装保存到指定的位置,接下来就是调起安装界面将Apk安装到手机中
代码如下:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(
Uri.parse("file://" + apk_path
+ "/paytendSafe2Pay.apk"),
"application/vnd.android.package-archive");
mContext.startActivity(intent);
调起微信需要传一些参数,考虑到参数的安全性,最终的参数需要从后台请求获得。
参数的后台请求工作放在了Apk文件中。
在App端调用jar中的方法传参给Apk文件:
public Map<String, Object> CreatParameters() {
//由商户生成的订单号
out_trade_no = System.currentTimeMillis() + "";
//分配给商户id
merchantId = Constants.MC_ID;
// 需要支付的金额,单位是分
total_fee = "1";
//商户后台支付状态需要调用的接口
sub_mch_notify_url = "http://test.paytend.com:7000/paytend_wxpay_demo/notify.jsp";
// 商品的名字
body = "青龙偃月刀";
// 随机字符串
nonce_str = getRandomStr(20);
mMap = new HashMap<String, Object>();
mMap.put("out_trade_no", out_trade_no);
mMap.put("merchantId", merchantId);
mMap.put("total_fee", total_fee);
mMap.put("sub_mch_notify_url", sub_mch_notify_url);
mMap.put("body", body);
mMap.put("nonce_str", nonce_str);
// 签名
sign = getCommonSign(mMap, Constants.API_KEY);
mMap.put("sign", sign);
return mMap;
}
之所以将调起Apk的方法封装成jar文件,就是保证Apk的包名和Apk支付界面名的不泄露。在Apk中向后台发送请求,获取参数,调起微信支付。
当微信支付成功后,Apk退出(Apk是没有界面的)发送广播通知App交易状况。
总结流程如下:
点击App上的微信支付按钮,App传一些固定参数到jar文件中,jar文件调起支付的Apk,并将这些参数传递给支付的Apk,支付的Apk向后台请求获取支付的参数,将这些参数传递给微信的jar文件,通过微信jar文件中的方法调起微信支付。
当微信支付成功后,Apk退出(Apk是没有界面的)发送广播通知App交易状况。
写的比较乱,权当备忘了。
Android通过Apk插件调起微信支付的更多相关文章
- 怎样调通微信支付及微信发货通知接口(Js API)
怎样调通微信支付及微信发货通知接口(Js API) 微信支付提供了一个支付測试页面,微信支付正式使用须要測通支付.发货通知接口 .告警接口.维权接口.告警接口.维权接口非常easy.支付界面调通也相对 ...
- jsapi 调起微信支付的的踩坑
问题: 公众微信号调起微信支付的时候,有的时候调起支付成功,有的时候调起支付失败.利用抓包工具抓取数据显示授权和调用后台的微信预支付订单接口都成功并且都返回正确的数据.但是调起支付的时候传入的data ...
- 【微信小程序】调起微信支付完整demo
微信小程序调用微信支付接口 https://blog.csdn.net/u012667477/article/details/80940578
- h5调起微信支付
后台需要进行生成签名获取参数. 前台代码: function onBridgeReady(appId,timeStamp,nonceStr,package1,paySign,signType,open ...
- Android实现apk插件方式换肤
换肤思路: 1.什么时候换肤? xml加载前换肤,如果xml加载后换肤,用户将会看见换肤之前的色彩,用户体验不好. 2.皮肤是什么? 皮肤就是apk,是一个资源包,包含了颜色.图片等. 3.什么样的控 ...
- 转-Android微信支付
http://blog.fangjie.info/android微信支付/ Android微信支付 2014-08-09 一.使用微信官方的提供的demo里的appid等 1.微信接口上手指南:(从“ ...
- Android开发 --微信支付开发(转载!)(开发工具:Eclipse)
Android_APP 微信支付接口开发 日期:2015-10-06 12:47:33 作者: 来源: 人气:3549 1.首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 a ...
- Cordova - 彻底搞定安卓中的微信支付插件!
Cordova:8.0.0 Android studio:3.2.1 cordova-plugin-adam-wechat : 3.0.6 你看到这个标题肯定会惊讶,一个Cordova的微信支付插件, ...
- Android app 第三方微信支付接入详解
微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...
随机推荐
- 解析xml的问题未解决
工作上需要解析xml,目前的逻辑是:解析xml到对象中,然后对象再插入数据库.但这存在内存溢出的风险. 今天做的另外一件事是将循环用到工作上,暂时还没有测试,是否能保证程序的重启.有待观察 ##### ...
- 【中国人大:天地人大BBS站】迟到的求职感悟
转自 http://i.cnblogs.com/EditPosts.aspx?opt=1 研究生最后一年,我参加了一个500强外企实习,单纯幼稚的小姑娘立马被白领工作的那种光鲜亮丽给迷惑了,同时听说可 ...
- zoom:1-hasLayout
在现代浏览器,如果子元素float,则父元素不会自动被撑开 #nofloatbox { border: 1px solid #FF0000; background: #CCC; width:200px ...
- 在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Flash安全的一些总结
整理了下Flash安全相关的知识,后面会再完善 一.先来说crossdomain.xml这个文件 flash如何跨域通信,全靠crossdomain.xml这个文件.这个文件配置在服务端,一般为根目录 ...
- 在ASP.NET MVC3项目中,自定义404错误页面
在Web开发中,用户体验是至关重要的,一个友好的网站自然少不了自定义404错误页面. 让笔者为大家介绍404错误页面在ASP.NET MVC3项目中的配置: 第一步,在项目的Web.config文件中 ...
- LoadRunner
LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找LoadRunner能够对整个企业架构进行测试.通过使用LoadRunne ...
- Round-Robin负载均衡算法及其实现原理
毫无疑问,随着互联网.移动网络接入成本的降低,互联网正在日益深入地走入我们的生活,越来越成为人们获取信息的高效平台,ICP行业也顺势呈现出强劲的成长趋势,成为互联网迅猛发展形势下最大的受益者,也直接促 ...
- 配置FMS发布/HDS/HLS流
一.前言 安装完FMS4.5以后就有了apache2.2,由于在FMS安装目录里面,他是对外面已经安装的是没有影响的,默认情况向, FMS监听80端口接收traffic然后传递给Apache的8134 ...
- java工程打包成jar包,并且解压lib里的jar包
在我们开发完java工程部署时,有时不需要web容器,为了方便部署有时候需要打成jar包. 这里介绍2种Eclipse打jar包的方式, 方式一.工程引用的jar包打在lib目录下 1.工程上右键,E ...