billyyoyo před 5 roky
rodič
revize
07312ac563

+ 38 - 2
app/src/developSheeptest/java/com/sheep/jiuyan/samllsheep/wxapi/WXEntryActivity.java

@@ -4,11 +4,19 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 
+import com.alibaba.fastjson.JSONObject;
 import com.sheep.gamegroup.event.WXLoginAuthEvent;
+import com.sheep.gamegroup.util.ApiJSONUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.jiuyan.samllsheep.Config;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.tencent.mm.opensdk.modelbase.BaseReq;
 import com.tencent.mm.opensdk.modelbase.BaseResp;
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
 import com.tencent.mm.opensdk.modelmsg.SendAuth;
+import com.tencent.mm.opensdk.modelpay.PayResp;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.umeng.socialize.weixin.view.WXCallbackActivity;
@@ -36,7 +44,7 @@ public class WXEntryActivity extends WXCallbackActivity {//implements IWXAPIEven
 
     @Override
     public void onReq(BaseReq baseReq) {
-        if(!(baseReq instanceof SendAuth.Req)){
+        if (!(baseReq instanceof SendAuth.Req)) {
             super.onReq(baseReq);
         }
     }
@@ -47,12 +55,40 @@ public class WXEntryActivity extends WXCallbackActivity {//implements IWXAPIEven
             if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
                 String code = ((SendAuth.Resp) resp).code;
                 EventBus.getDefault().post(new WXLoginAuthEvent(code));
-            } else{
+            } else {
                 EventBus.getDefault().post(new WXLoginAuthEvent(null));
             }
+        } else if (resp instanceof WXLaunchMiniProgram.Resp) {
+            WXLaunchMiniProgram.Resp miniResp = (WXLaunchMiniProgram.Resp) resp;
+            MiniPayResult result = MiniPayResult.parse(miniResp.extMsg);
+            String code;
+            if ("success".equals(result.payResult)) {
+                ApiJSONUtil.missionExecute(4);
+                code = "9000";
+            } else {
+                code = "9001";
+            }
+            String frompackage = QQUtil.getWxPayFrom(SheepApp.getInstance(), result.prepayId);
+            String outorderno = QQUtil.getWxPayOrderNo(SheepApp.getInstance(), result.prepayId);
+            int fromorient = QQUtil.getWxPayOrient(SheepApp.getInstance(), result.prepayId);
+            QQUtil.removeWxPayFrom(this, result.prepayId);
+            QQUtil.removeWxPayOrderNo(this, result.prepayId);
+            QQUtil.removeWxPayOrient(this, result.prepayId);
+            Jump2View.getInstance().goRechargeResult(SheepApp.getInstance(), code, frompackage, fromorient, outorderno);
         } else {
             super.onResp(resp);
         }
     }
 
+    public static class MiniPayResult {
+        String payResult;
+        String prepayId;
+        String errorMsg;
+
+        public static MiniPayResult parse(String text) {
+            MiniPayResult result = JSONObject.parseObject(text, MiniPayResult.class);
+            return result;
+        }
+    }
+
 }

+ 3 - 5
app/src/main/AndroidManifest.xml

@@ -136,17 +136,15 @@
             android:launchMode="singleTop" />
         <activity
             android:name=".wxapi.WXEntryActivity"
+            android:configChanges="keyboardHidden|navigation|orientation|screenSize"
             android:exported="true"
-            android:launchMode="singleTop" />
+            android:launchMode="singleTask" />
         <activity
             android:name="com.ipaynow.plugin.inner_plugin.miniprogram.activity.MiniProgramPayActivity"
             android:configChanges="keyboardHidden|navigation|orientation|screenSize"
             android:launchMode="singleTask"
             android:screenOrientation="behind"
