Browse Source

修改webView相关支付

Pq 3 years ago
parent
commit
dfe4cbac4b

+ 9 - 0
BaseLibrary/src/main/java/com/cooleshow/base/bean/WxPayResult.java

@@ -0,0 +1,9 @@
+package com.cooleshow.base.bean;
+
+/**
+ * Author by pq, Date on 2022/6/28.
+ */
+public class WxPayResult {
+    public int resultCode;
+    public String resultMsg;
+}

+ 6 - 1
BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java

@@ -12,5 +12,10 @@ public class Constants {
     public static final String COLEXIUAPPA = "COLEXIUAPPA";//H5 js接口注册interfaceName
     public static final String COLEXIUAPPA = "COLEXIUAPPA";//H5 js接口注册interfaceName
     public static final int DEFAULT_DATA_SIZE = 10;//加载更多默认一页请求数据
     public static final int DEFAULT_DATA_SIZE = 10;//加载更多默认一页请求数据
     public static final String WHITE_BOARD_ORIENTATION = "WHITE_BOARD_ORIENTATION";
     public static final String WHITE_BOARD_ORIENTATION = "WHITE_BOARD_ORIENTATION";
-    public  static  String HEADSET_PLUE_TAG = "";
+    public static String HEADSET_PLUE_TAG = "";
+
+    public static final int PAY_SUCCESS =1;//支付成功
+    public static final int PAY_ERROR_BY_NOT_INSTALL =2;//支付失败,未安装
+    public static final int PAY_ERROR =3;//支付失败
+    public static final int PAY_CANCEL =4;//支付取消
 }
 }

+ 40 - 18
student/src/main/java/com/cooleshow/student/ui/main/MallFragment.java

@@ -42,7 +42,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 
 
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
@@ -168,7 +170,7 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
     private String authorization;
     private String authorization;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
-        private ShareAction mShareAction;
+    private ShareAction mShareAction;
     int ivActionIcon = -1;
     int ivActionIcon = -1;
     int startType = -1;
     int startType = -1;
 
 
@@ -549,19 +551,19 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
     }
     }
 
 
     @Override
     @Override
-    public void savePicture(String base64,String uuid) {
+    public void savePicture(String base64, String uuid) {
 
 
     }
     }
 
 
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
@@ -584,15 +586,12 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
                     // 判断resultStatus 为9000则代表支付成功
                     // 判断resultStatus 为9000则代表支付成功
                     if (TextUtils.equals(resultStatus, "9000")) {
                     if (TextUtils.equals(resultStatus, "9000")) {
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
-//                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -600,18 +599,15 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
                     @SuppressWarnings("unchecked")
                     @SuppressWarnings("unchecked")
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     String resultStatus = authResult.getResultStatus();
                     String resultStatus = authResult.getResultStatus();
-
                     // 判断resultStatus 为“9000”且result_code
                     // 判断resultStatus 为“9000”且result_code
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1107,4 +1103,30 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
         }
         }
     }
     }
 
 
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 166 - 143
student/src/main/java/com/cooleshow/student/ui/web/AccompanyFragment.java

