Przeglądaj źródła

1.新增支付相关信息接口

ZhangXinYu 6 lat temu
rodzic
commit
b9d0bc0196

+ 0 - 1
app/build.gradle

@@ -90,7 +90,6 @@ android {
             signingConfig signingConfigs.release
         }
     }
-
 }
 
 dependencies {

Plik diff jest za duży
+ 1 - 0
app/src/main/java/com/tongyu/luck/happywork/aliapi/PayResult.java


+ 53 - 0
app/src/main/java/com/tongyu/luck/happywork/aliapi/PayUtils.java

@@ -0,0 +1,53 @@
+package com.tongyu.luck.happywork.aliapi;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.alipay.sdk.app.PayTask;
+import com.tongyu.luck.happywork.baselibrary.utils.ToastUtils;
+import com.tongyu.luck.happywork.ui.base.BaseActivity;
+import com.tongyu.luck.happywork.utils.LogUtils;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Consumer;
+import io.reactivex.schedulers.Schedulers;
+
+public class PayUtils {
+    /**
+     * 支付宝支付
+     *
+     * @param mContext
+     */
+    public static void payAli(final BaseActivity mContext, final String payInformation) {
+        Observable.create(new ObservableOnSubscribe<Map<String, String>>() {
+            @Override
+            public void subscribe(ObservableEmitter<Map<String, String>> emitter) {
+                PayTask alipay = new PayTask(mContext);
+                Map<String, String> result = alipay.payV2(payInformation, true);
+                emitter.onNext(result);
+            }
+        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Map<String, String>>() {
+            @Override
+            public void accept(@NonNull Map<String, String> result) {
+                PayResult payResult = new PayResult(result);
+                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
+                String resultStatus = payResult.getResultStatus();
+                // 判断resultStatus 为9000则代表支付成功
+                if (TextUtils.equals(resultStatus, "9000")) {
+                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
+                    ToastUtils.show(mContext, "支付成功");
+                } else {
+                    // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
+                    ToastUtils.show(mContext, "支付失败");
+                }
+                LogUtils.d("pay:" + resultInfo);
+            }
+        });
+    }
+}

+ 142 - 0
app/src/main/java/com/tongyu/luck/happywork/bean/OrderBean.java

@@ -0,0 +1,142 @@
+package com.tongyu.luck.happywork.bean;
+
+/**
+ * 支付订单对象
+ */
+public class OrderBean {
+    private String id;
+    private String remarks;
+    private String createBy;
+    private String createDate;
+    private String updateBy;
+    private String updateDate;
+    private String delFlag;
+    private String orderNumber;
+    private String memberId;
+    private String orderTime;
+    private String actuallymoney;
+    private int orderStatus;
+    private String payTime;
+    private String prepayId;
+    private int payType;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(String createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public String getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(String updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getOrderTime() {
+        return orderTime;
+    }
+
+    public void setOrderTime(String orderTime) {
+        this.orderTime = orderTime;
+    }
+
+    public String getActuallymoney() {
+        return actuallymoney;
+    }
+
+    public void setActuallymoney(String actuallymoney) {
+        this.actuallymoney = actuallymoney;
+    }
+
+    public int getOrderStatus() {
+        return orderStatus;
+    }
+
+    public void setOrderStatus(int orderStatus) {
+        this.orderStatus = orderStatus;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+
+    public String getPrepayId() {
+        return prepayId;
+    }
+
+    public void setPrepayId(String prepayId) {
+        this.prepayId = prepayId;
+    }
+
+    public int getPayType() {
+        return payType;
+    }
+
+    public void setPayType(int payType) {
+        this.payType = payType;
+    }
+}

+ 15 - 0
app/src/main/java/com/tongyu/luck/happywork/bean/api/ApiOrderBean.java

@@ -0,0 +1,15 @@
+package com.tongyu.luck.happywork.bean.api;
+
+import com.tongyu.luck.happywork.bean.OrderBean;
+
+public class ApiOrderBean {
+    OrderBean mpMemberOrder;
+
+    public OrderBean getMpMemberOrder() {
+        return mpMemberOrder;
+    }
+
+    public void setMpMemberOrder(OrderBean mpMemberOrder) {
+        this.mpMemberOrder = mpMemberOrder;
+    }
+}

+ 13 - 0
app/src/main/java/com/tongyu/luck/happywork/bean/api/ApiPayBean.java

@@ -0,0 +1,13 @@
+package com.tongyu.luck.happywork.bean.api;
+
+public class ApiPayBean {
+    String resultStr;
+
+    public String getResultStr() {
+        return resultStr;
+    }
+
+    public void setResultStr(String resultStr) {
+        this.resultStr = resultStr;
+    }
+}

+ 19 - 1
app/src/main/java/com/tongyu/luck/happywork/http/Api.java

@@ -1,7 +1,7 @@
 package com.tongyu.luck.happywork.http;
 
 import com.tongyu.luck.happywork.bean.AuthCodeBean;
-import com.tongyu.luck.happywork.bean.PositionListBean;
+import com.tongyu.luck.happywork.bean.api.ApiPayBean;
 import com.tongyu.luck.happywork.bean.api.ApiAllAssembleListBean;
 import com.tongyu.luck.happywork.bean.api.ApiApplyListBean;
 import com.tongyu.luck.happywork.bean.api.ApiApproveBean;
@@ -30,6 +30,7 @@ import com.tongyu.luck.happywork.bean.api.ApiMsgDetailBean;
 import com.tongyu.luck.happywork.bean.api.ApiMsgListBean;
 import com.tongyu.luck.happywork.bean.api.ApiMyPointBean;
 import com.tongyu.luck.happywork.bean.api.ApiNormalBean;
+import com.tongyu.luck.happywork.bean.api.ApiOrderBean;
 import com.tongyu.luck.happywork.bean.api.ApiPartListBean;
 import com.tongyu.luck.happywork.bean.api.ApiPayrollBean;
 import com.tongyu.luck.happywork.bean.api.ApiPositionBean;
@@ -404,5 +405,22 @@ public class Api {
         Observable<ApiResultBean<ApiWalletListBean>> getQueryWalletDetailList(@QueryMap Map<String, Object> args);
     }
 
+    /**
+     * 支付
+     */
+    public interface PayInterface {
+        //获取支付订单信息
+        @POST("f/api/order/saveMpOrder")
+        Observable<ApiResultBean<ApiOrderBean>> requestOrderPayInformation(@Body Map<String, Object> args);
+
+        //获取微信支付参数
+        @POST("f/api/sys/minaPay/wxPayOrder.do")
+        Observable<ApiResultBean<ApiNormalBean>> requestWeChatPayInformation(@Body Map<String, Object> args);
+
+        //获取支付宝支付参数
+        @POST("f/api/sys/aliPay/aliPayOrder.do")
+        Observable<ApiResultBean<ApiPayBean>> requestAliPayInformation(@Body Map<String, Object> args);
+    }
+
 
 }

+ 1 - 1
app/src/main/java/com/tongyu/luck/happywork/http/subscribe/MessageSubscribe.java

@@ -58,7 +58,7 @@ public class MessageSubscribe extends BaseSubscribe {
     }
 
     /**
-     * 清理消息
+     * 检查版本更新
      *
      * @param args
      * @param mObservable

+ 56 - 0
app/src/main/java/com/tongyu/luck/happywork/http/subscribe/PaySubscribe.java

@@ -0,0 +1,56 @@
+package com.tongyu.luck.happywork.http.subscribe;
+
+import android.content.Context;
+
+import com.tongyu.luck.happywork.bean.api.ApiPayBean;
+import com.tongyu.luck.happywork.bean.api.ApiNormalBean;
+import com.tongyu.luck.happywork.bean.api.ApiOrderBean;
+import com.tongyu.luck.happywork.bean.api.ApiResultBean;
+import com.tongyu.luck.happywork.http.Api;
+import com.tongyu.luck.happywork.http.ApiObserver;
+import com.tongyu.luck.happywork.http.ServiceGenerator;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+
+public class PaySubscribe extends BaseSubscribe {
+
+    public PaySubscribe(Context context) {
+        super(context);
+    }
+
+    /**
+     * 获取支付订信息
+     *
+     * @param mObservable
+     */
+    public void requestOrderPayInformation(Map<String, Object> params, ApiObserver<ApiOrderBean> mObservable) {
+        Api.PayInterface apiService = ServiceGenerator.createService(Api.PayInterface.class);
+        Observable<ApiResultBean<ApiOrderBean>> observable = apiService.requestOrderPayInformation(params);
+        subscribe(observable, mObservable);
+    }
+
+    /**
+     * 获取微信支付参数
+     *
+     * @param mObservable
+     */
+    public void requestWeChatPayInformation(Map<String, Object> params, ApiObserver<ApiNormalBean> mObservable) {
+        Api.PayInterface apiService = ServiceGenerator.createService(Api.PayInterface.class);
+        Observable<ApiResultBean<ApiNormalBean>> observable = apiService.requestWeChatPayInformation(params);
+        subscribe(observable, mObservable);
+    }
+
+    /**
+     * 获取支付宝支付参数
+     *
+     * @param mObservable
+     */
+    public void requestAliPayInformation(Map<String, Object> params, ApiObserver<ApiPayBean> mObservable) {
+        Api.PayInterface apiService = ServiceGenerator.createService(Api.PayInterface.class);
+        Observable<ApiResultBean<ApiPayBean>> observable = apiService.requestAliPayInformation(params);
+        subscribe(observable, mObservable);
+    }
+
+}

+ 2 - 1
app/src/main/java/com/tongyu/luck/happywork/ui/activity/cclient/mine/IntegralActivity.java

@@ -140,7 +140,8 @@ public class IntegralActivity extends BaseActivity<IntegralPresenter> implements
         Intent intent;
         switch (view.getId()) {
             case R.id.iv_back:
-                finish();
+                startActivity(new Intent(mContext, PayActivity.class));
+//                finish();
                 break;
             case R.id.btn_sign:
                 mvpPresenter.sign();

+ 6 - 1
app/src/main/java/com/tongyu/luck/happywork/ui/activity/cclient/mine/PayActivity.java

@@ -7,6 +7,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.tongyu.luck.happywork.R;
+import com.tongyu.luck.happywork.baselibrary.AppConstant;
 import com.tongyu.luck.happywork.ui.base.BaseActivity;
 import com.tongyu.luck.happywork.ui.mvp.cclient.contacts.PayContacts;
 import com.tongyu.luck.happywork.ui.mvp.cclient.presenter.PayPresenter;
@@ -51,7 +52,7 @@ public class PayActivity extends BaseActivity<PayPresenter> implements PayContac
         setTitle(R.string.mine_pay);
     }
 
-    @OnClick({R.id.ll_wallet, R.id.ll_wechat, R.id.ll_alipay})
+    @OnClick({R.id.ll_wallet, R.id.ll_wechat, R.id.ll_alipay, R.id.btn_pay})
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.ll_wallet:
@@ -59,6 +60,10 @@ public class PayActivity extends BaseActivity<PayPresenter> implements PayContac
             case R.id.ll_alipay:
                 choosePayment(view.getId());
                 break;
+            case R.id.btn_pay:
+                if (vWechat.isSelected() || vAlipay.isSelected())
+                    mvpPresenter.getOrderPayInformation("0.01", vWechat.isSelected() ? AppConstant.PAY_TYPE_WECHAT : AppConstant.PAY_TYPE_ALIPAY);
+                break;
         }
     }
 

+ 13 - 0
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/contacts/PayContacts.java

@@ -1,5 +1,8 @@
 package com.tongyu.luck.happywork.ui.mvp.cclient.contacts;
 
+import com.tongyu.luck.happywork.bean.OrderBean;
+import com.tongyu.luck.happywork.bean.api.ApiOrderBean;
+import com.tongyu.luck.happywork.callback.MvpDataCallBack;
 import com.tongyu.luck.happywork.ui.base.IPresenter;
 import com.tongyu.luck.happywork.ui.base.IView;
 
@@ -8,8 +11,18 @@ public class PayContacts {
     }
 
     public interface IPayPresenter extends IPresenter {
+        void getOrderPayInformation(String money, int payType);
+
+        void getWeChatPayInformation(String orderId);
+
+        void getAliPayInformation(String orderId);
     }
 
     public interface IPayModel {
+        void getOrderPayInformation(String money, int payType, MvpDataCallBack<OrderBean> callBack);
+
+        void getWeChatPayInformation(String orderId, MvpDataCallBack<Boolean> callBack);
+
+        void getAliPayInformation(String orderId, MvpDataCallBack<Boolean> callBack);
     }
 }