-            android:theme="@android:style/Theme.Dialog" /> <!-- <activity-alias -->
-        <!-- android:name=".wxapi.WXEntryActivity2" -->
-        <!-- android:exported="true" -->
-        <!-- android:targetActivity="com.ipaynow.plugin.inner_plugin.miniprogram.activity.MiniProgramPayActivity" /> -->
+            android:theme="@android:style/Theme.Dialog" />
         <activity
             android:name=".wxapi.WXPayEntryActivity"
             android:exported="true"

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -1267,6 +1267,7 @@ public class Jump2View {
         intent.putExtra("gowhere", gowhere);
         intent.putExtra("orderno", orderNO);
         intent.putExtra("fromorient", fromOrient);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
         context.startActivity(intent);
     }
 

+ 13 - 26
app/src/main/java/com/sheep/gamegroup/view/activity/ActPay.java

@@ -1,6 +1,5 @@
 package com.sheep.gamegroup.view.activity;
 
-import android.content.ComponentName;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -14,25 +13,21 @@ import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.greendao.DDProviderHelper;
 import com.sheep.gamegroup.greendao.download.SdkLoginUser;
 import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.entity.WebParams;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Constant;
-import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.jiuyan.samllsheep.Config;
 import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+import com.sheep.jiuyan.samllsheep.wxutil.WXAPIUtil;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.modelpay.PayResp;
 
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.List;
-
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -146,27 +141,19 @@ public class ActPay extends BaseActivity {
                         }
                     });
         } else if (PAY_TYPE_MINI.equals(pay_type)) {
-            SheepApp.getInstance().getNetComponent().getApiService().sdkFindOrder(token, order_no)
-                    .subscribeOn(Schedulers.io())
-                    .observeOn(AndroidSchedulers.mainThread())
-                    .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                        @Override
-                        public void onError(BaseMessage baseMessage) {
-                            Intent intent = new Intent();
-                            intent.putExtra(EXTRA_NAME_ORDERNO, order_no);
-                            intent.putExtra(EXTRA_NAME_STATUS, STATUS_PAY_ORDER_ERROR);
-                            setResult(RESULT_CODE, intent);
-                            finish();
-                        }
-
-                        @Override
-                        public void onNext(BaseMessage baseMessage) {
-                            tryMiniOrder();
-                        }
-                    });
+//            tryMiniOrder();
+            tryWXMiniPay();
         }
     }
 
+    public void tryWXMiniPay() {
+        WXAPIUtil.launchWXMinipay(this, token, order_no);
+        QQUtil.saveWxPayFrom(SheepApp.getInstance(), order_no, from_package);
+        QQUtil.saveWxPayOrderNo(SheepApp.getInstance(), order_no, order_no);
+        QQUtil.saveWxPayOrient(SheepApp.getInstance(), order_no, from_orient);
+        finish();
+    }
+
     public void tryWxOrder() {
         SheepApp.getInstance().getNetComponent().getApiService().getPayWxParams(token, order_no)
                 .subscribeOn(Schedulers.io())
@@ -208,12 +195,12 @@ public class ActPay extends BaseActivity {
 
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        launchMini(baseMessage.getData().toString());
+                        tryIPaynow(baseMessage.getData().toString());
                     }
                 });
     }
 
