Android集成支付宝支出功用【官方澳门新永利下载】

授人以鱼不比授人以渔

率先大家来揣摩多少个场景:

官方澳门新永利下载 1授人以鱼不及授人以渔

  • 场景一、
    每一遍互联网诉求,都无法担保成功,假诺您未来正值呼吁一段数据是为着加载一段互联网列表,你在加载成功那里,把突显“正在加载”字样的View控件掩盖掉,那么一旦央浼失败,你是或不是还要再写贰遍??
  • 场景二、
    在应用软件恳求互联网进程中,难免蒙受互连网特别的图景,如若央求失败,就给顾客一个相比友好的提示,比方‘网络开小差啊~’ 之类的唤起。那么您是或不是每一趟供给都去写一回‘互联网开小差~’之类的唤醒语呢??
  • 场景三、
    一时候客商的无绳话机网络卡,当他展开二个页面发掘数目相当久都未曾刷新出来,等的慢性就关门了分界面,当他关闭分界面之后网络遽然好了,这时候假若还依据你设定的流程走,会不会并发难以预料的标题吧?
  • 场景四、
    你今后在做一个有记名功效的APP,这时你的后台人士跑过来跟你说,后台再次回到来的数据中,某三个字段若是为三个特定的值,你就去自动展开有个别页面(譬喻:当isLogin=false的时候,要你去自动展开登入页面。当isBank=true的时候,须求活动张开银行卡页面。等等……)。那么你是会怎么去管理那么些类似
    “变态” 实际却很常用的要求呢?
  • 支付宝
  • 分选SDK&Dmeo实行下载

如上意况是大家在应用程式开采中时时遇上的景况,那么大家接下去的代码,就是要消除那样的急需,大家要用起码的代码来成功最绕的须要。

  • 1 :
    由于篇章关系,这里不会贴出全体代码,可是会贴出重要关键代码,完整代码将在小说最终贴出。
  • 2 :
    本篇章适用于已经深谙了Retrofit的主导使用的人,所以借使对Retrofit都不会的话,建议先去熟练一下Retrofit的大旨使用。
  • alipaySdk-20160516.jar

解决场景一的须要:

咱俩本来不会每一种成功可能战败的回调都去写三遍对“加载中”字样的控件的操作,这里封装了八个onFinally()艺术,不管是网络央求成功,照旧互连网诉求失利,都会去调用一回onFinally
所以,大家得以把对控件的会合操作事件写在onFinally在那之中(比方:将下拉刷新控件的加载中的状态,修改为加载成功的情况)

