前言:
紧接着上一篇的微信支付,本篇是集成支付宝支付,相对于微信支付,支付宝的集成就简单了很多。话不多说,我们来看看怎么简单集成支付宝支付。
1.看文档:
我们先要去蚂蚁金服开放平台进行申请,这个需要公司的相关信息,目前个人是不支持的。

信息的填写就不介绍了,这个也不是我们所关心的,同时,支付宝更多的是服务器端的集成,甚至不需要我们的包名和签名,app端集成真的就是几句话代码的事情。
2.按照接口文档说明集成:
android支付详情介绍,这个是支付宝介绍的官方页面,虽然简单,但是足够了,所以感慨下支付宝的工程师的确是很强大,简单实用。具体步骤为:
2.1 下载jar包,然后放在lib文件夹下面,最好下载最新的jar包。
2.2 修改manifest:
添加权限:
<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" />

添加Activity申明:

<activity
            android:name="com.alipay.sdk.app.H5PayActivity"android:configChanges="orientation|keyboardHidden|navigation"android:exported="false"android:screenOrientation="behind" >
</activity>
<activity
            android:name="com.alipay.sdk.auth.AuthActivity"android:configChanges="orientation|keyboardHidden|navigation"android:exported="false"android:screenOrientation="behind" ></activity>

3.代码编辑:
3.1 为了方便我们建一个PayUtils,代码如下:

