Parcourir la source

wx pay for sdk

hanjing il y a 7 ans
Parent
commit
b373fe952b

+ 2 - 1
app/src/main/AndroidManifest.xml

@@ -840,8 +840,9 @@
         <!-- start 小绵羊sdk相关 -->
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActPay"
-            android:theme="@style/AppActionTheme"
+            android:theme="@style/AppTheme.translucent"
             android:exported="true"
+            android:launchMode="singleInstance"
             android:screenOrientation="user" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.GameCertificationActivity"

+ 15 - 15
app/src/main/java/com/sheep/gamegroup/greendao/download/DaoMaster.java

@@ -21,26 +21,26 @@ public class DaoMaster extends AbstractDaoMaster {
 
     /** Creates underlying database table using DAOs. */
     public static void createAllTables(Database db, boolean ifNotExists) {
-        AcceptTaskRecordDao.createTable(db, ifNotExists);
-        AccountDao.createTable(db, ifNotExists);
-        AppdownloadBeanDao.createTable(db, ifNotExists);
-        DownLoadInfoDao.createTable(db, ifNotExists);
         ProcessRecordDao.createTable(db, ifNotExists);
-        ScreenShotRecordDao.createTable(db, ifNotExists);
+        AppdownloadBeanDao.createTable(db, ifNotExists);
         SdkLoginUserDao.createTable(db, ifNotExists);
+        ScreenShotRecordDao.createTable(db, ifNotExists);
+        AcceptTaskRecordDao.createTable(db, ifNotExists);
+        AccountDao.createTable(db, ifNotExists);
         SearchRecordDao.createTable(db, ifNotExists);
+        DownLoadInfoDao.createTable(db, ifNotExists);
     }
 
     /** Drops underlying database table using DAOs. */
     public static void dropAllTables(Database db, boolean ifExists) {
-        AcceptTaskRecordDao.dropTable(db, ifExists);
-        AccountDao.dropTable(db, ifExists);
-        AppdownloadBeanDao.dropTable(db, ifExists);
-        DownLoadInfoDao.dropTable(db, ifExists);
         ProcessRecordDao.dropTable(db, ifExists);
-        ScreenShotRecordDao.dropTable(db, ifExists);
+        AppdownloadBeanDao.dropTable(db, ifExists);
         SdkLoginUserDao.dropTable(db, ifExists);
+        ScreenShotRecordDao.dropTable(db, ifExists);
+        AcceptTaskRecordDao.dropTable(db, ifExists);
+        AccountDao.dropTable(db, ifExists);
         SearchRecordDao.dropTable(db, ifExists);
+        DownLoadInfoDao.dropTable(db, ifExists);
     }
 
     /**
@@ -59,14 +59,14 @@ public class DaoMaster extends AbstractDaoMaster {
 
     public DaoMaster(Database db) {
         super(db, SCHEMA_VERSION);
-        registerDaoClass(AcceptTaskRecordDao.class);
-        registerDaoClass(AccountDao.class);
-        registerDaoClass(AppdownloadBeanDao.class);
-        registerDaoClass(DownLoadInfoDao.class);
         registerDaoClass(ProcessRecordDao.class);
-        registerDaoClass(ScreenShotRecordDao.class);
+        registerDaoClass(AppdownloadBeanDao.class);
         registerDaoClass(SdkLoginUserDao.class);
+        registerDaoClass(ScreenShotRecordDao.class);
+        registerDaoClass(AcceptTaskRecordDao.class);
+        registerDaoClass(AccountDao.class);
         registerDaoClass(SearchRecordDao.class);
+        registerDaoClass(DownLoadInfoDao.class);
     }
 
     public DaoSession newSession() {

+ 61 - 61
app/src/main/java/com/sheep/gamegroup/greendao/download/DaoSession.java

@@ -8,23 +8,23 @@ import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.identityscope.IdentityScopeType;
 import org.greenrobot.greendao.internal.DaoConfig;
 
-import com.sheep.gamegroup.greendao.download.AcceptTaskRecord;
-import com.sheep.gamegroup.greendao.download.Account;
-import com.sheep.gamegroup.greendao.download.AppdownloadBean;
-import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.ProcessRecord;
-import com.sheep.gamegroup.greendao.download.ScreenShotRecord;
+import com.sheep.gamegroup.greendao.download.AppdownloadBean;
 import com.sheep.gamegroup.greendao.download.SdkLoginUser;
+import com.sheep.gamegroup.greendao.download.ScreenShotRecord;
+import com.sheep.gamegroup.greendao.download.AcceptTaskRecord;
+import com.sheep.gamegroup.greendao.download.Account;
 import com.sheep.gamegroup.greendao.download.SearchRecord;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 
-import com.sheep.gamegroup.greendao.download.AcceptTaskRecordDao;
-import com.sheep.gamegroup.greendao.download.AccountDao;
-import com.sheep.gamegroup.greendao.download.AppdownloadBeanDao;
-import com.sheep.gamegroup.greendao.download.DownLoadInfoDao;
 import com.sheep.gamegroup.greendao.download.ProcessRecordDao;
-import com.sheep.gamegroup.greendao.download.ScreenShotRecordDao;
+import com.sheep.gamegroup.greendao.download.AppdownloadBeanDao;
 import com.sheep.gamegroup.greendao.download.SdkLoginUserDao;
+import com.sheep.gamegroup.greendao.download.ScreenShotRecordDao;
+import com.sheep.gamegroup.greendao.download.AcceptTaskRecordDao;
+import com.sheep.gamegroup.greendao.download.AccountDao;
 import com.sheep.gamegroup.greendao.download.SearchRecordDao;
+import com.sheep.gamegroup.greendao.download.DownLoadInfoDao;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 
@@ -35,112 +35,112 @@ import com.sheep.gamegroup.greendao.download.SearchRecordDao;
  */
 public class DaoSession extends AbstractDaoSession {
 
-    private final DaoConfig acceptTaskRecordDaoConfig;
-    private final DaoConfig accountDaoConfig;
-    private final DaoConfig appdownloadBeanDaoConfig;
-    private final DaoConfig downLoadInfoDaoConfig;
     private final DaoConfig processRecordDaoConfig;
-    private final DaoConfig screenShotRecordDaoConfig;
+    private final DaoConfig appdownloadBeanDaoConfig;
     private final DaoConfig sdkLoginUserDaoConfig;
+    private final DaoConfig screenShotRecordDaoConfig;
+    private final DaoConfig acceptTaskRecordDaoConfig;
+    private final DaoConfig accountDaoConfig;
     private final DaoConfig searchRecordDaoConfig;
+    private final DaoConfig downLoadInfoDaoConfig;
 
-    private final AcceptTaskRecordDao acceptTaskRecordDao;
-    private final AccountDao accountDao;
-    private final AppdownloadBeanDao appdownloadBeanDao;
-    private final DownLoadInfoDao downLoadInfoDao;
     private final ProcessRecordDao processRecordDao;
-    private final ScreenShotRecordDao screenShotRecordDao;
+    private final AppdownloadBeanDao appdownloadBeanDao;
     private final SdkLoginUserDao sdkLoginUserDao;
+    private final ScreenShotRecordDao screenShotRecordDao;
+    private final AcceptTaskRecordDao acceptTaskRecordDao;
+    private final AccountDao accountDao;
     private final SearchRecordDao searchRecordDao;
+    private final DownLoadInfoDao downLoadInfoDao;
 
     public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
             daoConfigMap) {
         super(db);
 
-        acceptTaskRecordDaoConfig = daoConfigMap.get(AcceptTaskRecordDao.class).clone();
-        acceptTaskRecordDaoConfig.initIdentityScope(type);
-
-        accountDaoConfig = daoConfigMap.get(AccountDao.class).clone();
-        accountDaoConfig.initIdentityScope(type);
+        processRecordDaoConfig = daoConfigMap.get(ProcessRecordDao.class).clone();
+        processRecordDaoConfig.initIdentityScope(type);
 
         appdownloadBeanDaoConfig = daoConfigMap.get(AppdownloadBeanDao.class).clone();
         appdownloadBeanDaoConfig.initIdentityScope(type);
 
-        downLoadInfoDaoConfig = daoConfigMap.get(DownLoadInfoDao.class).clone();
-        downLoadInfoDaoConfig.initIdentityScope(type);
-
-        processRecordDaoConfig = daoConfigMap.get(ProcessRecordDao.class).clone();
-        processRecordDaoConfig.initIdentityScope(type);
+        sdkLoginUserDaoConfig = daoConfigMap.get(SdkLoginUserDao.class).clone();
+        sdkLoginUserDaoConfig.initIdentityScope(type);
 
         screenShotRecordDaoConfig = daoConfigMap.get(ScreenShotRecordDao.class).clone();
         screenShotRecordDaoConfig.initIdentityScope(type);
 
-        sdkLoginUserDaoConfig = daoConfigMap.get(SdkLoginUserDao.class).clone();
-        sdkLoginUserDaoConfig.initIdentityScope(type);
+        acceptTaskRecordDaoConfig = daoConfigMap.get(AcceptTaskRecordDao.class).clone();
+        acceptTaskRecordDaoConfig.initIdentityScope(type);
+
+        accountDaoConfig = daoConfigMap.get(AccountDao.class).clone();
+        accountDaoConfig.initIdentityScope(type);
 
         searchRecordDaoConfig = daoConfigMap.get(SearchRecordDao.class).clone();
         searchRecordDaoConfig.initIdentityScope(type);
 
-        acceptTaskRecordDao = new AcceptTaskRecordDao(acceptTaskRecordDaoConfig, this);
-        accountDao = new AccountDao(accountDaoConfig, this);
-        appdownloadBeanDao = new AppdownloadBeanDao(appdownloadBeanDaoConfig, this);
-        downLoadInfoDao = new DownLoadInfoDao(downLoadInfoDaoConfig, this);
+        downLoadInfoDaoConfig = daoConfigMap.get(DownLoadInfoDao.class).clone();
+        downLoadInfoDaoConfig.initIdentityScope(type);
+
         processRecordDao = new ProcessRecordDao(processRecordDaoConfig, this);
-        screenShotRecordDao = new ScreenShotRecordDao(screenShotRecordDaoConfig, this);
+        appdownloadBeanDao = new AppdownloadBeanDao(appdownloadBeanDaoConfig, this);
         sdkLoginUserDao = new SdkLoginUserDao(sdkLoginUserDaoConfig, this);
+        screenShotRecordDao = new ScreenShotRecordDao(screenShotRecordDaoConfig, this);
+        acceptTaskRecordDao = new AcceptTaskRecordDao(acceptTaskRecordDaoConfig, this);
+        accountDao = new AccountDao(accountDaoConfig, this);
         searchRecordDao = new SearchRecordDao(searchRecordDaoConfig, this);
+        downLoadInfoDao = new DownLoadInfoDao(downLoadInfoDaoConfig, this);
 
-        registerDao(AcceptTaskRecord.class, acceptTaskRecordDao);
-        registerDao(Account.class, accountDao);
-        registerDao(AppdownloadBean.class, appdownloadBeanDao);
-        registerDao(DownLoadInfo.class, downLoadInfoDao);
         registerDao(ProcessRecord.class, processRecordDao);
-        registerDao(ScreenShotRecord.class, screenShotRecordDao);
+        registerDao(AppdownloadBean.class, appdownloadBeanDao);
         registerDao(SdkLoginUser.class, sdkLoginUserDao);
+        registerDao(ScreenShotRecord.class, screenShotRecordDao);
+        registerDao(AcceptTaskRecord.class, acceptTaskRecordDao);
+        registerDao(Account.class, accountDao);
         registerDao(SearchRecord.class, searchRecordDao);
+        registerDao(DownLoadInfo.class, downLoadInfoDao);
     }
     
     public void clear() {
-        acceptTaskRecordDaoConfig.clearIdentityScope();
-        accountDaoConfig.clearIdentityScope();
-        appdownloadBeanDaoConfig.clearIdentityScope();
-        downLoadInfoDaoConfig.clearIdentityScope();
         processRecordDaoConfig.clearIdentityScope();
-        screenShotRecordDaoConfig.clearIdentityScope();
+        appdownloadBeanDaoConfig.clearIdentityScope();
         sdkLoginUserDaoConfig.clearIdentityScope();
+        screenShotRecordDaoConfig.clearIdentityScope();
+        acceptTaskRecordDaoConfig.clearIdentityScope();
+        accountDaoConfig.clearIdentityScope();
         searchRecordDaoConfig.clearIdentityScope();
+        downLoadInfoDaoConfig.clearIdentityScope();
     }
 
-    public AcceptTaskRecordDao getAcceptTaskRecordDao() {
-        return acceptTaskRecordDao;
-    }
-
-    public AccountDao getAccountDao() {
-        return accountDao;
+    public ProcessRecordDao getProcessRecordDao() {
+        return processRecordDao;
     }
 
     public AppdownloadBeanDao getAppdownloadBeanDao() {
         return appdownloadBeanDao;
     }
 
-    public DownLoadInfoDao getDownLoadInfoDao() {
-        return downLoadInfoDao;
-    }
-
-    public ProcessRecordDao getProcessRecordDao() {
-        return processRecordDao;
+    public SdkLoginUserDao getSdkLoginUserDao() {
+        return sdkLoginUserDao;
     }
 
     public ScreenShotRecordDao getScreenShotRecordDao() {
         return screenShotRecordDao;
     }
 
-    public SdkLoginUserDao getSdkLoginUserDao() {
-        return sdkLoginUserDao;
+    public AcceptTaskRecordDao getAcceptTaskRecordDao() {
+        return acceptTaskRecordDao;
+    }
+
+    public AccountDao getAccountDao() {
+        return accountDao;
     }
 
     public SearchRecordDao getSearchRecordDao() {
         return searchRecordDao;
     }
 
+    public DownLoadInfoDao getDownLoadInfoDao() {
+        return downLoadInfoDao;
+    }
+
 }

+ 12 - 2
app/src/main/java/com/sheep/gamegroup/module/pay/activity/SheepWXPayEntryActivity.java

@@ -2,11 +2,14 @@ package com.sheep.gamegroup.module.pay.activity;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
+import android.text.TextUtils;
 
 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.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
@@ -65,9 +68,16 @@ public abstract class SheepWXPayEntryActivity extends Activity implements IWXAPI
             result = String.valueOf(resp.errCode + 9000);//"9000" 代表支付成功
         }
 
-        EventBus.getDefault().post(resp);
+//        EventBus.getDefault().post(resp);
 //        if (!close) {
-            Jump2View.getInstance().goRechargeResultAct(this, result);
+        PayResp payResp = (PayResp) resp;
+        String frompackage = QQUtil.getWxPayFrom(SheepApp.getInstance(), payResp.prepayId);
+        String outorderno = QQUtil.getWxPayOrderNo(SheepApp.getInstance(), payResp.prepayId);
+        QQUtil.removeWxPayFrom(this, payResp.prepayId);
+        QQUtil.removeWxPayOrderNo(this, payResp.prepayId);
+        Jump2View.getInstance().goRechargeResult(this, result, frompackage, outorderno);
+//        } else {
+//
 //        }
         SheepWXPayEntryActivity.close = false;
         finish();

+ 32 - 25
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -994,13 +994,20 @@ public class CommonUtil {
      *
      * @param payInfo
      */
-    public void alipay(Activity activity, final String payInfo, final boolean b, Observer<String> observer) {
+    public void alipay(Activity activity, String payInfo, final boolean b, Observer<String> observer) {
+        if (payInfo.startsWith("\"")) {
+            payInfo = payInfo.substring(1);
+        }
+        if (payInfo.endsWith("\"")) {
+            payInfo = payInfo.substring(0, payInfo.lastIndexOf("\""));
+        }
+        final String payParam = payInfo;
         Observable.create(new ObservableOnSubscribe<String>() {
             @Override
             public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                 PayTask alipay = new PayTask(activity);
                 // 调用支付接口,获取支付结果
-                Map<String, String> result = alipay.payV2(payInfo, b);
+                Map<String, String> result = alipay.payV2(payParam, b);
                 PayResult payResult = new PayResult(result);
                 /**
                  * 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
@@ -2613,9 +2620,9 @@ public class CommonUtil {
             String url;
             if ((url = StringUtils.findUrl(text)) != null) {//如果是链接,直接跳转外部浏览器
                 LogUtil.println("checkCopyText", url);
-                if(StringUtils.isHttpUrl(url)) {
+                if (StringUtils.isHttpUrl(url)) {
                     showGoWebDialog(dialogConfig, closeListener, textString, url);
-                } else if(TestUtil.isTest()) {//下面的功能暂不提供给用户
+                } else if (TestUtil.isTest()) {//下面的功能暂不提供给用户
                     dialogConfig.setMsg("已经复制如下内容:\n" + textString + "\n,是否尝试跳转?")
                             .setBtnLeftText("确定").setBtnLeftOnClickListener(view -> Jump2View.getInstance().tryGotoDeepLink(textString))
                             .setBtnRightText("仅一次").setBtnRightOnClickListener(view -> {
@@ -2641,10 +2648,10 @@ public class CommonUtil {
 
     //跳转http或者https链接
     private void showGoWebDialog(DialogConfig dialogConfig, View.OnClickListener closeListener, String textString, String url) {
-        if(checkShouYouShare(closeListener, url)){//小绵羊分享页面特殊处理
+        if (checkShouYouShare(closeListener, url)) {//小绵羊分享页面特殊处理
             return;
         }
-        if(TestUtil.isTest()) {//下面的功能暂不提供给用户
+        if (TestUtil.isTest()) {//下面的功能暂不提供给用户
             dialogConfig.setMsg("已经复制如下内容:\n" + textString + "\n,是否访问该链接?")
                     .setBtnLeftText("确定").setBtnLeftOnClickListener(view -> Jump2View.getInstance().goWeb(SheepApp.getInstance().getCurrentActivity(), url))
                     .setBtnRightText("仅一次").setBtnRightOnClickListener(view -> {
@@ -2657,31 +2664,31 @@ public class CommonUtil {
 
     //检查是否是小绵羊分享页面,如果是且获取到了game_id,返回true并调用接口获取对应的applications,然后尝试显示游戏对话框,提示用户是否查看游戏详情
     private boolean checkShouYouShare(View.OnClickListener closeListener, String url) {
-        if(url.contains("/shou_you_share/index.html")) {
+        if (url.contains("/shou_you_share/index.html")) {
             String gameId = StringUtils.getQueryParameter(url, "game_id");
-            if(!TextUtils.isEmpty(gameId)){
+            if (!TextUtils.isEmpty(gameId)) {
                 SheepApp.getInstance().getNetComponent().getApiService().getAppId(gameId)//http://10.8.220.229:8800/shou_you_share/index.html?invitation_code=12799442&game_id=1553
-                                .subscribeOn(Schedulers.io())
-                                .observeOn(AndroidSchedulers.mainThread())
-                                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                                    @Override
-                                    public void onNext(BaseMessage baseMessage) {
-                                        Applications applications = baseMessage.getData(Applications.class);
-                                        ViewUtil.showGameDialog(applications, closeListener);
-                                    }
-
-                                    @Override
-                                    public void onError(BaseMessage baseMessage) {
-                                        G.showToast(baseMessage);
-                                    }
-                                });
+                        .subscribeOn(Schedulers.io())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                            @Override
+                            public void onNext(BaseMessage baseMessage) {
+                                Applications applications = baseMessage.getData(Applications.class);
+                                ViewUtil.showGameDialog(applications, closeListener);
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                G.showToast(baseMessage);
+                            }
+                        });
                 return true;
             }
-        } else if(url.contains("/#/placing-orders/") && url.contains("?merchandise_id=")) {//http://10.8.220.248:8080/#/placing-orders/6504256768225316864?merchandise_id=2
+        } else if (url.contains("/#/placing-orders/") && url.contains("?merchandise_id=")) {//http://10.8.220.248:8080/#/placing-orders/6504256768225316864?merchandise_id=2
             closeListener.onClick(null);
             ViewUtil.showMsgDialog(SheepApp.getInstance().getCurrentActivity(), new DialogConfig().setMsg("你有一个拼单邀请,是否立即前往?")
-                .setBtnLeftText("取消").setBtnRightText("前往")
-                .setBtnRightOnClickListener(view -> Jump2View.getInstance().goWeb(SheepApp.getInstance().getCurrentActivity(), new WebParams(url).setTitle("爱奇艺VIP会员卡"))));
+                    .setBtnLeftText("取消").setBtnRightText("前往")
+                    .setBtnRightOnClickListener(view -> Jump2View.getInstance().goWeb(SheepApp.getInstance().getCurrentActivity(), new WebParams(url).setTitle("爱奇艺VIP会员卡"))));
             return true;
         }
         return false;

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

@@ -1093,6 +1093,14 @@ public class Jump2View {
         context.startActivity(intent);
     }
 
+    public void goRechargeResult(Context context, String resultStatus, String gowhere, String orderNO) {
+        Intent intent = new Intent(context, RechargeResultAct.class);
+        intent.putExtra("payCode", resultStatus);
+        intent.putExtra("gowhere", gowhere);
+        intent.putExtra("orderno", orderNO);
+        context.startActivity(intent);
+    }
+
     /**
      * 跳到充值页面
      *

+ 43 - 1
app/src/main/java/com/sheep/gamegroup/util/QQUtil.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.util;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -39,7 +40,9 @@ public class QQUtil {
                 activity.startActivity(intent);
             }
         }
-    }/**
+    }
+
+    /**
      * 判断 用户是否安装QQ客户端
      */
     public static boolean isQQClientAvailable(Context context) {
@@ -55,6 +58,7 @@ public class QQUtil {
         }
         return false;
     }
+
     /****************
      *
      * 发起添加群流程。群号:小绵羊(855240873) 的 key 为: MQ028cMTzecocoJapge1v-0tLWWGZpFG
@@ -85,4 +89,42 @@ public class QQUtil {
         List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
         return !activities.isEmpty();
     }
+
+    public static String getWxPayFrom(Context context, String prepayId) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        return sp.getString("prepay_" + prepayId, "");
+    }
+
+    public static void saveWxPayFrom(Context context, String prepayId, String from) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putString("prepay_" + prepayId, from);
+        editor.commit();
+    }
+
+    public static void removeWxPayFrom(Context context, String prepayId) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.remove("prepay_" + prepayId);
+        editor.commit();
+    }
+
+    public static String getWxPayOrderNo(Context context, String prepayId) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        return sp.getString("orderno_" + prepayId, "");
+    }
+
+    public static void saveWxPayOrderNo(Context context, String prepayId, String orderNo) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putString("orderno_" + prepayId, orderNo);
+        editor.commit();
+    }
+
+    public static void removeWxPayOrderNo(Context context, String prepayId) {
+        SharedPreferences sp = context.getSharedPreferences("wx_pay_order", Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.remove("orderno_" + prepayId);
+        editor.commit();
+    }
 }

+ 16 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/ActPay.java

@@ -13,6 +13,7 @@ import com.sheep.gamegroup.module.pay.activity.SheepWXPayEntryActivity;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Constant;
 import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.jiuyan.samllsheep.Config;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
@@ -20,8 +21,6 @@ import com.tencent.mm.opensdk.modelpay.PayResp;
 
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.Locale;
-
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -54,6 +53,7 @@ public class ActPay extends BaseActivity {
     private String token;
     private String order_no;
     private String pay_type;
+    private String from_package;
 
     @Override
     public void initView() {
@@ -67,6 +67,7 @@ public class ActPay extends BaseActivity {
         if (bundle != null) {
             order_no = bundle.getString("order_no");
             pay_type = bundle.getString("pay_type");
+            from_package = bundle.getString("from_package");
             token = bundle.getString("token");
             if (TextUtils.isEmpty(pay_type) || PAY_TYPE_COIN.equals(pay_type)) {
                 CommonUtil.getInstance().initUrlConfigByNet(Config.KEY_DIRECTIONAL_PAY_URL, url -> {
@@ -117,7 +118,12 @@ public class ActPay extends BaseActivity {
                     public void onNext(BaseMessage baseMessage) {
                         JSONObject jsonObject = baseMessage.getData(JSONObject.class);
                         SheepWXPayEntryActivity.close = true;
+                        if (!TextUtils.isEmpty(from_package)) {
+                            QQUtil.saveWxPayFrom(SheepApp.getInstance(), jsonObject.getString("prepayid"), from_package);
+                            QQUtil.saveWxPayOrderNo(SheepApp.getInstance(), jsonObject.getString("prepayid"), order_no);
+                        }
                         CommonUtil.getInstance().wxpay(SheepApp.getInstance().getWxApi(), jsonObject);
+                        finish();
                     }
                 });
     }
@@ -148,10 +154,14 @@ public class ActPay extends BaseActivity {
             } else {
                 status = STATUS_PAY_ORDER_ERROR;
             }
-            Intent intent = new Intent();
-            intent.putExtra(EXTRA_NAME_ORDERNO, order_no);
-            intent.putExtra(EXTRA_NAME_STATUS, status);
-            setResult(RESULT_CODE, intent);
+            if (TextUtils.isEmpty(from_package)) {
+                Intent intent = new Intent();
+                intent.putExtra(EXTRA_NAME_ORDERNO, order_no);
+                intent.putExtra(EXTRA_NAME_STATUS, status);
+                setResult(RESULT_CODE, intent);
+            } else {
+
+            }
             finish();
         }
     }

+ 25 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/RechargeResultAct.java

@@ -1,10 +1,13 @@
 package com.sheep.gamegroup.view.activity;
 
+import android.content.Intent;
+import android.net.Uri;
 import android.text.TextUtils;
 import android.widget.TextView;
 
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.DrawablesHelper;
+import com.sheep.gamegroup.util.QQUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
@@ -24,6 +27,8 @@ public class RechargeResultAct extends BaseActivity {
     @BindView(R.id.tv_recharge_result_pay)
     TextView tvRechargeResultPay;
 
+    private String gowhere, orderno, resultStatus;
+
     @Override
     protected int getLayoutId() {
         return R.layout.recharge_result_act_layout;
@@ -31,7 +36,7 @@ public class RechargeResultAct extends BaseActivity {
 
     @Override
     public void initView() {
-        String resultStatus = getIntent().getStringExtra("payCode");
+        resultStatus = getIntent().getStringExtra("payCode");
         if (TextUtils.equals(resultStatus, "9000")) {
             TitleBarUtils.getInstance()
                     .setTitle(this, "交易成功")
@@ -44,6 +49,12 @@ public class RechargeResultAct extends BaseActivity {
             tvRechargeResultState.setText("交易失败");
             new DrawablesHelper(tvRechargeResultState).direction(DrawablesHelper.LEFT).drawable(R.mipmap.delete_x_red_img).commit();
         }
+        if (getIntent().hasExtra("gowhere")) {
+            gowhere = getIntent().getStringExtra("gowhere");
+        }
+        if (getIntent().hasExtra("orderno")) {
+            orderno = getIntent().getStringExtra("orderno");
+        }
     }
 
     @Override
@@ -61,4 +72,17 @@ public class RechargeResultAct extends BaseActivity {
     public void onViewClicked() {
         finish();
     }
+
+    @Override
+    public void finish() {
+        if (!TextUtils.isEmpty(gowhere)) {
+            Uri uri = Uri.parse("sheepsdk://" + gowhere);
+            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+            intent.putExtra("orderno", orderno);
+            intent.putExtra("status", resultStatus);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+            startActivity(intent);
+        }
+        super.finish();
+    }
 }

+ 3 - 0
package-lock.json

@@ -0,0 +1,3 @@
+{
+  "lockfileVersion": 1
+}