安卓第三方支付之支付宝支付

来源:互联网 发布:java获取上传文件名称 编辑:程序博客网 时间:2024/05/12 11:36

上一篇写了关于微信支付的,有微信支付怎么能少得了支付宝支付呢。老规矩,直接上流程

1.申请开发者账号,创建应用。绑定商户平台,好了,这些基础的乱七八糟的就不废话了,直接去看官方文档就行

1.下载SDK,https://docs.open.alipay.com/54/104509

2.将sdk添加到工程目录下面的libs目录下面

3.做一个简单布局


4.准备调起支付宝支付的页面

 mrechargePresenter.RechargeAlipay(rmbAmount);
关键代码还是一句,顺便说一下,这里是采用的mvp+retrofit+rxjava的网络请求方式,不知道的小伙伴请自行百度。当点击具体某一项item的时候,将商品的价格传递给后台。好,接下来我们来看下presenter逻辑层的处理。

//支付宝public  void RechargeAlipay(String amount){    getUiInterface().showLoadingDialog();    Subscription subscription=mretrefitManger.RechargeAlipay(amount)            .subscribeOn(Schedulers.io())            .observeOn(AndroidSchedulers.mainThread())            .map(new Func1<BaseResponse<String>, PayResult>() {//将string转换成payresult                @Override                public PayResult call(BaseResponse<String> stringBaseResponse) {                    String data=stringBaseResponse.getData();                    PayTask paytask=new PayTask(mactivity);//调用支付宝                    Map<String,String>result=paytask.payV2(data,true);//data服务器返回的数据,true表示可以有加载dialog                    return new PayResult((Map<String,String>)result);                }            })            .compose(this.<PayResult>applyAsySchedulers())//这里封装了一个方法。其实就是让事件消费在主线程,
//当然你也可以不封装直接写            .subscribe(new Observer<PayResult>() {                @Override                public void onCompleted() {                }                @Override                public void onError(Throwable e) {                    getUiInterface().dismissLoadingDialog();                    BaseObserver.handleError(e, getUiInterface(), "info");                }                @Override                public void onNext(PayResult payResult) {                    getUiInterface().dismissLoadingDialog();                    switch (payResult.getResultStatus()){
//可以在下面处理你自己的业务逻辑                        case "9000":                            Toast.makeText(mactivity,"充值成功",Toast.LENGTH_SHORT).show();                            //loadRechargeMap(2,"b2d57ac6b86baa2552a812a3ee68bf46");//刷新余额和列表
   //                            break;                        case "8000":                            Toast.makeText(mactivity,"充值处理中。。。",Toast.LENGTH_SHORT).show();                            break;                        case "6001":                            Toast.makeText(mactivity,"充值取消",Toast.LENGTH_SHORT).show();                            break;                            default:                            Toast.makeText(mactivity,"充值失败",Toast.LENGTH_SHORT).show();                            break;                    }                }            });    addSubscription(subscription);}
//回调的json实体类,这个demo里面也有,这里我们可以直接复制
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);         }      }   }   @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;   }}

最后在mianfest中添加声明
<activityandroid:name="com.alipay.sdk.app.H5PayActivity"android:configChanges="orientation|keyboardHidden|navigation"android:exported="false"android:screenOrientation="behind"/><activity    android:name="com.alipay.sdk.auth.AuthActivity"    android:configChanges="orientation|keyboardHidden|navigation"    android:exported="false"    android:screenOrientation="behind"/>
//添加权限
<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" />

好了,最后我们来看下效果




原创粉丝点击