public class PayUtils {private Activity mActivity;public void setActivity(Activity activity) {mActivity = activity;setHandle(mActivity);}private void setHandle(Activity mact) {mHandler = new Handler(mact.getMainLooper()) {public void handleMessage(Message msg) {Log.i("wy", "11111111111" + msg.what);switch (msg.what) {case SDK_PAY_FLAG: {PayResult payResult = new PayResult((Map<String, String>) msg.obj);/**对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断resultStatus 为9000则代表支付成功if (TextUtils.equals(resultStatus, "9000")) {// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。Log.i("wy", "1");} else {// 该笔订单真实的支付结果,需要依赖服务端的异步通知。Log.i("wy", "2");}break;}case SDK_AUTH_FLAG: {AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);String resultStatus = authResult.getResultStatus();// 判断resultStatus 为“9000”且result_code// 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {// 获取alipay_open_id,调支付时作为参数extern_token 的value// 传入,则支付账户为该授权账户Log.i("wy", "3");} else {// 其他状态值则为授权失败Log.i("wy", "4");}break;}default:break;}}};}private static final int SDK_PAY_FLAG = 11;private static final int SDK_CHECK_FLAG = 12;private static final int MSG_GET_ACTIVATION = 2;private static final int SDK_AUTH_FLAG = 2;private Handler mHandler;//调用该方法进行支付宝sdk调用public void pay(final String payInfo) {Runnable authRunnable = new Runnable() {@Overridepublic void run() {// 构造AuthTask 对象AuthTask authTask = new AuthTask(mActivity);// 调用授权接口,获取授权结果Map<String, String> result = authTask.authV2(payInfo, true);Message msg = new Message();msg.what = SDK_AUTH_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread authThread = new Thread(authRunnable);authThread.start();}}

代码很简单,一个handler,一个调用支付宝的pay方法,注意该handler的生成方法,开始我new Handler的时候没有指定looper,因为该类没有默认的Activity对象,所以会报”Can’t create handler inside thread that has not called Looper.prepare()”错误,不清楚handler的同学,可以去看我以前写的一篇博客(Java中的多线程Thread Runnable及android的handler)。

3.2 Main中的代码:

public class MainActivity extends AppCompatActivity {private TextView tv_send;private PayUtils mPayUtils;//这些都是服务器定义的字段private String title = "支付订单";private String ordertype = "0";private String tomemid="";private String price="0.01";private String price_tbb = "0";private String paytype = "2";private String zfpass="";private String tokenid="";private String platform = "0";private  String responsestr="";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_send= (TextView) findViewById(R.id.tv_send);tv_send.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {getData();}});}private void getData(){Map<String, String> map = new HashMap<>();map.put("tradetype", "APP");map.put("title", title);map.put("ordertype", ordertype);map.put("tomemid", tomemid);map.put("price", price);map.put("price_tbb", price_tbb);map.put("paytype", paytype);map.put("zfpass", zfpass);PayRequestParam param=new PayRequestParam();param.setTradetype("APP");//用户名param.setTitle(title);param.setTomemid(tomemid);param.setPrice(price);param.setPrice_tbb(price_tbb + "");param.setOrdertype(ordertype);//param.setPaytype(paytype);//param.setZfpass(zfpass);param.setSign(SignUtils.getXfbSign(map));PayRequestObject requestobject=new PayRequestObject();requestobject.setTokenid(tokenid);requestobject.setPlatform(platform);requestobject.setParam(param);//fastjsonString jsonstr=JSON.toJSONString(requestobject);String url ="";//okhttp3OkHttpClient client=new OkHttpClient();RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr);final Request request=new Request.Builder().url(url).post(requestBody).build();Log.i("wy","111111111111");client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {responsestr=response.body().string();PayResponseObject object= (PayResponseObject) JSON.parseObject(responsestr,PayResponseObject.class);if(mPayUtils==null){mPayUtils=new PayUtils();mPayUtils.setActivity(MainActivity.this);}mPayUtils.pay(object.getData());}});}}

这里面更多的是和自己服务器定义接口的一些参数,请求获取代调用支付宝时的String 参数payInfo,该参数的组成可以看支付宝的接口文档,我们客服端也可以自己拼接,但是十分不建议这样做。

3.3其他涉及到的类可以在文末点击下载

4总结:
支付宝支付相对微信支付而言简单太多,并且可以在打包的情况下进行测试,方便开发,但是这只是对于我们移动端开发来说方便很多;大量的工作其实是丢锅给了服务器端。但是对于支付宝的文档以及流程我还是建议大家能够细细的研读,这对于我们开发的思路是大有裨益的。ok,两大支付都介绍完了,希望可以帮到大家。

点击下载代码

Android-支付宝支付相关推荐

  1. android支付宝支付开发过程

    android支付宝支付开发过程 原文:android支付宝支付开发过程 支付宝开发流程: 1.在支付宝申请一个账号并开通开发者功能和移动支付的功能. 支付宝地址:https://auth.alipa ...

  2. android支付界面设计,Android支付宝支付设计开发

    在移动支付领域,支付宝支付占用巨大份额,根据艾瑞咨询公布的报告数据:2014Q3,支付宝斩获了82.6%的市场份额,在移动支付的霸主地位越来越稳固.财付通支付的发力点在微信支付和手Q支付,在移动支付格 ...

  3. android 支付宝支付

    android 支付宝支付 支付宝代码部分比微信简单很多,不需要专门配置包名,随便放哪都行,稍微麻烦一些的就是申请和审核,具体记录一下审核流程:   1.登录支付宝官网,选择"商家中心&qu ...

  4. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  5. android支付宝签名生成工具,Android支付宝支付的示例代码

    上一篇,我们已经详细讲解了Android微信支付,今天接着为大家带来支付宝支付,支付宝支付相对微信支付要简单一些,吐槽一下,而且支付宝文档确实比微信的文档好了不少,下面开始讲解支付流程. 1.首先给出 ...

  6. android支付宝支付成功后调其他界面,支付宝支付成功回调地址怎么不改变当前页面?...

    手机端支付宝支付成功后 会有一个回调地址"http://pay.xxx.com/channel/alipayWap/return_url.php?is_success=T&notif ...

  7. android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...

  8. android支付宝支付接口申请,支付宝分享SDK接入指南—Android

    支付宝分享入口 1.   申请你的AppID 请到支付宝开放平台应用登记页面进行登记,登记并选择移动应用进行设置后,将获得AppId,可立即用于开发.但应用登记完成后还需要提交审核,只有审核通过的应用 ...

  9. android 支付宝支付 出现系统繁忙,请稍后重试(ALI10)

    今天把支付宝接入到项目中,出现系统繁忙,请稍后重试(ALI10), 感觉很奇怪,毕竟也是第一次做支付宝,然后问了下后台,原来从后台哪到的数据错误的原因引起的 之前的是demo,现在是项目,后台返回给我 ...

  10. android蚂蚁金服支付宝支付集成步骤

    此篇仅限于android客户端集成步骤,查看全部的请转https://docs.open.alipay.com/204/105296/ 自支付宝 SDK  15.5.7 开始,打包方式更换为 AAR, ...

最新文章

  1. 百度地图android室内定位,百度地图4.0正式发布,主打免费语音导航、室内定位、实时公交和生活搜索 (视频)...
  2. 对volatile的理解
  3. 如何在PowerPoint2007制造课件免费ppt模板下载
  4. ms+sql迁移到mysql_mssql数据迁移到mysql
  5. Page Ability生命周期内容介绍!
  6. 批量关闭公众号推送_啥?微信又出新功能了?或将提醒用户关闭长期未读公众号推送...
  7. php 正则第一个,为什么这个正则表达式与php中的第一个结果不匹配?
  8. Activity、BroadcastReceiver、Service共同工作的简单例子
  9. [改善Java代码]若有必要,使用变长数组
  10. mrc20温控f1什么意思_温控器的“总、高、低”是什么意思?不知道?民熔老电工告诉你...
  11. python低代码_几行代码搞定ML模型,低代码机器学习Python库正式开源
  12. 哪些计算机的应用需采用多媒体技术,计算机多媒体技术的应用现状与发展前景...
  13. McAfee如何卸载?MacBook 如何卸载麦克菲
  14. vba代码换行的写法总结
  15. HAL + RT_Thread = STM32外设用不了? NoNoNo!!
  16. TeamTalk源码分析之win-client
  17. Unity 回合制战斗
  18. AE开发之图层渲染20210603
  19. C语言基础:求解一元二次方程
  20. win10系统怎么没有iis服务器,Win10企业版系统iis无法启动怎么解决?

热门文章

  1. 堆排序——我欲修仙(功法篇)
  2. CSS背景虚化效果毛玻璃效果
  3. fatal error: 'CodePush/CodePush.h' file not found
  4. mysql 创建用户名及密码
  5. Web前端开发技术期末测试及解析一
  6. 傍晚骑行——天空分外妖娆
  7. TYVJ1669 周瑜的刁难
  8. 控制论:轻预测,重反应,做变色龙。
  9. Eclipse中国培训计划
  10. react-native-router-flux 使用详解(一)