Android 集成支付宝支付

作者: MiHomes | 来源:发表于2018-03-29 10:51 被阅读182次

一.话不多说,直接上步骤。

1.导入jar包至项目Libs文件夹下。下载地址:https://docs.open.alipay.com/54/104509

image.png

2.在app的.gradle文件中引入此jar包

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

3.清单文件 即AndroidManifest.xml文件中声明支付所需的activity

  <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>

4.权限声明。

 A.普通权限:
<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" />

 B.高危权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5.资源导入完成,开始支付流程。主要分为三部曲。

  a.向服务器发送请求,服务器返回订单信息

  b.调用支付宝异步请求发起支付

  c.处理回调结果

其中,b支付宝的异步请求代码如下:

   Runnable payRunnable = new Runnable() {//要在子线程
        @Override
        public void run() {
            PayTask alipay = new PayTask(ShoppingActivity.this);
            Map<String, String> result = alipay.payV2
                    (t.getPaySdk(), true);//这里的t.getPaySdk() 即为支付信息, 服务器返回的一个String类型的字段
            Message msg = new Message();
            msg.what = SDK_PAY_FLAG;    //SDK_PAY_FLAG此为静态常量,在Activity中声明即可。      
                                        //private static final int SDK_PAY_FLAG = 1;
            msg.obj = result;
            mHandler.sendMessage(msg);
        }
    };
    Thread payThread = new Thread(payRunnable);
    payThread.start();

其中,c 处理回调结果代码如下,:

  private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    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();
                // 判断resultStatus 为9000则代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                    Toast.makeText(ShoppingActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
                    ClimbTo(PaySuccessActivity.class);
                } else {
                    // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                    Toast.makeText(ShoppingActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
                }
                break;
            }

            default:
                break;
        }
    }
};

6.支付完成,需要做混淆的小伙伴可在混淆文件中加入如下代码:

  -keep class com.alipay.android.app.IAlixPay{*;}
  -keep class com.alipay.android.app.IAlixPay$Stub{*;}
  -keep class com.alipay.android.app.IRemoteServiceCallback{*;}
  -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
  -keep class com.alipay.sdk.app.PayTask{ public *;}
  -keep class com.alipay.sdk.app.AuthTask{ public *;}
  -keep class com.alipay.sdk.app.H5PayCallback {
      <fields>;
      <methods>;
  }
  -keep class com.alipay.android.phone.mrpc.core.** { *; }
  -keep class com.alipay.apmobilesecuritysdk.** { *; }
  -keep class com.alipay.mobile.framework.service.annotation.** { *; }
  -keep class com.alipay.mobilesecuritysdk.face.** { *; }
  -keep class com.alipay.tscenter.biz.rpc.** { *; }
  -keep class org.json.alipay.** { *; }
  -keep class com.alipay.tscenter.** { *; }
  -keep class com.ta.utdid2.** { *;}
  -keep class com.ut.device.** { *;}

二.支付宝官方集成步骤:https://docs.open.alipay.com/204/105296/

三.随手分享,喜欢的朋友可以关注微信公众号MiHomes,后续会有更多更好的博客推送给您。

另:欢迎指出不足,会进行更正

末尾:移动互联&人力资源交流群,可加微信zy666128入群交流。


image.png

相关文章

  • Android:支付宝支付封装

    集成支付宝APP支付 直接按照官方文档逐步集成官方文档:支付宝APP支付官方文档 Android客户端封装支付宝支...

  • iOS&Android集成支付宝-server篇(PHP

    iOS&Android集成支付宝-server篇(PHP) 在上一篇文章《iOS集成支付宝-Swift版》中,我介...

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • 「Android集成微信支付」面试题回答思路

    接着上一篇回答「Android集成支付宝支付」的问题,我再来回答一下「Android集成微信支付」面试题回答思路:...

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • android 支付宝 接入流程总结

    支付宝接入流程 支付宝开发文档android集成流程新版支付宝接入流程 导入开发资源 将alipaySdk-xxx...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • Android支付宝支付集成

    Android支付宝支付 标签: android Android支付宝支付使用的流程介绍 支付宝流程介绍 支付宝流...

  • 支付宝 ’openssl/asn1.h' file no

    起因 项目需要集成支付宝,下载了支付宝demo(地址点击这里)然后开启搬砖。按照支付宝的集成说明开始集成。文档地址...

网友评论

    本文标题:Android 集成支付宝支付

    本文链接:https://www.haomeiwen.com/subject/rntmcftx.html