+ 91 - 1
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/model/PayModel.java

@@ -1,6 +1,96 @@
 package com.tongyu.luck.happywork.ui.mvp.cclient.model;
 
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.tongyu.luck.happywork.aliapi.PayUtils;
+import com.tongyu.luck.happywork.bean.OrderBean;
+import com.tongyu.luck.happywork.bean.api.ApiPayBean;
+import com.tongyu.luck.happywork.bean.api.ApiNormalBean;
+import com.tongyu.luck.happywork.bean.api.ApiOrderBean;
+import com.tongyu.luck.happywork.callback.MvpDataCallBack;
+import com.tongyu.luck.happywork.http.ApiObserver;
+import com.tongyu.luck.happywork.http.RetrofitHttpParams;
+import com.tongyu.luck.happywork.http.subscribe.PaySubscribe;
+import com.tongyu.luck.happywork.ui.base.BaseActivity;
+import com.tongyu.luck.happywork.ui.base.BaseModel;
 import com.tongyu.luck.happywork.ui.mvp.cclient.contacts.PayContacts;
 
-public class PayModel implements PayContacts.IPayModel {
+public class PayModel extends BaseModel implements PayContacts.IPayModel {
+
+    public PayModel(Context mContext) {
+        super(mContext);
+    }
+
+    /**
+     * 支付(第一步-生成订单)
+     *
+     * @param money
+     * @param callBack
+     */
+    @Override
+    public void getOrderPayInformation(String money, int payType, final MvpDataCallBack<OrderBean> callBack) {
+        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
+        params.put("actuallyMoney", money);
+        params.put("pay_type", payType);
+        new PaySubscribe(mContext).requestOrderPayInformation(params.getRequestParams(), new ApiObserver<ApiOrderBean>(mContext) {
+            @Override
+            public void onSuccess(ApiOrderBean data) {
+                if (data != null) {
+                    callBack.onData(data.getMpMemberOrder());
+                }
+            }
+
+            @Override
+            public void onFinish() {
+            }
+        });
+    }
+
+    /**
+     * 获取微信支付参数
+     *
+     * @param orderId
+     * @param callBack
+     */
+    @Override
+    public void getWeChatPayInformation(String orderId, MvpDataCallBack<Boolean> callBack) {
+        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
+        params.put("orderId", orderId);
+        new PaySubscribe(mContext).requestWeChatPayInformation(params.getRequestParams(), new ApiObserver<ApiNormalBean>(mContext) {
+            @Override
+            public void onSuccess(ApiNormalBean data) {
+                if (data != null) {
+                }
+            }
+
+            @Override
+            public void onFinish() {
+            }
+        });
+    }
+
+    /**
+     * 获取支付宝支付参数
+     *
+     * @param orderId
+     * @param callBack
+     */
+    @Override
+    public void getAliPayInformation(String orderId, MvpDataCallBack<Boolean> callBack) {
+        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
+        params.put("orderId", orderId);
+        new PaySubscribe(mContext).requestAliPayInformation(params.getRequestParams(), new ApiObserver<ApiPayBean>(mContext) {
+            @Override
+            public void onSuccess(final ApiPayBean data) {
+                if (data != null && !TextUtils.isEmpty(data.getResultStr())) {
+                    PayUtils.payAli((BaseActivity) mContext, data.getResultStr());
+                }
+            }
+
+            @Override
+            public void onFinish() {
+            }
+        });
+    }
 }

+ 62 - 1
app/src/main/java/com/tongyu/luck/happywork/ui/mvp/cclient/presenter/PayPresenter.java

@@ -1,16 +1,77 @@
 package com.tongyu.luck.happywork.ui.mvp.cclient.presenter;
 
+import com.alipay.sdk.app.PayTask;
+import com.tongyu.luck.happywork.baselibrary.AppConstant;
+import com.tongyu.luck.happywork.bean.OrderBean;
+import com.tongyu.luck.happywork.bean.api.ApiOrderBean;
+import com.tongyu.luck.happywork.callback.MvpDataCallBack;
 import com.tongyu.luck.happywork.ui.activity.cclient.mine.PayActivity;
 import com.tongyu.luck.happywork.ui.base.BasePresenter;
 import com.tongyu.luck.happywork.ui.mvp.cclient.contacts.PayContacts;
 import com.tongyu.luck.happywork.ui.mvp.cclient.model.PayModel;
 
+import java.util.Map;
+
 public class PayPresenter extends BasePresenter<PayActivity> implements PayContacts.IPayPresenter {
     private PayModel mPayModel;
 
     public PayPresenter(PayActivity view) {
         super(view);
-        this.mPayModel = new PayModel();
+        this.mPayModel = new PayModel(mvpReference.get());
+    }
+
+    /**
+     * 去支付宝支付
+     *
+     * @param money
+     */
+    @Override
+    public void getOrderPayInformation(String money, int payType) {
+        if (isViewAttach()) {
+            mPayModel.getOrderPayInformation(money, payType, new MvpDataCallBack<OrderBean>() {
+                @Override
+                public void onData(OrderBean data) {
+                    if (data.getPayType() == AppConstant.PAY_TYPE_WECHAT) {
+                        getWeChatPayInformation(data.getId());
+                    } else if (data.getPayType() == AppConstant.PAY_TYPE_ALIPAY) {
+                        getAliPayInformation(data.getId());
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * 获取微信支付参数
+     *
+     * @param orderId
+     */
+    @Override
+    public void getWeChatPayInformation(String orderId) {
+        if (isViewAttach()) {
+            mPayModel.getWeChatPayInformation(orderId, new MvpDataCallBack<Boolean>() {
+                @Override
+                public void onData(Boolean data) {
+
+                }
+            });
+        }
     }
 
+    /**
+     * 获取支付宝支付参数
+     *
+     * @param orderId
+     */
+    @Override
+    public void getAliPayInformation(String orderId) {
+        if (isViewAttach()) {
+            mPayModel.getAliPayInformation(orderId, new MvpDataCallBack<Boolean>() {
+                @Override
+                public void onData(Boolean data) {
+
+                }
+            });
+        }
+    }
 }

+ 22 - 0
app/src/main/java/com/tongyu/luck/happywork/wxapi/WXUtils.java

@@ -10,6 +10,7 @@ import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
 import com.tencent.mm.opensdk.modelmsg.WXImageObject;
 import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
 import com.tencent.mm.opensdk.modelmsg.WXMiniProgramObject;
+import com.tencent.mm.opensdk.modelpay.PayReq;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
@@ -136,6 +137,27 @@ public class WXUtils {
     }
 
     /**
+     * 微信支付
+     *
+     * @param mContext
+     */
+    public static void payWx(Context mContext) {
+        IWXAPI api = getWXAPI(mContext);
+        if (isWXAppInstalled(api, mContext)) {
+            PayReq request = new PayReq();
+            request.appId = "wxd930ea5d5a258f4f";
+            request.partnerId = "1900000109";
+            request.prepayId = "1101000000140415649af9fc314aa427";
+            request.packageValue = "Sign=WXPay";
+            request.nonceStr = "1101000000140429eb40476f8896f4c9";
+            request.timeStamp = "1398746574";
+            request.sign = "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
+            //调用api接口,发送数据到微信
+            api.sendReq(request);
+        }
+    }
+
+    /**
      * 获取分享拼工团信息Path
      *
      * @param groupId

+ 1 - 1
baselibrary/build.gradle

@@ -19,11 +19,11 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
-
 }
 
 dependencies {
     api fileTree(include: ['*.jar'], dir: 'libs')
+    api(name: 'alipaySdk-15.6.8-20191021122514', ext: 'aar')
     api 'com.android.support:appcompat-v7:28.0.0'
     api 'com.android.support:design:28.0.0'
     api 'com.android.support.constraint:constraint-layout:1.1.3'

BIN
baselibrary/libs/alipaySdk-15.6.8-20191021122514.aar


+ 4 - 0
baselibrary/src/main/java/com/tongyu/luck/happywork/baselibrary/AppConstant.java

@@ -94,4 +94,8 @@ public class AppConstant {
     public static final int WALLET_IN_REWARD = 5;
     public static final int WALLET_OPEM_MEMBER = 6;
     public static final int WALLET_CASH_PAYMENT = 7;
+
+    //支付类型 0:微信 1:支付宝
+    public static final int PAY_TYPE_WECHAT = 0;
+    public static final int PAY_TYPE_ALIPAY = 1;
 }

+ 3 - 0
build.gradle

@@ -19,6 +19,9 @@ allprojects {
         google()
         jcenter()
         maven { url 'https://jitpack.io' }
+        flatDir {
+            dirs 'libs', '../baselibrary/libs'
+        }
     }
 }