Android项目内简单集成微信和支付宝支付功能
最近自己公司的项目需要集成微信和支付宝支付,我是个初学者,然后就开始在网上各种搜索相关Demo。最后找了一个自我感觉还不错的Demo,挺适合初学者使用的。在使用之前一定要在微信平台和蚂蚁金服申请权限,然后获取公钥和私钥。
下面我先把支付宝的申请流程说一下:
在这里创建你的应用,然后提交申请。在应用信息里面找到如下信息,可以查看公钥和私钥。
准备工作做好了,接下来就是开发了。先把支付宝jar包导进去,然后需要在manifest注册一一下
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" > </activity>
还需要添加的权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这是到下面几个参数
// 商户PID public static final String PARTNER = "2088721464******"; // 商户收款账号 public static final String SELLER = "2486******@qq.com"; // 商户私钥,pkcs8格式 public static final String RSA_PRIVATE = "很长-----";
把支付宝demo中的类拷贝到自己的项目中
下一步就是通过线程调起支付了,请注意,这里签名都是在本地,私钥都是放在本地,实际开发中都是要在服务端完成的。
/*** 支付宝支付异步任务* * @author Simon*/private class AliPayThread extends Thread {@Overridepublic void run() {String result = AlipayAPI.pay(MainActivity.this, "测试的商品","测试商品的详细描述", "0.01");Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}}
支付的结果
private Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case SDK_PAY_FLAG: {PayResult payResult = new PayResult((String) msg.obj);/*** 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&* docType=1) 建议商户依赖异步通知*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, "9000")) {Toast.makeText(MainActivity.this, "支付成功",Toast.LENGTH_SHORT).show();} else {// 判断resultStatus 为非"9000"则代表可能支付失败// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(MainActivity.this, "支付结果确认中",Toast.LENGTH_SHORT).show();} else {// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误Toast.makeText(MainActivity.this,"支付失败" + resultStatus, Toast.LENGTH_SHORT).show();}}break;}}};};
下面贴出整个代码
package com.alpha.alipay;import com.ali.alipay.AlipayAPI;
import com.ali.alipay.PayResult;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private static final int SDK_PAY_FLAG = 1;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button) findViewById(R.id.bt_submit);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew AliPayThread().start();}});}private Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case SDK_PAY_FLAG: {PayResult payResult = new PayResult((String) msg.obj);/*** 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&* docType=1) 建议商户依赖异步通知*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, "9000")) {Toast.makeText(MainActivity.this, "支付成功",Toast.LENGTH_SHORT).show();} else {// 判断resultStatus 为非"9000"则代表可能支付失败// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(MainActivity.this, "支付结果确认中",Toast.LENGTH_SHORT).show();} else {// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误Toast.makeText(MainActivity.this,"支付失败" + resultStatus, Toast.LENGTH_SHORT).show();}}break;}}};};/*** 支付宝支付异步任务* * @author Simon*/private class AliPayThread extends Thread {@Overridepublic void run() {String result = AlipayAPI.pay(MainActivity.this, "测试的商品","测试商品的详细描述", "0.01");Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}}}
Android项目内简单集成微信和支付宝支付功能相关推荐
- Android Study 之 6分钟妥妥集成微信以及支付宝支付
LZ-Says:来说俩件事儿: 1.一心只为一人用,一言只为一人说~ 2.今天坐公交,末班车,车上只有司机和我,阴森森的,吓死LZ了...一路小跑!!! 前言 (浪费一分钟) 今天,不讲这个,也不讲那 ...
- 哈哈!没想到吧!Java也可以 实现微信和支付宝支付功能(附代码)
一.前期准备 1.申请好微信商户号appid,拿到商户id和商户秘钥,退款的话需要商户证书 2.申请好支付宝商户号appid,商户公钥和秘钥(需要用支付宝工具自己生成),支付宝退款不需要证书 二.数据 ...
- 基于weixin-java-tools集成微信小程序支付功能
目前,公司正在把业务从公众号向小程序迁移,本人负责订单功能的开发,现在把微信小程序接入微信支付这块的知识分享给大家,可能有部分人对微信支付不太了解,可以参考下面的微信支付流程图. 微信支付流程图 我是 ...
- 支付宝支付功能实现原理,微信公众号中实现支付宝支付功能开发流程
这篇文章使用一些简单的代码例子来解释微信接入支付宝支付功能的操作步骤,即使新手也可以轻松参透的. 第三方支付是指具备一定实力和信誉保障的独立机构,采用与各大银行签约的方式,通过与银行支付结算系统接口对 ...
- vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况
我的思路大概是这样的 1. 验证是否是在微信内置浏览器中调用支付宝 2.给支付页面的url加上调用接口所需的参数(因为在微信里是不能直接调用支付宝的需要调用外部浏览器) 3.在外部浏览器中完成支付跳转 ...
- Android项目实战:简单天气-刘桂林-专题视频课程
Android项目实战:简单天气-11200人已学习 课程介绍 学习新的知识点,时下Android比较流行的MPAndroidChart + Retrofit2.0 + Gson! 课 ...
- 微信分享功能android,关于Android实现简单的微信朋友圈分享功能
1.先下载微信分享的jar包放在lib目录下,并且添加依赖, android:name=".wxapi.WXEntryActivity" android:exported=&quo ...
- SpringBoot 2 集成微信扫码支付
前言 该文主要是手把手教你如何在SpringBoot 中集成微信扫码支付,以及集成的过程需要注意的问题事项.另外需要感谢 vbirdbest 关于微信支付和支付宝支付相关包博客总结.因为文中很多地方参 ...
- 关于Java调用微信、支付宝支付提现
前言: 本篇文章介绍关于自己写的一个集成微信.支付宝的支付.提现等功能的介绍,本项目已在码云上进行开源,欢迎大家一起来进行改造,使进行更好的创新供大家使用:也有对应的pom文件坐标可以导入,因目前不知 ...
最新文章
- 如何删除oracle用户数据库用户,oracle删除指定用户的原数据库,建立该用户的新数据库...
- c++纯虚函数在父类中调用的规避
- mysql安装后第一次操作_MySQL数据库之mysql 安装成功以及第一次安装成功初始化密码操作...
- 对话腾讯安全杨勇:产业互联网带来哪些新的安全挑战
- c语言 static的用法
- 安装SQL2005提示“SQL Server 2005 COM+ 目录要求”警告 解决方法
- angular js 默认选中_AngularJS Select(选择框)
- 前端实践(3)——图像幻灯片
- 频谱感知3:合作频谱检测中的硬合并与软合并
- SAP B1打印报表实现本页合计和本单合计的方法
- 编程实现之k均值算法
- 逆向某停车app(原创)
- 大数据薪水大概多少_大数据薪水大概多少
- PyQt5最全39 表格之QTableView显示二维表数据
- Magento2.1x常见报错处理
- 如何检测机器是否支持TPM
- 【打通复数域】复数矩阵的实数等效表示
- 《游戏设计艺术(第2版)》——学习笔记(7)第7章 游戏始于一个创意
- Wireshark与Nginx
- 初学Python-简单的,在图片上加png(logo)
热门文章
- 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...
- JavaScript纯前端解析Excel文件
- vue路由的两种模式:hash与history的区别
- WCDMALTE Linux移远USB驱动程序用户指南(WCDMA/LTE Standard/Automotive/LTE-A Module Series)
- Substance Painter问题
- 屏蔽不显示VS警告warning
- iOS 9.3连出三个漏洞 苹果到底怎么了
- 除了成本低、获客快等,企业直播还有什么优势呢?
- 人际交往中保护自己的30条小技巧!
- 几行代码,就可以让系统自动按Enter键,帮了大忙