Android集成支付宝大全
来源:互联网 发布:8259中断控制实验编程 编辑:程序博客网 时间:2024/04/28 00:02
现在付费应用都会集成支付宝和微信,本篇主要介绍Android 应用怎么集成支付宝,结合我做的《紫禁城》项目,现将客户端代码分享如下。
思路: 1.到支付宝开放平台下载jar包,申请私钥和公钥。
2.把订单发给自己服务器加密
3.把服务器返回的加密后的orderInfo订单信息,调支付宝jar包发给支付宝服务器
正常情况下:1.如果手机已经安装过支付宝客户端,就回直接调起支付宝支付界面,如果未安装支付宝客户端就回调起网页收银台,进行支付。
警告!!!如果你项目用过AES加密,就回出现,网页收银台调出来的情况,具体Bug变现为,网页收银台一闪而过,支付失败,而安装客户端的就没事。
第一种 未安装支付宝客户端,且网页收银台调不起来:
处理方法:如果未安装支付宝客户端就给一个重提示就好。
先判断是否安装支付宝客户端
/** * 获取是否安装支付宝客户端 */ public static boolean checkAliPayInstalled(Context context) { Uri uri = Uri.parse("alipays://platformapi/startApp"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); ComponentName componentName = intent.resolveActivity(context.getPackageManager()); return componentName != null; }第二 安装支付宝客户端
1.0 条件jar包
2.0 拷贝支付结果bean
public class PayResult {private String resultStatus;private String result;private String memo;public PayResult(Map<String, String> rawResult) {if (rawResult == null) {return;}for (String key : rawResult.keySet()) {if (TextUtils.equals(key, "resultStatus")) {resultStatus = rawResult.get(key);} else if (TextUtils.equals(key, "result")) {result = rawResult.get(key);} else if (TextUtils.equals(key, "memo")) {memo = rawResult.get(key);}}}@Overridepublic String toString() {return "resultStatus={" + resultStatus + "};memo={" + memo+ "};result={" + result + "}";}/** * @return the resultStatus */public String getResultStatus() {return resultStatus;}/** * @return the memo */public String getMemo() {return memo;}/** * @return the result */public String getResult() {return result;}}
3.0支付宝具体业务代码
传入后台加密后的订单字符串 orderInfo
如果有什么疑问加我QQ(1915404346),我们共同探讨。
/** 把支付信息传给支付宝的jar完成支付 */ private void alipay(final String orderInfo) { Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(SubscribeActivity.this); Map<String, String> result = alipay.payV2(orderInfo, true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); } private static final int SDK_PAY_FLAG = 1; @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { // TODO 真实开发这里应该是发请求问服务器支付结果,以服务器的结果为准 @SuppressWarnings("unchecked") PayResult payResult = new PayResult((Map<String, String>) msg.obj); /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要验证的信息// Log.i("resultInfo",payResult.toString()); String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。// Log.i("paysult:",resultStatus); Toast.makeText(SystemUtil.getApplication(), "支付成功", Toast.LENGTH_SHORT).show(); //购买成功提示; showSuccess(); //友盟统计,完成购买; UMengManager.getInstance().postEvent("完成购买"); //送通知给书架界面,订阅界面购买了期刊完成; EventBus.getDefault().post(new FormatPreviewActivity.PaySuccess()); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 Toast.makeText(SystemUtil.getApplication(), "支付失败", Toast.LENGTH_SHORT).show();// Log.i("paysult:",resultStatus); } break; } } } };自己服务器 返回的 orderInfo 实例
payInfo :: app_id=2016122802456724&biz_content={"out_trade_no":"729","total_amount":"40.00","subject":"《紫禁城》二〇一五年二月号","timeout_express":"90m","product_code":"QUICK_MSECURITY_PAY", "seller_id":"2088521512710242"}&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http://news.ccollector.com:8080/NesSubscription/zfb/notify_url.jsp&sign_type=RSA×tamp=2017-04-0512:17:39&version=1.0&sign=ZCIhbT%2BG3wkp8b4BeqHG987Vq1jub2D8Ua1q1QZPWmno9Omk5%2BjLCXn6aC5ZHoH8Ql
如果有什么疑问加我QQ(1915404346),我们共同探讨。
阅读全文
1 0
- Android集成支付宝大全
- android 集成支付宝支付
- Android集成支付宝支付
- Android 集成支付宝支付
- Android 集成支付宝支付
- android集成支付宝
- android 集成支付宝
- Android 集成 支付宝
- Android支付宝集成
- Android支付宝集成
- Android集成支付宝
- Android集成支付宝
- Android 集成支付宝
- android集成支付宝支付功能
- android集成支付,支付宝,微信
- android 集成支付宝支付的心路历程
- Android集成支付宝移动支付功能
- android APP集成支付宝支付
- openstack/manila的基本概念
- Android 热修复(最新)— 流行方案分析
- php解析json文件时为何不出任何效果?
- LeetCode OJ1
- maven编译报错source 1.5 中不支持 switch 中存在字符串
- Android集成支付宝大全
- python相关库下载
- redis入门基础命令
- Android+H5开发
- 2. Windows核心编程-进程概念及操作
- Java日志框架
- 华为软件工程师的面试题是?举例来个?
- kali braa snmp
- Vue2.0+Vue-router2.0+Vuex2.0搭建搭建环境