闵超

vuePress-theme-reco 闵超    2015 - 2024
闵超 闵超

模式切换

  • 夜间模式
  • 白天模式
首页
博客
  • 前端
  • 生活
  • android
  • 后端
标签
时间
文档
  • mcf-cli
  • mc-ui
旧版博客
联系 or 支持
连接
  • 掘金
  • GitHub
author-avatar

闵超

21

文章

14

标签

首页
博客
  • 前端
  • 生活
  • android
  • 后端
标签
时间
文档
  • mcf-cli
  • mc-ui
旧版博客
联系 or 支持
连接
  • 掘金
  • GitHub

H5调起原生支付宝支付

vuePress-theme-reco 闵超    2015 - 2024

H5调起原生支付宝支付

闵超 2019-08-20 23:12:54 H5

# H5调起原生支付宝支付

# H5前端代码

//signStr 支付宝签名字符串
if (Until.isAndroid()) {
    if (!!window.xxApp) {
      //安卓传参不能是object,顺序约定好不能传错 by minchao 
      window.xxApp.xxAliPay(signStr);
    } else {
      Toast("请在XX-APP中打开");
    }
}
if (Until.isiOS()) {
    if (typeof xxAliPay === "function") {
    let obj= {
        signStr:signStr
    };
      xxAliPay(obj);
    } else {
      Toast("请在XX-APP中打开");
    }
}

# 原生端

# 安卓端代码

webView.addJavascriptInterface(new JsInterface(), "xxApp");

public class JsInterface {

    @JavascriptInterface
    public void xxAliPay(String s) {
        if (Helpers.isEmpty(s)) {
            showSafeToast("获取支付信息异常");
        } else {
            Runnable payRunnable = new Runnable() {

                @Override
                public void run() {
                    PayTask alipay = new PayTask(WebViewNoHeadActivity.this);
                    Map<String, String> result = alipay.payV2(s, true);
                    Message msg = new Message();
                    msg.what = SDK_PAY_FLAG;
                    msg.obj = result;
                    mHandler.sendMessage(msg);
                }
            };
            // 必须异步调用
            Thread payThread = new Thread(payRunnable);
            payThread.start();
        }
    }
 }

# iOS端代码

//h5交互部分
- (void)javaScriptHandle{
    
    JSContext *context = [self.HtmlWebView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    WEAKSELF
    ...
    context[@"xxAliPay"] = ^(){
        dispatch_async(dispatch_get_main_queue(), ^{
            NSArray *args = [JSContext currentArguments];
            for (JSValue *jsVal in args) {
                weakSelf_SC.payPara = jsVal.toObject;
            }
            [weakSelf_SC aliPay];
        });
    };
    ...
}

注:原生端的具体代码的方法,咱也没全懂,咱也没敢问啊!总之先记着,将来迟早会用到的