上次集成支付宝支付已经很久了,今天写东西用到了支付宝支付,就大致写一下流程;

去蚂蚁金服下载最新版的Android&IOS端SDK

全部文档 -- 资源下载 -- App支付客户端

下载后解压,分为Android和IOS端,里面有demo和SDK,使用Android端

把SDK中的jar导入到工程中:

build.gradle中添加

compile files('libs/alipaySdk-20170922.jar')

AndroidManifest.xml中添加:

权限:

<!-- 允许读出外部存储器 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 允许使用相机 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允许程序打开网络套接字 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许程序设置内置sd卡的写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 允许程序访问WiFi网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

配置:

<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>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>

现在需要的文件已经集成,拿着你的生成的订单号去请求服务器(我们的是这样的),服务器返回给你支付宝支付的orderInfo;

使用这个orderInfo调起支付:

private final int SDK_PAY_FLAG = 1;
private final int SDK_AUTH_FLAG = 2;
findViewById(R.id.tvPay).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String orderInfo = "服务器返回的OrderInfo"; // 订单信息
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(GoodsDatailsActivity.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 Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
@SuppressWarnings("unchecked")
PayResult payResult = new PayResult((Map<String, String>) msg.obj);
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
LogUtils.i(payResult.getMemo()+"______"+payResult.getResult()+"_____"+payResult.getResultStatus()); // 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
Toast.makeText(context, "支付成功", Toast.LENGTH_SHORT).show();
Intent BuySucceed = new Intent(context ,Order_BuySucceed_Activity.class);
context.startActivity(BuySucceed);
} else {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(context, "支付失败", Toast.LENGTH_SHORT).show();
}
break;
}
case SDK_AUTH_FLAG:
break;
default:
break;
}
}
};

OK完成了;其中PayResult这个类,用支付宝的那个老是报错;

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);
}
}
} public PayResult(String obj) { } @Override
public 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;
}
}

Android最新版支付宝支付集成的更多相关文章

  1. 商家 APP 如何接入新版支付宝支付,老版本商家如何升级

    代码地址如下:http://www.demodashi.com/demo/14006.html 前言 支付宝移动支付2.0版本对比1.0版本做了较大更新,新申请的商家都需要采用最新2.0版本 SDK ...

  2. iOS支付宝支付集成

    概述 iOS支付宝支付集成 详细 代码下载:http://www.demodashi.com/demo/10729.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧( ...

  3. iOS 支付宝支付集成获取私钥

    http://doc.open.alipay.com/doc2/apiList?docType=4 登录到支付宝开放平台,下载相关支付宝支付的demo.解压出来有3个文件夹.(服务端demo,客户端 ...

  4. ios 支付宝支付集成

    支付宝支付: 下载官方demo,把需要的framwork下载下来,在自己的工程中,新建文件夹,然后全部塞进去,到build phases中把需要的全部导入,其中xcode7以上需要多导入两个.a文件, ...

  5. django支付宝支付集成

    概要 本文是关于django集成支付宝[电脑网站支付]功能的过程记录. 功能逻辑主要分为两块: 用户下单跳转至支付宝支付界面 支付成功的回调验证 本文用到的alipay-sdk是基于阿里开发文档htt ...

  6. 支付宝支付集成,上传RSA公钥一直显示格式错误

    碰到同样的问题,支付宝的问题,已有解决方案:https://openhome.alipay.com/platform/keyManage.htm?keyType=partner

  7. 支付宝支付集成过程中如何生成商户订单号(out_trade_no)

    out_trade_no是指商户网站唯一订单号,在商户端唯一,每个商户订单号会对应一个支付宝订单号 ,此订单号由珊瑚自己生成,商户订单号要求64个字符以内.可包含字母.数字.下划线:需保证在商户端不重 ...

  8. 支付宝支付集成中:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过

    在做p2p配资平台,也就是公司的项目,遇到了一个问题:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过 下面是实录: 通知服务器的POST过来的数据: 1.si ...

  9. Android开发支付集成——支付宝集成

    微信支付传送门:https://www.cnblogs.com/dingxiansen/p/9209159.html 一.支付宝支付 1. 支付宝支付流程图 2. 集成前准备 去蚂蚁金服注册应用获取a ...

随机推荐

  1. KNN算法原理(python代码实现)

    kNN(k-nearest neighbor algorithm)算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性 ...

  2. leftJoin鏈錶查詢

    //待使用券碼 $code_record_no = DB::table('fook_platform_order as a') ->select('o.code','o.apportion_bi ...

  3. makedepend: command not found(转)

    makedepend: command not found 解决方案: 修改Makefile MAKEDEPEND=$(CC) -M 参考: When I set CROSS_COMPILE, `MA ...

  4. jpa随笔

    1对多的关系 //多的一方@Entity @Table(name="car_distribute") public class DistributeCar extends Cust ...

  5. Linux之chown

    命令功能: chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令, ...

  6. jQuery 事件绑定四种方式,delegate委托强大绑定在3.0中修改为on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 跟着未名学 - 免费录屏工具ActivePresenter

    目录 简介... 1 录制屏幕... 1 编辑... 3 幻灯片... 3 时间轴... 4 对像... 4 导出视频... 4 未名 2017-7-17 简介 ActivePresenter 个人免 ...

  8. 使用apache设置绑定多个域名或网站

    来源:百度知道  http://jingyan.baidu.com/article/363872ecec3e496e4ba16fdc.html 配置完成后可能是能访问了,但是跳转的路径总是不对,这时候 ...

  9. Python开发经验汇总

    1.工具 (1)编代码用“JetBrains PyCharm”: (2)要想编写的脚本能够直接双击运行,还需要用pyinstaller打包工具: (3)要下载pyinstaller就用Python自带 ...

  10. 53题看透java线程

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...