@@ -34,6 +34,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
@@ -353,39 +354,39 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         msg = message;
         msg = message;
         if (webSocketClient == null) {
         if (webSocketClient == null) {
             Observable.create(new ObservableOnSubscribe<String>() {
             Observable.create(new ObservableOnSubscribe<String>() {
+                @Override
+                public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Exception {
+                    Map<String, String> httpHeaders = new HashMap<String, String>();
+                    httpHeaders.put("Authorization", UserHelper.getUserToken());
+                    webSocketClient = new JWebSocketClient(webSocketUri, httpHeaders) {
                         @Override
                         @Override
-                        public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Exception {
-                            Map<String, String> httpHeaders = new HashMap<String, String>();
-                            httpHeaders.put("Authorization", UserHelper.getUserToken());
-                            webSocketClient = new JWebSocketClient(webSocketUri, httpHeaders) {
-                                @Override
-                                public void onMessage(String message) {
-                                    emitter.onNext(message);
-                                }
+                        public void onMessage(String message) {
+                            emitter.onNext(message);
+                        }
 
 
-                                @Override
-                                public void onError(Exception ex) {
-                                    super.onError(ex);
-                                    emitter.onNext("-2");
-                                }
+                        @Override
+                        public void onError(Exception ex) {
+                            super.onError(ex);
+                            emitter.onNext("-2");
+                        }
 
 
-                                @Override
-                                public void onOpen(ServerHandshake handshakedata) {
-                                    super.onOpen(handshakedata);
-                                    emitter.onNext("-1");
+                        @Override
+                        public void onOpen(ServerHandshake handshakedata) {
+                            super.onOpen(handshakedata);
+                            emitter.onNext("-1");
 
 
-                                }
+                        }
 
 
-                                @Override
-                                public void onClose(int code, String reason, boolean remote) {
-                                    super.onClose(code, reason, remote);
-                                    emitter.onNext("-2");
-                                }
-                            };
-                            webSocketClient.setConnectionLostTimeout(60 * 1000);
-                            webSocketClient.connect();
+                        @Override
+                        public void onClose(int code, String reason, boolean remote) {
+                            super.onClose(code, reason, remote);
+                            emitter.onNext("-2");
                         }
                         }
-                    }).subscribeOn(Schedulers.newThread())
+                    };
+                    webSocketClient.setConnectionLostTimeout(60 * 1000);
+                    webSocketClient.connect();
+                }
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -559,29 +560,29 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
             wavRecorder.startRecording(getContext());
             wavRecorder.startRecording(getContext());
         } else {
         } else {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
-                        wavRecorder = MsRecorder.wav(
-                                new File(getVoicePath()),
-                                new AudioRecordConfig(),
-                                // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
-                                new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
-                                    @Override
-                                    public void onAudioChunkPulled(AudioChunk audioChunk) {
-                                        if (webSocketClient != null && webSocketClient.isOpen()) {
-                                            webSocketClient.send(audioChunk.toBytes());
-                                            if (isSendRecordStartTime) {
-                                                isSendRecordStartTime = false;
-                                                emitter.onNext("-2");
-                                            }
-                                        } else {
-                                            emitter.onNext("-1");
-                                        }
+                wavRecorder = MsRecorder.wav(
+                        new File(getVoicePath()),
+                        new AudioRecordConfig(),
+                        // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
+                        new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
+                            @Override
+                            public void onAudioChunkPulled(AudioChunk audioChunk) {
+                                if (webSocketClient != null && webSocketClient.isOpen()) {
+                                    webSocketClient.send(audioChunk.toBytes());
+                                    if (isSendRecordStartTime) {
+                                        isSendRecordStartTime = false;
+                                        emitter.onNext("-2");
                                     }
                                     }
-                                }));
-                        if (wavRecorder != null) {
-                            wavRecorder.startRecording(getContext());
-                        }
-                        emitter.onNext("1");
-                    }).subscribeOn(Schedulers.newThread())
+                                } else {
+                                    emitter.onNext("-1");
+                                }
+                            }
+                        }));
+                if (wavRecorder != null) {
+                    wavRecorder.startRecording(getContext());
+                }
+                emitter.onNext("1");
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -732,29 +733,29 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
             wavRecorder.startRecording(getContext());
             wavRecorder.startRecording(getContext());
         } else {
         } else {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
-                        wavRecorder = MsRecorder.wav(
-                                new File(getVoicePath()),
-                                new AudioRecordConfig(),
-                                // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
-                                new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
-                                    @Override
-                                    public void onAudioChunkPulled(AudioChunk audioChunk) {
-                                        if (webSocketClient != null && webSocketClient.isOpen()) {
-                                            webSocketClient.send(audioChunk.toBytes());
-                                            if (isSoundCheckStartTime) {
-                                                isSoundCheckStartTime = false;
-                                                emitter.onNext("-2");
-                                            }
-                                        } else {
-                                            emitter.onNext("-1");
-                                        }
+                wavRecorder = MsRecorder.wav(
+                        new File(getVoicePath()),
+                        new AudioRecordConfig(),
+                        // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
+                        new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
+                            @Override
+                            public void onAudioChunkPulled(AudioChunk audioChunk) {
+                                if (webSocketClient != null && webSocketClient.isOpen()) {
+                                    webSocketClient.send(audioChunk.toBytes());
+                                    if (isSoundCheckStartTime) {
+                                        isSoundCheckStartTime = false;
+                                        emitter.onNext("-2");
                                     }
                                     }
-                                }));
-                        if (wavRecorder != null) {
-                            wavRecorder.startRecording(getContext());
-                        }
-                        emitter.onNext("1");
-                    }).subscribeOn(Schedulers.newThread())
+                                } else {
+                                    emitter.onNext("-1");
+                                }
+                            }
+                        }));
+                if (wavRecorder != null) {
+                    wavRecorder.startRecording(getContext());
+                }
+                emitter.onNext("1");
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -1333,7 +1334,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 String videoUrl = content.getString("video");
                 String videoUrl = content.getString("video");
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
-                                SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
+                        SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
@@ -1351,7 +1352,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 String imageBase64 = content.getString("image");
                 String imageBase64 = content.getString("image");
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
-                                SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
+                        SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
@@ -1841,23 +1842,22 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     }
     }
 
 
     @Override
     @Override
