hanjing hace 7 años
padre
commit
a37256b122

+ 7 - 3
app/build.gradle

@@ -181,6 +181,7 @@ dependencies {
     //    implementation 'com.liulishuo.filedownloader:library:1.6.9'
     implementation 'com.tencent.bugly:crashreport_upgrade:1.3.5'
     implementation(name: 'alipaySdk-15.5.9', ext: 'aar')
+
     //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
     implementation 'com.tencent.bugly:nativecrashreport:3.3.1'
 
@@ -447,7 +448,8 @@ dependencies {
     //    implementation 'com.github.yangjie10930:EpMedia:v0.9.5'
 
     //webView 缓存优化初始化 https://github.com/yale8848/CacheWebView
-//    implementation 'ren.yale.android:cachewebviewlib:2.1.4'
+
+    //    implementation 'ren.yale.android:cachewebviewlib:2.1.4'
     implementation(name: 'cachewebviewlib-2.1.8', ext: 'aar')
 
     //GSYVideoPlayer https://github.com/CarGuo/GSYVideoPlayer
@@ -461,7 +463,8 @@ dependencies {
     implementation 'androidx.annotation:annotation:1.0.1'
 
     //鸿途信达 广告sdk
-//    implementation(name: 'ad-htxd-201901071720', ext: 'aar')
+
+    //    implementation(name: 'ad-htxd-201901071720', ext: 'aar')
 
     //切换皮肤框架 https://github.com/ximsfei/Android-skin-support
 
@@ -487,9 +490,10 @@ dependencies {
 
     // skin-support-constraint-layout ConstraintLayout 控件支持[可选]
     implementation 'com.r0adkll:slidableactivity:2.0.6'
-
     implementation project(':shortcut_lib')
     implementation 'com.github.ly-android:PermissionUtils:1.0.3'
+    implementation files('libs/ipaynow_base_2.1.9_api1.0.0.jar')
+    implementation files('libs/ipaynow_wechatpay_v2.0.5.jar')
 }
 
 static def releaseTime() {

BIN
app/libs/ipaynow_base_2.1.9_api1.0.0.jar


BIN
app/libs/ipaynow_wechatpay_v2.0.5.jar


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

@@ -133,10 +133,21 @@
             android:name="org.apache.http.legacy"
             android:required="false" />
 
+        <!--<activity-->
+            <!--android:name=".wxapi.WXEntryActivity"-->
+            <!--android:exported="true"-->
+            <!--android:launchMode="singleTop" />-->
         <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.WXEntryActivity"
             android:exported="true"
-            android:launchMode="singleTop" />
+            android:targetActivity="com.ipaynow.plugin.inner_plugin.miniprogram.activity.MiniProgramPayActivity" />
         <activity
             android:name=".wxapi.WXPayEntryActivity"
             android:exported="true"
@@ -1018,6 +1029,12 @@
         <service
             android:name=".service.PushMessageService"
             android:exported="false"></service>
+
+        <activity
+            android:name="com.ipaynow.plugin.presenter.PayMethodActivity"
+            android:configChanges="keyboardHidden|navigation|orientation|screenSize"
+            android:exported="false"
+            android:theme="@android:style/Theme.Dialog" />
     </application>
 
 </manifest>

+ 1 - 0
app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java

@@ -50,6 +50,7 @@ public class NetModule {
         Retrofit retrofit = new Retrofit.Builder()
                 .client(okhttpClient)
                 .baseUrl(SheepApp.getInstance().getConnectAddress().getAppUrl()+"v1/")
+//                .baseUrl("http://10.8.240.155:8080/v1/")
                 .addConverterFactory(StringConverterFactory.create())
                 .addConverterFactory(FastJsonConverterFactory.create())
 //                .addConverterFactory(GsonConverterFactory.create(EntityUtils.gson))//

+ 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;
+    }
+
 }

+ 9 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -548,6 +548,15 @@ public interface ApiService {
     Observable<BaseMessage> getPayWxParams(@Query("order_no") String orderNo);
 
     /**
+     * 获取下发充值类型
+     *
+     * @param orderNo
+     * @return
+     */
+    @POST("app/sdk/pay/ipaynow")
+    Observable<BaseMessage> getPayIpaynowParams(@Query("order_no") String orderNo);
+
+    /**
      * 充值
      *
      * @param jsonObject

+ 93 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActPay.java

@@ -3,8 +3,12 @@ package com.sheep.gamegroup.view.activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ipaynow.plugin.api.IpaynowPlugin;
+import com.ipaynow.plugin.manager.route.dto.ResponseParams;
+import com.ipaynow.plugin.manager.route.impl.ReceivePayResult;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.WebParams;
@@ -33,6 +37,7 @@ public class ActPay extends BaseActivity {
     private final static String PAY_TYPE_WX = "wx";
     private final static String PAY_TYPE_ALI = "ali";
     private final static String PAY_TYPE_COIN = "coin";
+    private final static String PAY_TYPE_MINI = "mini";
 
     @Override
     protected boolean needButterKnife() {
@@ -55,6 +60,18 @@ public class ActPay extends BaseActivity {
     private String from_package;
 
     @Override
+    protected void onCreate(Bundle b) {
+        super.onCreate(b);
+        IpaynowPlugin.getInstance().init(this);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        IpaynowPlugin.getInstance().onActivityDestroy();
+    }
+
+    @Override
     public void initView() {
 
     }
@@ -91,8 +108,25 @@ public class ActPay extends BaseActivity {
                                 tryWxOrder();
                             }
                         });
-            } else if (PAY_TYPE_ALI.equals(pay_type)) {
+            } 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();
+                            }
+                        });
             }
         }
     }
@@ -124,6 +158,64 @@ public class ActPay extends BaseActivity {
                 });
     }
 
+    public void tryMiniOrder() {
+        SheepApp.getInstance().getNetComponent().getApiService().getPayIpaynowParams(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) {
+                        launchMini(baseMessage.getData().toString());
+                    }
+                });
+    }
+
+    private void launchMini(String payInfo){
+        Log.i("ActPay","启动小程序支付");
+        IpaynowPlugin.getInstance()
+                .setMiniProgramEnv(0)
+                .setCustomLoading(IpaynowPlugin.getInstance().getDefaultLoading())
+                .setCallResultReceiver(new ReceivePayResult() {
+                    @Override
+                    public void onIpaynowTransResult(ResponseParams resp) {
+                        StringBuilder temp = new StringBuilder();
+                        if (resp.respCode.equals("00")) {
+                            temp.append("交易状态:成功");
+                        } else if (resp.respCode.equals("02")) {
+                            temp.append("交易状态:取消");
+                        } else if (resp.respCode.equals("01")) {
+                            temp.append("交易状态:失败").append("\n").append("错误码:").append(resp.errorCode).append("原因:" + resp.respMsg);
+                        } else if (resp.respCode.equals("03")) {
+                            temp.append("交易状态:未知").append("\n").append("原因:" + resp.respMsg);
+                        } else {
+                            temp.append("respCode=").append(resp.respCode).append("\n").append("respMsg=").append(resp.respMsg);
+                        }
+//                        Toast.makeText(RechargeAct.this, "onIpaynowTransResult:" + temp.toString(), Toast.LENGTH_LONG).show();
+                        Log.e("PayRet", temp.toString());
+                        if (resp.respCode.equals("00")) {
+                            status = STATUS_PAY_ORDER_SUCCESS;
+                        } 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);
+                        finish();
+                    }
+                })
+                .pay(payInfo);
+    }
+
     public void onActivityResult(int requestCode, int resultCode, Intent in) {
         if (resultCode == RESULT_OK) {
             if (requestCode == Constant.INTENT_PAY) {

+ 66 - 7
app/src/main/java/com/sheep/gamegroup/view/activity/RechargeAct.java

@@ -2,16 +2,22 @@ package com.sheep.gamegroup.view.activity;
 
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.alibaba.fastjson.JSONObject;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
+import com.ipaynow.plugin.api.IpaynowPlugin;
+import com.ipaynow.plugin.manager.route.dto.ResponseParams;
+import com.ipaynow.plugin.manager.route.impl.ReceivePayResult;
 import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
@@ -68,6 +74,18 @@ public class RechargeAct extends BaseActivity {
     private boolean forResult = false;
 
     @Override
+    protected void onCreate(Bundle b) {
+        super.onCreate(b);
+        IpaynowPlugin.getInstance().init(this);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        IpaynowPlugin.getInstance().onActivityDestroy();
+    }
+
+    @Override
     protected int getLayoutId() {
         return R.layout.recharge_act_layout;
     }
@@ -115,7 +133,7 @@ public class RechargeAct extends BaseActivity {
         /*
           支付方式选择
          */
-        BaseQuickAdapter<RechargeEntity, BaseViewHolder> rechargeAdapter = new BaseQuickAdapter<RechargeEntity, BaseViewHolder>(R.layout.recharge_gridview_item, rechargeEntityList){
+        BaseQuickAdapter<RechargeEntity, BaseViewHolder> rechargeAdapter = new BaseQuickAdapter<RechargeEntity, BaseViewHolder>(R.layout.recharge_gridview_item, rechargeEntityList) {
 
             @Override
             protected void convert(BaseViewHolder helper, RechargeEntity item) {
@@ -125,12 +143,12 @@ public class RechargeAct extends BaseActivity {
 
                 ViewUtil.setText(tv_pay, item.getName());
                 Context context = SheepApp.getInstance();
-                if (position == payTypePosition){
+                if (position == payTypePosition) {
                     tv_pay.setBackground(context.getResources().getDrawable(R.drawable.layer_list_check_rectgangle_small));
-                    tv_pay.setTextColor(ContextCompat.getColor(context,R.color.main_tab_activated));
-                }else{
+                    tv_pay.setTextColor(ContextCompat.getColor(context, R.color.main_tab_activated));
+                } else {
                     tv_pay.setBackground(context.getResources().getDrawable(R.drawable.btn_main_stroke_no_check_small));
-                    tv_pay.setTextColor(ContextCompat.getColor(context,R.color.main_tab));
+                    tv_pay.setTextColor(ContextCompat.getColor(context, R.color.main_tab));
 
                 }
                 //这里点击
@@ -149,6 +167,7 @@ public class RechargeAct extends BaseActivity {
     }
 
     private List<RechargeEntity> rechargeEntityList = new ArrayList<>();
+
     private void getRechargePayway() {
         // 参数 1:没有绵羊币的,2:是全部
         SheepApp.getInstance().getNetComponent().getApiService().getRechargePayway("1")
@@ -188,13 +207,16 @@ public class RechargeAct extends BaseActivity {
                     public void onNext(BaseMessage baseMessage) {
                         hideProgress();
                         String payInfo = baseMessage.getData().toString();
-                        switch (mPayType){
+                        switch (mPayType) {
                             case 1:
                                 tryAliPay(payInfo);
                                 break;
                             case 2:
                                 tryWxPay(baseMessage);
                                 break;
+                            case 4:
+                                tryIpaynow(payInfo);
+                                break;
                         }
                     }
 
@@ -206,10 +228,47 @@ public class RechargeAct extends BaseActivity {
                 });
     }
 
+    private void tryIpaynow(String payInfo) {
+        IpaynowPlugin.getInstance().getDefaultLoading().setLoadingMsg("正在生成订单");
+        IpaynowPlugin.getInstance().getDefaultLoading().show();
+        IpaynowPlugin.getInstance()
+                .setMiniProgramEnv(0)
+                .setCustomLoading(IpaynowPlugin.getInstance().getDefaultLoading())
+                .setCallResultReceiver(new ReceivePayResult() {
+                    @Override
+                    public void onIpaynowTransResult(ResponseParams resp) {
+                        StringBuilder temp = new StringBuilder();
+                        if (resp.respCode.equals("00")) {
+                            temp.append("交易状态:成功");
+                        } else if (resp.respCode.equals("02")) {
+                            temp.append("交易状态:取消");
+                        } else if (resp.respCode.equals("01")) {
+                            temp.append("交易状态:失败").append("\n").append("错误码:").append(resp.errorCode).append("原因:" + resp.respMsg);
+                        } else if (resp.respCode.equals("03")) {
+                            temp.append("交易状态:未知").append("\n").append("原因:" + resp.respMsg);
+                        } else {
+                            temp.append("respCode=").append(resp.respCode).append("\n").append("respMsg=").append(resp.respMsg);
+                        }
+//                        Toast.makeText(RechargeAct.this, "onIpaynowTransResult:" + temp.toString(), Toast.LENGTH_LONG).show();
+                        Log.e("PayRet", temp.toString());
+                        if (forResult && resp.respCode.equals("00")) {
+                            Intent intent = new Intent();
+                            intent.putExtra("amount", Integer.parseInt(mAmount));
+                            setResult(777, intent);
+                        } else {
+                            String result = resp.respCode.equals("00") ? "9000" : resp.respCode;
+                            Jump2View.getInstance().goRechargeResultAct(RechargeAct.this, result);
+                        }
+                        finish();
+                    }
+                })
+                .pay(payInfo);
+    }
+
     private void tryWxPay(BaseMessage baseMessage) {
         JSONObject jsonObject = baseMessage.getData(JSONObject.class);
         LogUtil.println("RechargeAct", "wxpay", baseMessage.getData());
-        if(jsonObject == null){
+        if (jsonObject == null) {
             G.showToast(R.string.please_contact_customer_service);
             return;
         }

BIN
app/src/main/libs/arm64-v8a/libplugin_phone.so


BIN
app/src/main/libs/armeabi-v7a/libplugin_phone.so


BIN
app/src/main/libs/armeabi/libplugin_phone.so


BIN
app/src/main/libs/mips/libplugin_phone.so


BIN
app/src/main/libs/mips64/libplugin_phone.so


BIN
app/src/main/libs/x86/libplugin_phone.so


BIN
app/src/main/libs/x86_64/libplugin_phone.so