最近做的h5和Native交互协议


为了js 比较 优雅地 和iOS和Android做交互。设计此文档。

基本协议

iOS通过Javascript Core注入appHandler方法。此方法只有一个参数 String. 所有的H5调用Native 都走这个方法。

    iOS swift : func appHandler(_  jsonString:String) ; 

 java  类似 : public void appHandler( String  jsonString);

Note: 目前Android和iOS统一 协议对象名为nativeBridge。协议方法名统一为appHandler, 如果出现method有平台差异性,在协议中做出说明。

这个jsonString 是一个Json。Json的格式如下

{
    "method": "想要调用的方法名",
   "params":

   {

      "p1": "参数1",
      "p2": "参数2",

   }
}

 

类似的。h5在webview 注入h5Handler。所有Native调用H5都走这个方法。 回调信息也在这里。Json的格式如下

{
    "method": "想要调用的方法名",
   "params":

   {
      "p1": "参数1",

      "p2": "参数2",

   }

}

Note:

1 method 一定要有,不可以为空。 params一定要有,可以为空(相当于无参方法). 

2为了达到异步回调的效果。被调用端按照补充协议的描述返回callback的method名和参数。如果补充协议标明没有callback参数则不实行回调。

appHandler补充协议

method
参数列表(默认为String,如无说明)
callback(H5 接收此回调)
callback 参数列表
相当于JavaScript的
json例子
可用版本
示例1 getUserToken   getUserToken( )

{
"method": "getUserToken",
"params": {}
}

 
示例1 payAction

orderId : "11111"

fee:"11"

payActionCallback

isSuccessed : 1 或 0

payRet: "已支付" 或 "已取消" 或 “已失败”

payAction(orderId,fee ,function(isSuccessed,payRet) {


} )

{
"method": "payAction",
"params": {
"orderId": "11111",
"fee": "11"
}
}

 
payAction 发起支付

必须有的:

payChannel: 目前只有“WxApp” 或者 “AliPay”

orderNo: h5从服务端拿的订单号,唯一。

title: 订单标题

totalFee : 订单总额,以分为单位。如“1”表示是1分钱的订单。“1000”是10块钱。

 

payActionCallback

这是支付后的回调

errorResult: 错误描述,此消息为空时。可等待serverPaidActionNotification回调。如果此消息长度大于0.一定是支付出了问题了。H5端注意了,客户端已经对客户弹出警告了,h5不要对此弹警告框

 



    v1.0.0

 

h5Handler补充协议

method
参数列表(默认为String,如无说明)
callback(客户端处理 此回调)
callback 参数列表
json例子
可用版本

serverPaidActionNotification

服务端支付通知,只在成功时收到

 

serverPaidActionNotification 才是成功通知

必须有的:

orderNo: 订单号,唯一。

    v1.0.0

补充协议的js调用示例

请看附件



你可能感兴趣的:(swift)