-    public void savePicture(String base64,String uuid) {
+    public void savePicture(String base64, String uuid) {
 
 
     }
     }
 
 
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
-
     }
     }
 
 
     @SuppressLint("HandlerLeak")
     @SuppressLint("HandlerLeak")
@@ -1878,13 +1878,11 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
 //                        isAlipayOk = true;
 //                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1898,12 +1896,10 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -2003,61 +1999,61 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         //弹出预备拍
         //弹出预备拍
         preCountDialog = CommonDialog.init().setLayoutId(com.cooleshow.base.R.layout.dialog_student_precount);
         preCountDialog = CommonDialog.init().setLayoutId(com.cooleshow.base.R.layout.dialog_student_precount);
         preCountDialog.setConvertListener(new ViewConvertListener() {
         preCountDialog.setConvertListener(new ViewConvertListener() {
-                    @Override
-                    public void convertView(ViewHolder holder, BaseDialog dialog) {
-                        if (count == 2) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv3.setVisibility(View.INVISIBLE);
-                            iv4.setVisibility(View.INVISIBLE);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        } else if (count == 3) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv4.setVisibility(View.INVISIBLE);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        } else if (count == 4) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        }
-                        iv1.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv2.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv3.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv4.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv5.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv6.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        ImageView iv_dialog_student_precount = holder.getView(com.cooleshow.base.R.id.iv_dialog_student_precount);
-                        iv_dialog_student_precount.setOnClickListener(v -> {
-                            dialog.dismiss();
-                            if (soundpool != null) {
-                                soundpool.release();
-                                soundpool = null;
-                            }
-                            try {
-                                message.optJSONObject("content").put("status", "cancel");
-                            } catch (JSONException e) {
-                                e.printStackTrace();
-                            }
-                            onSendMessage(message.toString());
-                        });
+            @Override
+            public void convertView(ViewHolder holder, BaseDialog dialog) {
+                if (count == 2) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv3.setVisibility(View.INVISIBLE);
+                    iv4.setVisibility(View.INVISIBLE);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                } else if (count == 3) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv4.setVisibility(View.INVISIBLE);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                } else if (count == 4) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                }
+                iv1.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv2.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv3.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv4.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv5.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv6.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                ImageView iv_dialog_student_precount = holder.getView(com.cooleshow.base.R.id.iv_dialog_student_precount);
+                iv_dialog_student_precount.setOnClickListener(v -> {
+                    dialog.dismiss();
+                    if (soundpool != null) {
+                        soundpool.release();
+                        soundpool = null;
+                    }
+                    try {
+                        message.optJSONObject("content").put("status", "cancel");
+                    } catch (JSONException e) {
+                        e.printStackTrace();
                     }
                     }
-                })
+                    onSendMessage(message.toString());
+                });
+            }
+        })
                 .setDimAmount(0.6f)
                 .setDimAmount(0.6f)
                 .setOutCancel(true)
                 .setOutCancel(true)
                 .setGravity(Gravity.CENTER)
                 .setGravity(Gravity.CENTER)
@@ -2143,4 +2139,31 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         }
         }
 
 
     }
     }
+
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 39 - 17
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -43,8 +43,10 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
@@ -165,7 +167,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     private String authorization;
     private String authorization;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
-        private ShareAction mShareAction;
+    private ShareAction mShareAction;
     int ivActionIcon = -1;
     int ivActionIcon = -1;
     int startType = -1;
     int startType = -1;
 
 
@@ -579,7 +581,7 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     }
     }
 
 
     @Override
     @Override
-    public void savePicture(String base64,String uuid) {
+    public void savePicture(String base64, String uuid) {
         Bitmap bitmap = FileUtils.base64ToBitmap(base64);
         Bitmap bitmap = FileUtils.base64ToBitmap(base64);
         if (SavePicUtil.saveBitmap(BaseApplication.Companion.getContext(), bitmap, System.currentTimeMillis() + "")) {
         if (SavePicUtil.saveBitmap(BaseApplication.Companion.getContext(), bitmap, System.currentTimeMillis() + "")) {
             ToastUtils.showShort("保存成功");
             ToastUtils.showShort("保存成功");
@@ -601,12 +603,12 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
@@ -630,15 +632,12 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                     // 判断resultStatus 为9000则代表支付成功
                     // 判断resultStatus 为9000则代表支付成功
                     if (TextUtils.equals(resultStatus, "9000")) {
                     if (TextUtils.equals(resultStatus, "9000")) {
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
-//                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
                         ToastUtils.showShort("支付失败" + resultStatus);
                         ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -646,18 +645,15 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                     @SuppressWarnings("unchecked")
                     @SuppressWarnings("unchecked")
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     String resultStatus = authResult.getResultStatus();
                     String resultStatus = authResult.getResultStatus();
-
                     // 判断resultStatus 为“9000”且result_code
                     // 判断resultStatus 为“9000”且result_code
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1271,6 +1267,32 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         }
         }
     }
     }
 
 
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 
 
 }
 }
 
 

