概述
上一篇写了关于微信支付的,有微信支付怎么能少得了支付宝支付呢。老规矩,直接上流程
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" />
好了,最后我们来看下效果
最后
以上就是朴素西牛为你收集整理的安卓第三方支付之支付宝支付的全部内容,希望文章能够帮你解决安卓第三方支付之支付宝支付所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复