更新记录

1.1.1(2021-08-03)

1.更新新版sdk 2.更新文档


平台兼容性

Android Android CPU类型 iOS
适用版本区间:9.0 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 14

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


以下插件都要配合服务端配合使用; 一般流程基本都是这个套路 1.app 向服务端申请一个请求参数 2 app 根据这个参数调起第三方APP 3app向服务端查询结果,并且更新数据库;

一.银联支付 var btModule = uni.requireNativePlugin("ybt-BTModule"); const installed = btModule.checkWalletInstalled() //检查是否安装 //sdk 会自动处理,是否安装云闪付,跳转情况; unionPay(order).then(res => { //代码演示仅供参考,从服务端发起支付,并且返回tn号 参考银联文档(https://open.unionpay.com/tjweb/acproduct/APIList?apiservId=568&acpAPIId=740&bussType=1) //后端代码demo地址 (https://open.unionpay.com/tjweb/acproduct/list?apiSvcId=449&index=5) btModule.unionPay({
mode: "00", // 00 生成环境 ,01测试环境 , app 只能生成环境 scheme: "****", //ios才生效的scheme码 ,必须和后端的return:url 一致,否则iOS不能跳回 tn: res.data.tn //服务器返回的tn号 }, (obj) => { // 查询订单 //这里统一查询订单情况,自己实现 if (obj.code == 'success') {
// 查询订单 //resolve("支付成功") } else { reject(obj.message); //取消支付 支付失败等等

        }

    })
})

二.支付宝 身份认证
    此SDK 还支持 支持支付宝 人脸认证SDK 集成,不依赖支付宝的安装
    ① SDK 集成方案
    var bizCode = btModule.bizCode();   //获取bizCode 决定是否拉起支付宝客户端,这里可以手动指定
    aliPayCertification({                  //后端代码实现,仅供参考,参考官方文档 (https://opendocs.alipay.com/open/20181012100420932508/00ze52)         
        bizCode:bizCode,
        returnUrl:"*******"   //例:schema://abc  (app 的 schema码)
    }).then(res => {
        res.bizCode = bizCode
        me.certifyId = res.certifyId;
        btModule.aliPayCertification({       
            url:res.url,     //后台返回的url地址
            certifyId:res.certifyId  //后台返回的certifyId,
            biz:bizCode
        },(obj)=>{

        })

    })

    ② H5简易方案 
       简单,容易,但是必须依赖支付宝客户端,完美注意者选择第一种更佳,可以手动强制跳转内置页面,不跳转     
       const url = "://platformapi/startapp?appId=20000067&url=" + encodeURIComponent(res.url)  //这里的URL 就是后端生成的URL 
       plus.runtime.openURL("alipays" + url)  //这里注意区分 ios 是alipays,  android 是alipay

    -------------------------------返回结果-----------------------------
    分两种情况如果
       第一种:支付宝客户端回来;第二张:如果未安装客户端,可以设置自定义参数更新;
       onShow() {
        var me = this;
        setTimeout(()=>{
            var args = plus.runtime.arguments;
            if (args == '******') {    //上面传的returnurl
                //去后端查询人脸识别认证结果,通过certifyId
            }
        },50)

       };  