+ 44 - 23
student/src/main/java/com/cooleshow/student/ui/web/HtmlHorizontalScreenActivity.java

@@ -43,7 +43,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
@@ -134,6 +136,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     ProgressBar progressBar;
     ProgressBar progressBar;
     RelativeLayout rl_activity_html;
     RelativeLayout rl_activity_html;
     LinearLayout ll_activity_html;
     LinearLayout ll_activity_html;
+
     @Override
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
@@ -169,7 +172,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     private String authorization;
     private String authorization;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int PORTRAIT_REQUEST_CODE = 1002;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
     private final int ADD_ACCOMPANIMENT_CODE = 1003;
-        private ShareAction mShareAction;
+    private ShareAction mShareAction;
     int ivActionIcon = -1;
     int ivActionIcon = -1;
     int startType = -1;
     int startType = -1;
 
 
@@ -536,7 +539,6 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     }
     }
 
 
 
 
-
     public void selectAddress(String addressJson) {
     public void selectAddress(String addressJson) {
         onSendMessage("'getAddress'," + addressJson);
         onSendMessage("'getAddress'," + addressJson);
     }
     }
@@ -584,23 +586,22 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     }
     }
 
 
     @Override
     @Override
-    public void savePicture(String base64,String uuid) {
+    public void savePicture(String base64, String uuid) {
 
 
     }
     }
 
 
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
-
     }
     }
 
 
 
 
@@ -622,13 +623,11 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
 //                        isAlipayOk = true;
 //                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -636,18 +635,15 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                     @SuppressWarnings("unchecked")
                     @SuppressWarnings("unchecked")
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     String resultStatus = authResult.getResultStatus();
                     String resultStatus = authResult.getResultStatus();
-
                     // 判断resultStatus 为“9000”且result_code
                     // 判断resultStatus 为“9000”且result_code
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1025,7 +1021,7 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
             } catch (JSONException e) {
             } catch (JSONException e) {
                 e.printStackTrace();
                 e.printStackTrace();
             }
             }
-        }else if (requestCode == 1000) {
+        } else if (requestCode == 1000) {
             if (data != null) {
             if (data != null) {
                 try {
                 try {
                     String filePath = data.getStringExtra("filePath");
                     String filePath = data.getStringExtra("filePath");
@@ -1095,13 +1091,13 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                     ToastUtils.showShort("文件损坏或不存在,请重新选择");
                     ToastUtils.showShort("文件损坏或不存在,请重新选择");
                     upLoadFileFaile();
                     upLoadFileFaile();
                 }
                 }
-            }else{
+            } else {
                 ToastUtils.showShort("上传失败,请重新选择");
                 ToastUtils.showShort("上传失败,请重新选择");
                 upLoadFileFaile();
                 upLoadFileFaile();
             }
             }
 //            clearUploadMessage();
 //            clearUploadMessage();
             return;
             return;
-        }else if (requestCode == 1011) {
+        } else if (requestCode == 1011) {
             String selectAddress = data.getStringExtra("selectAddress");
             String selectAddress = data.getStringExtra("selectAddress");
             selectAddress(selectAddress);
             selectAddress(selectAddress);
         }
         }
@@ -1263,5 +1259,30 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         }
         }
     }
     }
 
 
-
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 4 - 0
student/src/main/java/com/cooleshow/student/wxapi/WXPayEntryActivity.java

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.util.Log;
 import android.util.Log;
 
 
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.student.R;
 import com.cooleshow.student.R;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
@@ -47,6 +48,9 @@ public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
         Log.d("TAG", "onPayFinish, errCode = " + resp.errCode);
         Log.d("TAG", "onPayFinish, errCode = " + resp.errCode);
 
 
         if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
         if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
