集成支付宝Android版本接口学习 记录一

  1. 导入jar包,将alipay-sdk-common/alipaySdk-xxxxxxxx.jar包放入商户应用工程的libs目录下
  2. 修改Manifest和权限声明,在商户应用工程的AndroidManifest.xml文件里面添加声明:

        <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>
   和权限声明:
        <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" />

  3. 添加混淆规则

      在商户应用工程的proguard-project.txt里添加以下相关规则:

    -libraryjars libs/alipaySDK-20150602.jar 

    -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 *;}
 
  4.支付接口调用

    需要在新线程中调用支付接口。(可参考alipay_demo实现)

    获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:

    final String orderInfo = info;   // 订单信息

 
        Runnable payRunnable = new Runnable() {
 
            @Override
            public void run() {
                PayTask alipay = new PayTask(DemoActivity.this);
                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();
 
    
   5: 支付结果获取和处理

    调用pay方法支付后,将通过2种途径获得支付结果:

    同步返回
    商户应用客户端通过当前调用支付的Activity的Handler对象,通过它的回调函数获取支付结果。(可参考alipay_demo实现)
    代码示例:

      private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            Result result = new Result((String) msg.obj);
            Toast.makeText(DemoActivity.this, result.getResult(),
                        Toast.LENGTH_LONG).show();
        };
    };
 
    异步通知
    商户需要提供一个http协议的接口,包含在请求支付的入参中,其key对应notify_url。支付宝服务器在支付完成后,会以POST方式调用notify_url传输数据。
    
 
 
 
posted on 2017-01-12 13:53  luisMa  阅读(127)  评论(0)    收藏  举报