Net net = retrofitBase.getRetrofit().create(Net.class);Call<DataBean> call = net.getIndex;call.enqueue(new SCallBack<DataBean>{ @Override public void onSuccess(@NonNull DataBean result) throws Exception { Log.d("MainActivity", "onSuccess:"+result.getLat; } @Override public void onCache(@NonNull DataBean result) throws Exception { Log.d("MainActivity", "onCache"); } @Override public void onFail(Throwable t) { super.onFail; Log.d("MainActivity", "onFail:"); } @Override public void onFinally() { Log.d("MainActivity", "onFinally"); }});
  • 1 : 使用SICallBack,或者SCallBack
    来替换Retrofit的CallBack,SCallBack 实现于SICallBack。
  • 2 : 传入上下文,扶助传入的花色是:Context Fragment
    v4.app.Fragment
  • 3 : 重写onFinally()方法 。

官方澳门新永利下载 2支付宝SDK
Demo

消除场景二的供给:

对此这种联合的互连网出错提醒,这里提供了三个联合管理情势。

import android.content.Context;import android.widget.Toast;import com.xiaolei.exretrofitcallback.network.common.IFailEvent;import com.xiaolei.exretrofitcallback.network.common.SICallBack;/** * Created by xiaolei on 2017/12/15. */public class MyFailEvent implements IFailEvent{ @Override public void onFail(SICallBack callBack, Throwable t, Context context) { Toast.makeText(context, "哇哦~,您的网络有问题哦~", Toast.LENGTH_SHORT).show(); }}
  • 1 : 新建一个类,实现IFailEvent接口。
  • 2 : 重写onFail方法。
  • 3 :
    把类设置到Config里面去:Config.setFailedEventClass(MyFailEvent.class);

有人也许会说,你都定义封装好了,那若是本人这些接口比较新鲜,不想用这种统一的管理情势呢??这种气象的确存在,所以,假如您在某些接口不想使用统一的错误管理情势。那么在调用SICallBack的时候,重写
onFail(Throwable t)方法,并且不调用
super.onFail(Throwable t),那么就不会走联合管理的法子。

 /** * 完整的符合支付宝参数规范的订单信息 */ final String payInfo = orderInfo + "&sign="" + sign + ""&" + getSignType(); Runnable payRunnable = new Runnable() { @Override public void run() { // 构造PayTask 对象 PayTask alipay = new PayTask(PayDemoActivity.this); // 调用支付接口,获取支付结果 String result = alipay.pay(payInfo, true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage; } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start();

消除场景三的急需:

这边正是二个互连网诉求慢,可是分界面已经关闭的拍卖须要。在SICallBack其间私下认可对Activity进行了推断,假若分界面已经破产,那么就算成功今后,还去更新分界面UI已经失却意义,所以不会去实施onSuccess
,onFail,onFinally,方法。

@Overridepublic void onFailure(Call<T> call, Throwable t){ if (checkActivityFinish return; try { onFail; } finally { onFinally(); }}
  • SICallBack里面,私下认可已经对本需求开展了管理。
  • 完整的合乎支付宝参数规范的订单音信

化解场景四的供给:

其一供给在无数应用软件里面都亟需这种效应,有的人称之为路由中间的跳转。这里给一个例子:

import android.content.Context;import android.support.annotation.Nullable;import android.util.Log;import com.xiaolei.exretrofitcallback.network.regist.OnCallBack;import com.xiaolei.exretrofitcallback.network.regist.ResponseBeanRegister;import com.xiaolei.exretrofitcallbackexample.Net.DataBean;/** * 这里是对地址进行拦截 * 如果是兰州市的地址,运行兰州市的方法,且不再执行onSuccess方法。 * 如果是深圳市的地址,运行深圳市的方法,不拦截,继续执行onSuccess方法。 * Created by xiaolei on 2017/12/15. */public class MyRegister extends ResponseBeanRegister<DataBean>{ @Nullable @Override public String filter(DataBean bean) { return bean.getLat(); } @OnCallBack(value = "36.06108")//兰州市 public void onInLanzhou(Context context) { Log.d("MainActivity", "拦截:兰州市"); } @OnCallBack(value = "22.54309",stopNextStep = false)//深圳市 public void onInShenzhen(Context context) { Log.d("MainActivity", "拦截:深圳市"); } }
  • 1、
    :新建三个类,承继ResponseBeanRegister<T>,泛型里,则写上您的本土乞请重回数据的连串,举个例子:叁个Bean,也许,String
    字符串。
  • 2、
    :你的历次网络必要成功后都会自行调用那么些onfilter主意,所以要求重写String filter;形式。再次回到的数量则是你要求去剖断的数目。例如:你的泛型是DataBean,你需求看清DataBean里面
    lat字段的值,那么你就相应如此写:

@Nullable@Overridepublic String filter(DataBean bean){ return bean.getLat();}
  • 3、 : 定义一个情势,使用用@OnCallBack去注明,示举例下:

@OnCallBack(value = "22.54309",stopNextStep = false)//深圳市public void onInShenzhen(Context context){ Log.d("MainActivity", "拦截:深圳市");}

这里有2个要求专一的:①:OnCallBack里面,有五个参数,第三个参数value是用来比较的值,当onfilter方法重回的值等于value的时候,则会自动调用当前艺术,第三个参数stopNextStep是多个布尔值,不写默认为true。当为true的时候,则当调用完本方法,不再调用onSuccess方法。当为false,则会继续调用onSuccess方法。

stopNextStep = false -> 本方法 -> onSuccess ->
onFinallystopNextStep = true -> 本方法 -> onFinally

②:对于定义的章程的参数,补助四个,叁个是CallBack的回到的参数,四个则是Context上下文。

官方澳门新永利下载 3协助活动注入值的参数类型

  • 官方澳门新永利下载,4、
    :在Config里注册:Config.registResponseBean(DataBean.class,MyRegister.class);//路由之间跳转的注册
    。可登记多少个Bean以及对应的ResponseRegister.

运动这里得到德姆o以及完整关键源码:Gtihub:

gradle直接行使:

compile 'com.xiaolei:ExRetrofitCallBack:1.0.1'

partner="2088101568358171"&seller_&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&sign="lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D"&sign_type="RSA"

resultStatus={9000};memo={};result={partner="2088101568358171"&seller_&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&success="true"&sign_type="RSA"&sign="hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="}
  • 七千 -> 订单支付成功
  • 8000 -> 正在管理中
  • 四千 -> 订单支付退步
  • 6001 -> 客商中途打消
  • 6002 ->互连网连接出错

发表评论

电子邮件地址不会被公开。 必填项已用*标注