+            WxPayResult payResult = new WxPayResult();
+            payResult.resultCode = resp.errCode;
+            EventBus.getDefault().post(payResult);
             if (resp.errCode == 0) {
             if (resp.errCode == 0) {
                 //成功
                 //成功
                 ToastUtils.showShort("支付成功");
                 ToastUtils.showShort("支付成功");

+ 1 - 1
student/src/main/res/layout/activity_about.xml

@@ -57,7 +57,7 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="88dp"
             android:layout_marginTop="88dp"
             android:layout_marginRight="12dp"
             android:layout_marginRight="12dp"
-            android:text="027-87718176"
+            android:text="4008851569"
             android:textColor="@color/color_999999"
             android:textColor="@color/color_999999"
             android:textSize="@dimen/sp_17"
             android:textSize="@dimen/sp_17"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintRight_toRightOf="parent"

+ 38 - 16
teacher/src/main/java/com/cooleshow/teacher/ui/main/MallFragment.java

@@ -40,7 +40,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 
 
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.PermissionUtils;
@@ -551,12 +553,12 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
@@ -579,15 +581,12 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
                     // 判断resultStatus 为9000则代表支付成功
                     // 判断resultStatus 为9000则代表支付成功
                     if (TextUtils.equals(resultStatus, "9000")) {
                     if (TextUtils.equals(resultStatus, "9000")) {
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
-//                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -595,18 +594,15 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
                     @SuppressWarnings("unchecked")
                     @SuppressWarnings("unchecked")
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                     String resultStatus = authResult.getResultStatus();
                     String resultStatus = authResult.getResultStatus();
-
                     // 判断resultStatus 为“9000”且result_code
                     // 判断resultStatus 为“9000”且result_code
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1103,4 +1099,30 @@ public class MallFragment extends BaseMVPFragment<FragmentMallBinding, ShopMallP
         }
         }
     }
     }
 
 
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 165 - 141
teacher/src/main/java/com/cooleshow/teacher/ui/web/AccompanyFragment.java

