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

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

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中添加声明
<activity
android: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" />

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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值