android实现微信付款功能,Android实现微信支付功能详解
1.集成微信支付SDK:
在build.gradle中,添加如下依赖
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
2.设置微信支付回调页面:
路径:项目包名.wxapi名称:WXPayEntryActivity
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wx_pay_result);
api = WXAPIFactory.createWXAPI(this, "你的APP_ID");
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onResp(BaseResp resp) {
int errCode = resp.errCode;
}
}
errCode:说明
0:成功……展示成功页面。
-1:错误……可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2:用户取消……无需处理。发生场景:用户不支付了,点击取消,返回APP。
3.设置Manifest
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop">
4.设置MD5
public class MD5 {
private MD5() {
}
public final static String getMessageDigest(byte[] buffer) {
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
try {
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(buffer);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
}
5.发起微信支付
/**
* 注册微信支付
*/
private void registerWx() {
IWXAPI wxapi = WXAPIFactory.createWXAPI(context, null);
wxapi.registerApp("你的APP_ID");
}
/**
* 发起微信支付
*/
private void wxPay() {
PayReq payReq = new PayReq();
payReq.appId = "后台返回的appId";
payReq.partnerId = "后台返回的partnerId";
payReq.prepayId = "后台返回的prepayId";
payReq.packageValue = "后台返回的package";
payReq.nonceStr = "后台返回的nonceStr";
payReq.timeStamp = "后台返回的timeStamp";
payReq.signType = "后台返回的signType";
payReq.sign = signNum();
wxapi.sendReq(payReq);
}
/**
* 拼接sign
*/
public static String signNum() {
String stringA = "appid=" + "后台返回的appid" +
"&noncestr=" + "后台返回的noncestr" +
"&package=" + "后台返回的package" +
"&partnerid=" + "后台返回的partnerid" +
"&prepayid=" + "后台返回的prepayid" +
"×tamp=" + "后台返回的timestamp";
String stringSignTemp = stringA + "&key=" + "后台商户服务端的key";
String sign = MD5.getMessageDigest(stringSignTemp.getBytes()).toUpperCase();
return sign;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android实现微信付款功能,Android实现微信支付功能详解相关推荐
- 微信小程序 --- 完成小程序支付功能
最近开发小程序,一直在看小程序的支付.经过一天的努力,小程序支付功能最终实现了. 下面感谢 csdn 博主:千堆雪惹尘埃 发布的 " 小程序与php 实现微信支付 " 原文地址: ...
- Android基础入门教程——2.3.1 TextView(文本框)详解
Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...
- 微信支付-全面详解(学习总结---从入门到深化)
微信支付_产品介绍 微信支付介绍 微信支付(https://pay.weixin.qq.com)是腾讯集团旗下中国领先 的第三方支付平台,一直致力于为用户和企业提供安全.便捷.专业的在线支付服务. 付 ...
- 腾讯小程序 java编写_微信小程序 使用腾讯地图SDK详解及实现步骤
微信小程序 使用腾讯地图SDK详解及实现步骤 近期在做一款彩票服务类项目中用到了腾讯地图提供的小程序解决方案,拿来给大家分享一下! 使用起来非常简单,就是一些功能还有待完善. 官方文档:http:// ...
- 微信小程序开发【六】-- wxss详解
系列文章目录 微信小程序开发[一]-- 初识小程序 传送门 微信小程序开发[二]-- 小程序入门 传送门 微信小程序开发[三]-- 项目结构概述 传送门 微信小程序开发[四]-- 配置详解 传送门 微 ...
- 微信小程序开发登录界面mysql_微信小程序 欢迎界面开发的实例详解
微信小程序 欢迎界面 市面上大多数的app都会有一个欢迎界面,下面将演示如何通过微信小程序实现一个欢迎界面. 下面将会按照以下的顺序介绍: 布局的实现 逻辑的实现 样式的实现 1.布局的实现 整个布局 ...
- 《微信小程序:开发入门及案例详解》—— 3.4 小结
本节书摘来自华章出版社<微信小程序:开发入门及案例详解>一 书中的第3章,第3.4节,作者李骏 边思,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.4 小 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- 微信小程序阻止冒泡点击_微信小程序bindtap事件与冒泡阻止详解
bindtap就是点击事件 在.wxml文件绑定: cilck here 在一个组件的属性上添加bindtap并赋予一个值(一个函数名) 当点击该组件时, 会触发相应的函数执行 在后台.js文件中定义 ...
- 微信小程序和百度的语音识别接口详解
介绍 因为项目需要,使用到了微信小程序和百度的语音接口 现在将项目中的一个小模块拿出来单独分享. 技术关键字 微微信小程序 百度语音接口 nodejs,express fluent-ffmegp 环境 ...
最新文章
- 将类的成员函数作为回调函数(外一篇:友元函数)
- web自动化测试—selenium游览器下拉框操作
- wpf: DataGridTextColumn 数字格式显示,编辑时取消格式(StringFormat)
- python 矩阵合并_numpy 的矩阵合并与分割
- SqlParameter[] 添加参数
- java拷贝构造函数
- 【Android】NanoHttpd学习(一)
- DVI 口转 VGA 手工接线方法
- wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
- npm list vue显示empty解决办法
- 5大原因告诉你,Python程序员为何如此难招!
- 名帖292 张瑞图 行书《论书卷》
- 排序算法大比拼(2.2)——时间O(n log2n)篇之快速排序(左右指针法)
- 苹果历代iPod产品大全相册
- iOS App体验设计
- 科学计算机怎么调颜色,Win7旗舰版如何进行屏幕颜色校准
- 连接Mysql时,出现Establishing SSL connection without server's identity verification is not .......警告
- SQL取日期时间部分
- 关于Arcinfo运行AML脚本无法正确生成DHSVM河道文件的问题的解决方法
- 【PaddleNLP学习】PaddleNLP笔记
热门文章
- HTML5系列代码:使用空格符号
- 【C语言】 C 语言 关键字分析 ( 属性关键字 | 常量关键字 | 结构体关键字 | 联合体关键字 | 枚举关键字 | 命名关键字 | 杂项关键字)
- 计算机课程意见建议,对计算机课程的建议论文
- 【启动程序是无法加载 libnsl.so.1】
- 最新变态传奇android,新开超级变态传奇_刚开一秒的变态传奇手游私服 18183Android游戏频道...
- Linux运维踩过的坑---Temporary failure in name resolution
- 3966: 购物(sum)
- css3动画按钮_CSS3的动画按钮
- 如何在Ubuntu MATE 18.04中安装GNOME 3?
- matlab产生泊松分布