@@ -34,6 +34,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
@@ -358,39 +359,39 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         msg = message;
         msg = message;
         if (webSocketClient == null) {
         if (webSocketClient == null) {
             Observable.create(new ObservableOnSubscribe<String>() {
             Observable.create(new ObservableOnSubscribe<String>() {
+                @Override
+                public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Exception {
+                    Map<String, String> httpHeaders = new HashMap<String, String>();
+                    httpHeaders.put("Authorization", UserHelper.getUserToken());
+                    webSocketClient = new JWebSocketClient(webSocketUri, httpHeaders) {
                         @Override
                         @Override
-                        public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Exception {
-                            Map<String, String> httpHeaders = new HashMap<String, String>();
-                            httpHeaders.put("Authorization", UserHelper.getUserToken());
-                            webSocketClient = new JWebSocketClient(webSocketUri, httpHeaders) {
-                                @Override
-                                public void onMessage(String message) {
-                                    emitter.onNext(message);
-                                }
+                        public void onMessage(String message) {
+                            emitter.onNext(message);
+                        }
 
 
-                                @Override
-                                public void onError(Exception ex) {
-                                    super.onError(ex);
-                                    emitter.onNext("-2");
-                                }
+                        @Override
+                        public void onError(Exception ex) {
+                            super.onError(ex);
+                            emitter.onNext("-2");
+                        }
 
 
-                                @Override
-                                public void onOpen(ServerHandshake handshakedata) {
-                                    super.onOpen(handshakedata);
-                                    emitter.onNext("-1");
+                        @Override
+                        public void onOpen(ServerHandshake handshakedata) {
+                            super.onOpen(handshakedata);
+                            emitter.onNext("-1");
 
 
-                                }
+                        }
 
 
-                                @Override
-                                public void onClose(int code, String reason, boolean remote) {
-                                    super.onClose(code, reason, remote);
-                                    emitter.onNext("-2");
-                                }
-                            };
-                            webSocketClient.setConnectionLostTimeout(60 * 1000);
-                            webSocketClient.connect();
+                        @Override
+                        public void onClose(int code, String reason, boolean remote) {
+                            super.onClose(code, reason, remote);
+                            emitter.onNext("-2");
                         }
                         }
-                    }).subscribeOn(Schedulers.newThread())
+                    };
+                    webSocketClient.setConnectionLostTimeout(60 * 1000);
+                    webSocketClient.connect();
+                }
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -564,29 +565,29 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
             wavRecorder.startRecording(getContext());
             wavRecorder.startRecording(getContext());
         } else {
         } else {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
-                        wavRecorder = MsRecorder.wav(
-                                new File(getVoicePath()),
-                                new AudioRecordConfig(),
-                                // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
-                                new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
-                                    @Override
-                                    public void onAudioChunkPulled(AudioChunk audioChunk) {
-                                        if (webSocketClient != null && webSocketClient.isOpen()) {
-                                            webSocketClient.send(audioChunk.toBytes());
-                                            if (isSendRecordStartTime) {
-                                                isSendRecordStartTime = false;
-                                                emitter.onNext("-2");
-                                            }
-                                        } else {
-                                            emitter.onNext("-1");
-                                        }
+                wavRecorder = MsRecorder.wav(
+                        new File(getVoicePath()),
+                        new AudioRecordConfig(),
+                        // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
+                        new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
+                            @Override
+                            public void onAudioChunkPulled(AudioChunk audioChunk) {
+                                if (webSocketClient != null && webSocketClient.isOpen()) {
+                                    webSocketClient.send(audioChunk.toBytes());
+                                    if (isSendRecordStartTime) {
+                                        isSendRecordStartTime = false;
+                                        emitter.onNext("-2");
                                     }
                                     }
-                                }));
-                        if (wavRecorder != null) {
-                            wavRecorder.startRecording(getContext());
-                        }
-                        emitter.onNext("1");
-                    }).subscribeOn(Schedulers.newThread())
+                                } else {
+                                    emitter.onNext("-1");
+                                }
+                            }
+                        }));
+                if (wavRecorder != null) {
+                    wavRecorder.startRecording(getContext());
+                }
+                emitter.onNext("1");
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -737,29 +738,29 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
             wavRecorder.startRecording(getContext());
             wavRecorder.startRecording(getContext());
         } else {
         } else {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
             Observable.create((ObservableOnSubscribe<String>) emitter -> {
-                        wavRecorder = MsRecorder.wav(
-                                new File(getVoicePath()),
-                                new AudioRecordConfig(),
-                                // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
-                                new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
-                                    @Override
-                                    public void onAudioChunkPulled(AudioChunk audioChunk) {
-                                        if (webSocketClient != null && webSocketClient.isOpen()) {
-                                            webSocketClient.send(audioChunk.toBytes());
-                                            if (isSoundCheckStartTime) {
-                                                isSoundCheckStartTime = false;
-                                                emitter.onNext("-2");
-                                            }
-                                        } else {
-                                            emitter.onNext("-1");
-                                        }
+                wavRecorder = MsRecorder.wav(
+                        new File(getVoicePath()),
+                        new AudioRecordConfig(),
+                        // AudioRecordConfig(MediaRecorder.AudioSource.MIC, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.CHANNEL_IN_MONO, 44100),
+                        new PullTransport.Default().setOnAudioChunkPulledListener(new PullTransport.OnAudioChunkPulledListener() {
+                            @Override
+                            public void onAudioChunkPulled(AudioChunk audioChunk) {
+                                if (webSocketClient != null && webSocketClient.isOpen()) {
+                                    webSocketClient.send(audioChunk.toBytes());
+                                    if (isSoundCheckStartTime) {
+                                        isSoundCheckStartTime = false;
+                                        emitter.onNext("-2");
                                     }
                                     }
-                                }));
-                        if (wavRecorder != null) {
-                            wavRecorder.startRecording(getContext());
-                        }
-                        emitter.onNext("1");
-                    }).subscribeOn(Schedulers.newThread())
+                                } else {
+                                    emitter.onNext("-1");
+                                }
+                            }
+                        }));
+                if (wavRecorder != null) {
+                    wavRecorder.startRecording(getContext());
+                }
+                emitter.onNext("1");
+            }).subscribeOn(Schedulers.newThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Observer<String>() {
                     .subscribe(new Observer<String>() {
                         @Override
                         @Override
@@ -1338,7 +1339,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 String videoUrl = content.getString("video");
                 String videoUrl = content.getString("video");
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
-                                SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
+                        SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
@@ -1356,7 +1357,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                 String imageBase64 = content.getString("image");
                 String imageBase64 = content.getString("image");
                 /*增加自定义按钮的分享面板*/
                 /*增加自定义按钮的分享面板*/
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
                 mShareAction = new ShareAction(getActivity()).setDisplayList(
-                                SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
+                        SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA)
                         .setShareboardclickCallback(new ShareBoardlistener() {
                         .setShareboardclickCallback(new ShareBoardlistener() {
                             @Override
                             @Override
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
                             public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
@@ -1853,16 +1854,15 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
-
     }
     }
 
 
     @SuppressLint("HandlerLeak")
     @SuppressLint("HandlerLeak")
@@ -1883,13 +1883,11 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
 //                        isAlipayOk = true;
 //                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
                         ToastUtils.showShort("支付失败" + resultStatus);
                         ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1903,12 +1901,10 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -2008,61 +2004,61 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         //弹出预备拍
         //弹出预备拍
         preCountDialog = CommonDialog.init().setLayoutId(com.cooleshow.base.R.layout.dialog_student_precount);
         preCountDialog = CommonDialog.init().setLayoutId(com.cooleshow.base.R.layout.dialog_student_precount);
         preCountDialog.setConvertListener(new ViewConvertListener() {
         preCountDialog.setConvertListener(new ViewConvertListener() {
-                    @Override
-                    public void convertView(ViewHolder holder, BaseDialog dialog) {
-                        if (count == 2) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv3.setVisibility(View.INVISIBLE);
-                            iv4.setVisibility(View.INVISIBLE);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        } else if (count == 3) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv4.setVisibility(View.INVISIBLE);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        } else if (count == 4) {
-                            iv1 = holder.getView(com.cooleshow.base.R.id.iv_2);
-                            iv2 = holder.getView(com.cooleshow.base.R.id.iv_3);
-                            iv3 = holder.getView(com.cooleshow.base.R.id.iv_4);
-                            iv4 = holder.getView(com.cooleshow.base.R.id.iv_5);
-                            iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
-                            iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
-                            iv5.setVisibility(View.INVISIBLE);
-                            iv6.setVisibility(View.INVISIBLE);
-                        }
-                        iv1.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv2.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv3.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv4.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv5.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        iv6.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
-                        ImageView iv_dialog_student_precount = holder.getView(com.cooleshow.base.R.id.iv_dialog_student_precount);
-                        iv_dialog_student_precount.setOnClickListener(v -> {
-                            dialog.dismiss();
-                            if (soundpool != null) {
-                                soundpool.release();
-                                soundpool = null;
-                            }
-                            try {
-                                message.optJSONObject("content").put("status", "cancel");
-                            } catch (JSONException e) {
-                                e.printStackTrace();
-                            }
-                            onSendMessage(message.toString());
-                        });
+            @Override
+            public void convertView(ViewHolder holder, BaseDialog dialog) {
+                if (count == 2) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv3.setVisibility(View.INVISIBLE);
+                    iv4.setVisibility(View.INVISIBLE);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                } else if (count == 3) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv4.setVisibility(View.INVISIBLE);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                } else if (count == 4) {
+                    iv1 = holder.getView(com.cooleshow.base.R.id.iv_2);
+                    iv2 = holder.getView(com.cooleshow.base.R.id.iv_3);
+                    iv3 = holder.getView(com.cooleshow.base.R.id.iv_4);
+                    iv4 = holder.getView(com.cooleshow.base.R.id.iv_5);
+                    iv5 = holder.getView(com.cooleshow.base.R.id.iv_1);
+                    iv6 = holder.getView(com.cooleshow.base.R.id.iv_6);
+                    iv5.setVisibility(View.INVISIBLE);
+                    iv6.setVisibility(View.INVISIBLE);
+                }
+                iv1.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv2.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv3.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv4.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv5.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                iv6.setImageResource(com.cooleshow.base.R.drawable.bg_play_metronome_gray_dots_shape);
+                ImageView iv_dialog_student_precount = holder.getView(com.cooleshow.base.R.id.iv_dialog_student_precount);
+                iv_dialog_student_precount.setOnClickListener(v -> {
+                    dialog.dismiss();
+                    if (soundpool != null) {
+                        soundpool.release();
+                        soundpool = null;
                     }
                     }
-                })
+                    try {
+                        message.optJSONObject("content").put("status", "cancel");
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    onSendMessage(message.toString());
+                });
+            }
+        })
                 .setDimAmount(0.6f)
                 .setDimAmount(0.6f)
                 .setOutCancel(true)
                 .setOutCancel(true)
                 .setGravity(Gravity.CENTER)
                 .setGravity(Gravity.CENTER)
@@ -2148,4 +2144,32 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
         }
         }
 
 
     }
     }