-    private void launchMini(String payInfo) {
+    private void tryIPaynow(String payInfo) {
         Log.i("ActPay", "启动小程序支付");
         IpaynowPlugin.getInstance()
                 .setMiniProgramEnv(0)

+ 24 - 5
app/src/main/java/com/sheep/gamegroup/view/activity/RechargeAct.java

@@ -39,11 +39,17 @@ import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.RechargePriceAdapter;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+import com.sheep.jiuyan.samllsheep.Config;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.sheep.jiuyan.samllsheep.wxutil.WXAPIUtil;
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
+import com.tencent.mm.opensdk.openapi.IWXAPI;
+import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -269,6 +275,9 @@ public class RechargeAct extends BaseActivity {
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("Amount", Float.valueOf(mAmount));
         jsonObject.put("PayType", mPayType);
+        if (BuildConfig.DEBUG) {
+            jsonObject.put("Debug", 1);
+        }
         SheepApp.getInstance().getNetComponent().getApiService().getRechargeBalance(fromToken, jsonObject)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -287,6 +296,8 @@ public class RechargeAct extends BaseActivity {
                             case 4:
                                 tryIpaynow(payInfo);
                                 break;
+                            case 5:
+                                tryHuiPay(payInfo);
                         }
                     }
 
@@ -329,6 +340,14 @@ public class RechargeAct extends BaseActivity {
                 .pay(payInfo);
     }
 
+    private void tryHuiPay(String payInfo) {
+        WXAPIUtil.launchWXMinipay(this, fromToken, payInfo);
+        QQUtil.saveWxPayFrom(SheepApp.getInstance(), payInfo, fromPackage);
+        QQUtil.saveWxPayOrderNo(SheepApp.getInstance(), payInfo, "");
+        QQUtil.saveWxPayOrient(SheepApp.getInstance(), payInfo, fromOrient);
+        finish();
+    }
+
     private void tryWxPay(BaseMessage baseMessage) {
         JSONObject jsonObject = baseMessage.getData(JSONObject.class);
         LogUtil.println("RechargeAct", "wxpay", baseMessage.getData());
@@ -381,11 +400,11 @@ public class RechargeAct extends BaseActivity {
 //                    intent.putExtra("amount", Integer.parseInt(mAmount));
 //                    setResult(777, intent);
 //                } else {
-                    if (forResult) {
-                        Jump2View.getInstance().goRechargeResult(RechargeAct.this, result, fromPackage, fromOrient, null);
-                    } else {
-                        Jump2View.getInstance().goRechargeResultAct(RechargeAct.this, result);
-                    }
+                if (forResult) {
+                    Jump2View.getInstance().goRechargeResult(RechargeAct.this, result, fromPackage, fromOrient, null);
+                } else {
+                    Jump2View.getInstance().goRechargeResultAct(RechargeAct.this, result);
+                }
 //                }
                 finish();
             }

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/RechargeResultAct.java

@@ -35,6 +35,11 @@ public class RechargeResultAct extends BaseActivity {
     private int fromorient;
 
     @Override
+    protected boolean showWhiteStatusBar() {
+        return true;
+    }
+
+    @Override
     protected int getLayoutId() {
         return R.layout.recharge_result_act_layout;
     }

+ 3 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/Config.java

@@ -167,7 +167,9 @@ public class Config {
         return url;
     }
 
-    public static final String WX_AUTH_APP_ID = "wx2be7f59bb7bb963f";
+//    public static final String WX_AUTH_APP_ID = "wx2be7f59bb7bb963f";
+    public static final String WX_AUTH_APP_ID = "wx6ec1ec1732a9cfc0";
+    public static final String WX_MINIPROGRAM_ORIGIN_ID = "gh_3cb7d6e8603d";
     public static final String QQ_APP_ID = "101461115";
 
     //人脸识别

+ 15 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/wxutil/WXAPIUtil.java

@@ -7,7 +7,9 @@ import android.widget.Toast;
 
 import com.alibaba.fastjson.JSONObject;
 import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.Config;
+import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
 import com.tencent.mm.opensdk.modelmsg.SendAuth;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
@@ -21,6 +23,19 @@ import okhttp3.Call;
 
 public class WXAPIUtil {
 
+    public static void launchWXMinipay(Context context, String token, String orderNo) {
+        IWXAPI api = WXAPIFactory.createWXAPI(context, Config.WX_AUTH_APP_ID);
+        WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
+        req.userName = Config.WX_MINIPROGRAM_ORIGIN_ID; // 填小程序原始id
+        req.path = "pages/pay/pay-hike/hike?prepayId=" + orderNo + "&token=" + token;
+        if (BuildConfig.DEBUG) {
+            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
+        } else {
+            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
+        }
+        api.sendReq(req);
+    }
+
     public static void handle(Context context, Intent newIntent) {
         if (newIntent.hasExtra("_launch_wxminiprogram_ext_msg") && newIntent.getStringExtra("_launch_wxminiprogram_ext_msg").contains("payResult")) {
             newIntent.setClassName(context, "com.ipaynow.plugin.inner_plugin.miniprogram.activity.MiniProgramPayActivity");