----------springboot服务端代码,简单demo,仅供参考,请结合实际业务--------------- 例:银联如果获取银联的tn号,必须参考实际文档 @PostMapping(value = "/order.do") public AjaxResult order(@RequestBody PaymentParam order){

    //组织请求报文
    net.sf.json.JSONObject json = new  net.sf.json.JSONObject();
    json.put("mid", unionPayBean.getMid());
    json.put("tid", unionPayBean.getTid());
    json.put("msgType", unionPayBean.getMsgType_order());
    json.put("msgSrc", unionPayBean.getMsgSrc());
    json.put("instMid", unionPayBean.getInstMid());
    Snowflake snowflake =IdUtil.createSnowflake(1,1);
    long id = snowflake.nextId();
    String orderId = msgSrcId+order.getOrderInfo().getOutTradeNo().substring(3)+String.valueOf(id);
    json.put("merOrderId", orderId.substring(0,32));
    json.put("totalAmount", order.getOrderInfo().getTotalFee());
    json.put("tradeType", "APP");
    //是否要在商户系统下单,看商户需求  createBill()
    json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
    json.put("signType", "SHA256");
    Map<String, String> paramsMap = Util.jsonToMap(json);
    paramsMap.put("sign", Util.makeSign(unionPayBean.getMd5Key(), paramsMap));
    String strReqJsonStr = JSON.toJSONString(paramsMap);
    JSONObject resultMap = new JSONObject();
    try {
        String content = HttpRequest.post(unionPayBean.getUrl())
                .body(strReqJsonStr)
                .execute().body();
        //转换成json对象
        com.alibaba.fastjson.JSONObject respJson = JSON.parseObject(content);
        String resultCode = respJson.getString("errCode");
        if("SUCCESS".equals(resultCode)){

            return  AjaxResult.success(respJson.get("appPayRequest"));  //tn号返回给客户端即可
        }
    } catch (Exception e) {
        e.printStackTrace();

        return AjaxResult.error(e.toString());
    }
    return AjaxResult.error("支付失败");
}

------------------------------------分割线----------------------------------

例:java 获取实名认证的certifyId,必须参考实际文档,仅供参考,请结合实际业务 public AjaxResult alipayCertification(@RequestParam String bizCode,@RequestParam String returnUrl) { try { RealNameAuth realNameAuth = iRealNameAuthService.selectRealNameAuthByRiderId(riderId); if(realNameAuth==null){ throw new BaseException("请先补充身份信息"); } JSONObject jsonObject = new JSONObject(); JSONObject jsonObjectPerson = new JSONObject(); jsonObjectPerson.put("identity_type","CERT_INFO"); jsonObjectPerson.put("cert_name",realNameAuth.getRealName()); jsonObjectPerson.put("cert_no",realNameAuth.getIdCardno()); jsonObjectPerson.put("phone_no",realNameAuth.getPhonenumber()); jsonObjectPerson.put("cert_type","IDENTITY_CARD"); jsonObject.put("outer_order_no", IdUtil.objectId()); jsonObject.put("biz_code",bizCode); jsonObject.put("identity_param",jsonObjectPerson); JSONObject urlObject = new JSONObject(); urlObject.put("return_url", returnUrl); jsonObject.put("merchant_config",urlObject);

        String str =  jsonObject.toJSONString();
        AlipayUserCertifyOpenInitializeRequest request = new AlipayUserCertifyOpenInitializeRequest();
        request.setBizContent(str);
        AlipayClient client = AliPayApiConfigKit.getAliPayApiConfig().getAliPayClient();
        AlipayUserCertifyOpenInitializeResponse response= client.certificateExecute(request);
        AlipayUserCertifyOpenCertifyRequest request1 = new AlipayUserCertifyOpenCertifyRequest();
        JSONObject bizContentObj = new JSONObject ();
        bizContentObj.put ("certify_id" ,  response.getCertifyId() );
        request1.setBizContent(bizContentObj.toString ());
        AlipayUserCertifyOpenCertifyResponse response1 = client.pageExecute(request1,"GET");
        if(response.isSuccess()){
            JSONObject resObject = new JSONObject();
            resObject.put("certifyId",response.getCertifyId());   //certifyId返回给客户端,再去调起支付宝客户端
            resObject.put("url",response1.getBody());
            return AjaxResult.success(resObject);
        } else {
            throw new AlipayApiException("参数错误");
        }
    } catch (AlipayApiException e) {
        return AjaxResult.error(e.getMessage());

    }
}

注意事项: 1.manifest.json 配置一下 schemes,和后端的return_url 保持一致

隐私、权限声明

1. 本插件需要申请的系统权限列表:

manifest.json 配置一下 ,照相机权限;

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问