+
+
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 43 - 15
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -44,7 +44,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
@@ -583,13 +585,18 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
 
 
     private boolean goPay = false;
     private boolean goPay = false;
 
 
+    /**
+     * 微信支付结果回调
+     *
+     * @param payResult
+     */
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
@@ -613,15 +620,12 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                     // 判断resultStatus 为9000则代表支付成功
                     // 判断resultStatus 为9000则代表支付成功
                     if (TextUtils.equals(resultStatus, "9000")) {
                     if (TextUtils.equals(resultStatus, "9000")) {
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
-//                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -635,12 +639,10 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1256,6 +1258,32 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
         }
         }
     }
     }
 
 
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 
 
 }
 }
 
 

+ 39 - 17
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlHorizontalScreenActivity.java

@@ -44,7 +44,9 @@ import androidx.constraintlayout.widget.ConstraintLayout;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
 import com.cooleshow.base.BuildConfig;
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.data.net.RetrofitClientNoToken;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseActivity;
 import com.cooleshow.base.ui.activity.BaseActivity;
@@ -110,7 +112,7 @@ import okhttp3.ResponseBody;
 /**
 /**
  * 创建日期:2022/6/8 18:25
  * 创建日期:2022/6/8 18:25
  *
  *
- * @author Ryan
+ * @author
  * 类说明:
  * 类说明:
  */
  */
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
 @Route(path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML)
