Loading...
墨滴

帅次

2021/10/28  阅读:21  主题:自定义主题1

Android MyCard支付接入

1、通过商务联系MyCard进行技术对接,获得最新MyCardPaySDK.jar和接入文档

2、导入MyCardPaySDK.jar

3、根据MyCard提供文档设置AndroidManifest.xml

4、根据自身需求确定是走SDK支付方式还是WebView支付方式

4-1、SDK支付方式

        MyCardSDK sdk = new MyCardSDK(activity);
        //flag   true代表测试环境,false代表正式环境
        sdk.StartPayActivityForResult(flag, bean.getAuthCode());

        // 通过onActivityResult接收SDK結果
        if (requestCode == Config.Payment_RequestCode) {
            if( resultCode == -1)
            {
                JSONObject js = null;
                try {
                    js = new JSONObject(data.getStringExtra(Config.PaySDK_Result));
                    MLog.e(data.getStringExtra(Config.PaySDK_Result));
                    if (js.optInt("returnCode") == 1 && js.optInt("payResult") == 3) {
                        String orderNo = js.getString("facTradeSeq");
                        //进行你的操作
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (Exception e){
                }
            }else{
            }
        }

4-2、WEB支付方式

使用 HTTP POST / GET 傳送參數

  • 测试环境链接

  • 正式环境链接

不搞混乱就好,后面拼接字段需要注意(当然让服务端拼接好所有参数把连接扔给我们最好)

这个是必须要接入的,使用 MyCard、街口、Line Pay 等第三方 App 進行支付,需進行下列設定:

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("http:") || url.startsWith("https:")) {
                return false;
            } else {
                MLog.e("shouldOverrideUrlLoading");
                  try {
                    Intent intent;
                    if (url.startsWith("intent://")) { //MyCard、Line
                        intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                    } else { /
                        intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    }
                    startActivity(intent);
                } catch (Exception e) {
                    MLog.e("Exception:"+e.getMessage());
                   //也可以在这里执行跳转到应用市场下载所需要的支付软件
                    MyToast.showMessage(“未安装APP无法跳转”);

                }
                return true;
            }
//            return super.shouldOverrideUrlLoading(view, url);
        }
        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            //接受证书
            handler.cancel();// 接受所有网站的证书
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }

        @SuppressWarnings("deprecation")
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
        }

        @TargetApi(android.os.Build.VERSION_CODES.M)
        @Override
        public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
            onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
        }
    }

这里仅供参考,等你要接入的时候MyCard支付渠道会给你最新的文档和jar,你就可以选择自己喜欢的接入方式来进行了。

其实两种方式实现都是使用的WebView只不过他们封装在SDK里面了而已,如果有选择还是建议接入SDK。

帅次

2021/10/28  阅读:21  主题:自定义主题1

作者介绍

帅次

公众号:帅次