Przeglądaj źródła

支付h5调用原生支付

zengjiebin 7 lat temu
rodzic
commit
8cd619b536

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/module/pay/activity/SheepWXPayEntryActivity.java

@@ -12,8 +12,11 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.modelbase.BaseReq;
 import com.tencent.mm.opensdk.modelbase.BaseResp;
+import com.tencent.mm.opensdk.modelpay.PayResp;
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 
+import org.greenrobot.eventbus.EventBus;
+
 /**
  * Created by realicing on 2019/1/29.
  * realicing@sina.com
@@ -60,6 +63,8 @@ public abstract class SheepWXPayEntryActivity extends Activity implements IWXAPI
             }
             result = String.valueOf(resp.errCode + 9000);//"9000" 代表支付成功
         }
+        if(resp instanceof PayResp)
+            EventBus.getDefault().post(resp);
         Jump2View.getInstance().goRechargeResultAct(this, result);
         finish();
     }

+ 18 - 0
app/src/main/java/com/sheep/gamegroup/util/js/BaseActWeb.java

@@ -14,8 +14,12 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.tencent.mm.opensdk.constants.ConstantsAPI;
+import com.tencent.mm.opensdk.modelpay.PayResp;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 
+import org.greenrobot.eventbus.Subscribe;
+
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
@@ -123,4 +127,18 @@ public abstract class BaseActWeb extends BaseUMActivity {
     protected void webViewLoadUrl(WebView webView, String url){
         WebViewCacheInterceptorInst.getInstance().loadUrl(webView,url);
     }
+
+    @Override
+    protected boolean needRegisterEventBus() {
+        return true;
+    }
+
+    @Subscribe
+    public void onEventMainThread(PayResp resp) {
+        String result = "";
+        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
+            result = String.valueOf(resp.errCode + 9000);//微信支付 0 为支付成功;支付宝为 "9000" 代表支付成功
+        }
+        loadJs(String.format(Locale.CHINA, "onAlipayResult('%s')", result));
+    }
 }

+ 11 - 6
app/src/main/java/com/sheep/gamegroup/util/js/KFZSJs.java

@@ -279,12 +279,7 @@ public class KFZSJs {
     public void setH5Type(final String h5Type) {
         if (h5Type == null)
             return;
-        activity.runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                activity.setH5Type(h5Type);
-            }
-        });
+        activity.runOnUiThread(() -> activity.setH5Type(h5Type));
     }
 
     @JavascriptInterface
@@ -301,6 +296,16 @@ public class KFZSJs {
             }
         });
     }
+    @JavascriptInterface
+    public void wxpay(String payInfo) {
+        JSONObject jsonObject = JSONObject.parseObject(payInfo);
+        LogUtil.println("KFZSJs", "wxpay", payInfo);
+        if(jsonObject == null){
+            G.showToast(R.string.please_contact_customer_service);
+            return;
+        }
+        CommonUtil.getInstance().wxpay(SheepApp.getInstance().getWxApi(), jsonObject);
+    }
 
     @JavascriptInterface
     public void postMissionApply(int root_id) {

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

@@ -4,6 +4,7 @@ import android.text.TextUtils;
 import android.widget.TextView;
 
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.util.DrawablesHelper;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
@@ -41,6 +42,7 @@ public class RechargeResultAct extends BaseActivity {
                     .setTitle(this, "交易失败")
                     .setTitleFinish(this);
             tvRechargeResultState.setText("交易失败");
+            new DrawablesHelper(tvRechargeResultState).direction(DrawablesHelper.LEFT).drawable(R.mipmap.delete_x_red_img).commit();
         }
     }