@@ -590,12 +592,12 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
     private boolean goPay = false;
     private boolean goPay = false;
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
-    public void loadEventBus(final String event) {
+    public void loadEventBus(WxPayResult payResult) {
         if (goPay) {
         if (goPay) {
-            if (event.equals("PAY_SUCCESS")) {
-                onSendMessage("'paymentOperation',result:SUCCESS");
-            } else if (event.equals("PAY_ERROR")) {
-                onSendMessage("'paymentOperation',result:ERROR");
+            if (payResult.resultCode == 0) {
+                sendPayResult(Constants.PAY_SUCCESS);
+            } else {
+                sendPayResult(Constants.PAY_ERROR);
             }
             }
             goPay = false;
             goPay = false;
         }
         }
@@ -619,15 +621,12 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                     // 判断resultStatus 为9000则代表支付成功
                     // 判断resultStatus 为9000则代表支付成功
                     if (TextUtils.equals(resultStatus, "9000")) {
                     if (TextUtils.equals(resultStatus, "9000")) {
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
-//                        isAlipayOk = true;
                         ToastUtils.showShort("支付成功");
                         ToastUtils.showShort("支付成功");
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
-//                        isAlipayOk = false;
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                         // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
-//                        showAlert(VipInfoActivity.this, getString(R.string.pay_failed) + payResult.getMemo());
-                        ToastUtils.showShort("支付失败" + resultStatus);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        ToastUtils.showShort("支付失败" + resultInfo);
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -641,12 +640,10 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                     if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 获取alipay_open_id,调支付时作为参数extern_token 的value
                         // 传入,则支付账户为该授权账户
                         // 传入,则支付账户为该授权账户
-//                        showAlert(MainActivity.this, getString(R.string.auth_success) + authResult);
-                        onSendMessage("'paymentOperation',result:SUCCESS");
+                        sendPayResult(Constants.PAY_SUCCESS);
                     } else {
                     } else {
                         // 其他状态值则为授权失败
                         // 其他状态值则为授权失败
-//                        showAlert(MainActivity.this, getString(R.string.auth_failed) + authResult);
-                        onSendMessage("'paymentOperation',result:ERROR");
+                        sendPayResult(Constants.PAY_ERROR);
                     }
                     }
                     break;
                     break;
                 }
                 }
@@ -1260,5 +1257,30 @@ public class HtmlHorizontalScreenActivity extends BaseActivity<ActivityHtml1Bind
         }
         }
     }
     }
 
 
-
+    /**
+     * 发送支付结果
+     *
+     * @param payResult
+     */
+    private void sendPayResult(int payResult) {
+        //支付成功
+        if (payResult == Constants.PAY_SUCCESS) {
+            onSendMessage("'paymentOperation',result:success");
+            return;
+        }
+        //支付失败
+        if (payResult == Constants.PAY_ERROR) {
+            onSendMessage("'paymentOperation',result:error");
+            return;
+        }
+        //支付未安装
+        if (payResult == Constants.PAY_ERROR_BY_NOT_INSTALL) {
+            onSendMessage("'paymentOperation',result:fail");
+            return;
+        }
+        //支付取消
+        if (payResult == Constants.PAY_CANCEL) {
+            onSendMessage("'paymentOperation',result:cancel");
+        }
+    }
 }
 }

+ 6 - 0
teacher/src/main/java/com/cooleshow/teacher/wxapi/WXPayEntryActivity.java

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.util.Log;
 import android.util.Log;
 
 
+import com.cooleshow.base.bean.WxPayResult;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.base.utils.ToastUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.R;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
@@ -14,6 +15,8 @@ import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 
 
+import org.greenrobot.eventbus.EventBus;
+
 public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
 public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
 
 
     private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
     private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
@@ -45,6 +48,9 @@ public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
         Log.d("TAG", "onPayFinish, errCode = " + resp.errCode);
         Log.d("TAG", "onPayFinish, errCode = " + resp.errCode);
 
 
         if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
         if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
+            WxPayResult payResult = new WxPayResult();
+            payResult.resultCode = resp.errCode;
+            EventBus.getDefault().post(payResult);
             if (resp.errCode == 0) {
             if (resp.errCode == 0) {
                 //成功
                 //成功
                 ToastUtils.showShort("支付成功");
                 ToastUtils.showShort("支付成功");

+ 1 - 1
teacher/src/main/res/layout/activity_about.xml

@@ -57,7 +57,7 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="88dp"
             android:layout_marginTop="88dp"
             android:layout_marginRight="12dp"
             android:layout_marginRight="12dp"
-            android:text="027-87718176"
+            android:text="4008851569"
             android:textColor="@color/color_999999"
             android:textColor="@color/color_999999"
             android:textSize="@dimen/sp_17"
             android:textSize="@dimen/sp_17"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintRight_toRightOf="parent"