Przeglądaj źródła

h5可以调用原生支付宝支付功能

zengjiebin 7 lat temu
rodzic
commit
ed0fd1415b

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

@@ -30,6 +30,7 @@ import com.alipay.sdk.app.PayTask;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.mdad.sdk.mdsdk.AdManager;
 import com.mdad.sdk.mdsdk.common.AdData;
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.IJump;
 import com.sheep.gamegroup.absBase.IJumpWeb;
@@ -101,6 +102,10 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.Observer;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 import okhttp3.Call;
@@ -988,6 +993,33 @@ public class CommonUtil {
         Thread payThread = new Thread(payRunnable);
         payThread.start();
     }
+    /**
+     * 支付宝支付
+     *
+     * @param payInfo
+     */
+    public void alipay(final String payInfo, final boolean b, Observer<String> observer) {
+        Observable.create(new ObservableOnSubscribe<String>() {
+            @Override
+            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
+                Activity activity = ActivityManager.getInstance().currentActivity();
+                PayTask alipay = new PayTask(activity);
+                // 调用支付接口,获取支付结果
+                String result = alipay.pay(payInfo, b);
+                PayResult payResult = new PayResult(result);
+                /**
+                 * 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
+                 * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
+                 * docType=1) 建议商户依赖异步通知
+                 */
+//						String resultInfo = payResult.getResult();// 同步返回需要验证的信息
+                String resultStatus = payResult.getResultStatus();
+                emitter.onNext(resultStatus);
+            }
+        }).subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe(observer);
+    }
 
     /**
      * ACache.get(context).put("url_config", (JSONObject) urlConfig);

+ 16 - 0
app/src/main/java/com/sheep/gamegroup/util/js/KFZSJs.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.util.js;
 import android.text.TextUtils;
 import android.webkit.JavascriptInterface;
 
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.util.ApiUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
@@ -220,4 +221,19 @@ public class KFZSJs {
             }
         });
     }
+
+    @JavascriptInterface
+    public void alipay(String payInfo, boolean b){
+        CommonUtil.getInstance().alipay(payInfo, b, new AbsObserver<String>() {
+            @Override
+            public void onNext(String result) {
+                activity.loadJs(String.format(Locale.CHINA, "onAlipayResult('%s')", result));
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                activity.loadJs(String.format(Locale.CHINA, "onAlipayResult('%s')", e.getMessage()));
+            }
+        });
+    }
 }