微信插件相关API,利用开发平台和支付平台,来提供支付,分享等功能.
使用前需要在开发平台上申请相关appid以及支付,登录权限.步骤如下:
appid说明:
appcloud中添加MWXAPPID时,需要填写4段位
1、支付
支付时序图(2B商城为例):
MWeixin.pay(url, params, success, fail, contentType);
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| url | string | 是 | 自己的服务器后台url |
| params | string | 是 | 预下单的参数.具体详情需与对应后台接口对应 |
| success(result) | Function | 是 | 支付成功回调, result为string类型,支付成功之后,业务服务器返回的数据原封不动返回. |
| fail(obj) | Function | 是 | 失败回调,失败回调参数为json对象 |
| contentType | string | 否 | 请求方式,Content-Type默认为application/json |
| errCode | errMsg | 描述 |
|---|---|---|
| -1 | 错误具体原因 | 可能值有:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 |
| 999 | 用户取消 | 无需处理。发生场景:用户不支付了,点击取消,返回APP。 |
示例(此处接口2B商城为例):
MWeixin.pay("http://market-test.mypaas.com.cn/api/pay/create",
{
"user_id":"39d7f99f-c4cb-1f01-18fd-6cd7dab3501a",
"goods":"{\"amount\":1,\"spcs_name\":\"移动验房半年卡\",\"tmp_id\":\"39d7f99f-c4cb-cf01-18fd-6cd7dab3501a\"}",
"invoice":"{\"title\":\"广州万科\",\"content\":\"移动验房半年卡\",\"address\":\"广州\",\"receiver\":\"张三\"}",
"seller_id":"39d7f99f-c4cb-cf01-18fd-6cd7dab35066",
"wechat_app_id":"wxd56023cc00c93f01",
"cust_code":"vanke",
"trade_type":"APP",
"pay_mode":"Wechat"
},function(result) {
}, function(obj) {
});
},
支付成功业务服务器返回数据: 即success(result)回调中result的值
{"errcode":"0","errmsg":"","data":{"success":true,"errcode":null,"errmsg":null,"nonce_str":"91403bTpzRDHKZLM","device_info":null,"order_id":"39d82615-53f5-dfe2-bc69-4f3ec01f8d8a","prepay_id":"wx201606030937319a8254d3d90574993001","mch_id":"1349189001","sign":"2A61865C087326C92E1E544B97478BA8","timestamp":"1464917851774714","app_sign":"9779447236C65B1E2AB5F2737A111DA3"}
用户在支付成功之后,前端拿到result里的参数,去调用自己服务器的接口.例如:根据order_id查询订单状态等
注: 插件成功回调不代表支付成功了,需要前端开发人员查下订单状态.状态成功才能证明已支付成功.
2、 分享
MWeixin.shareText(params, success, fail, pengyouquan);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | |
| success() | Function | 分享成功回调 |
| fail(obj) | Function | 失败回调,失败回调参数为json对象.格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
| pengyouquan | int | 可选参数,1发朋友圈,0分享给朋友,默认0; |
| params结构说明 |
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| text | string | 是 | 要分享的文本 |
示例:
MWeixin.shareText({'text':'分享内容'},function() {
}, function(obj) {
},1);
MWeixin.shareImage(params, success, fail, pengyouquan);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | |
| success() | Function | 分享成功回调 |
| fail(obj) | Function | 失败回调,失败回调参数为json对象.格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
| pengyouquan | int | 可选参数,1发朋友圈,0分享给朋友,默认0; |
params结构说明
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| url | string | 是 |
示例:
MWeixin.shareImage({'url':'/sdcard/xxx.jpg'},function() {
}, function(obj) {
},0);
MWeixin.shareWebPage(params, success, fail, pengyouquan);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | |
| success() | Function | 分享成功回调 |
| fail(obj) | Function | 失败回调,失败回调参数为json对象.格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
| pengyouquan | int | 可选参数,1发朋友圈,0分享给朋友,默认0; |
params结构说明
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| webpageUrl | string | 是 | 要分享的网页url |
| title | string | 是 | 网页标题 |
| description | string | 否 | 网页描述 |
| thumbData | string | 否 | 网页的缩略图网络地址(分享前将自动下载该图片,打开微信分享速度依网速而定) |
示例:
MWeixin.shareWebPage({'webpageUrl':'http://www.baidu.com','title':'百度','description':'这是一个百度网页','thumbData':'/sdcard/xxx.jpg'
} ,function() {
}, function(obj) {
},1);
MWeixin.shareMusic(params, success, fail, pengyouquan);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | |
| success() | Function | 分享成功回调 |
| fail(obj) | Function | 失败回调,失败回调参数为json对象.格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
| pengyouquan | int | 可选参数,1发朋友圈,0分享给朋友,默认0; |
params结构说明
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| musicDataUrl | string | 否 | 要分享的音乐数据url |
| musicUrl | string | 是 | 点击分享内容,跳转页面的url |
| title | string | 是 | 音乐标题 |
| description | string | 是 | 音乐描述 |
| thumbData | string | 否 | 音乐缩略图的网络地址(分享前将自动下载该图片,打开微信分享速度依网速而定) |
示例:
MWeixin.shareMusic({'title':'音乐标题',
'description':'这是一个音乐描述',
'musicDataUrl':'http://mic-media-origin.oss-cn-hangzhou.aliyuncs.com/audio/%E9%99%88%E7%B2%92%20-%20%E5%A5%87%E5%A6%99%E8%83%BD%E5%8A%9B%E6%AD%8C.mp3',
'musicUrl':'http://www.baidu.com',
'thumbData':'/sdcard/testTakePhoto/aaatakePhoto.jpg'
} ,function() {
}, function(obj) {
},1);
3、 微信是否安装
MWeixin.isInstalled(success, error);
检测微信是否安装. 若检测到未安装,则可不提供微信登陆等功能。
| 参数 | 作用 |
|---|---|
| success(result) | 执行成功回调。结果result:Android为int类型,1:已安装,0:未安装;iOS为Boolean类型, true:已安装,false:未安装 |
| error | 执行错误回调。错误为json对象 |
示例
MWeixin.isInstalled(function(result) {
}, function(obj) {
});
4、 微信登陆
MWeixin.login(params, sucess, fail);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | 两个参数scope, state. 示例:{"scope":"snsapi_userinfo", "state":"wechat_sdk_demo_test"} |
| success(result) | Function | result为json对象,格式如:{"code":"用户换取access_token的code","state":"第三方程序发送时用来标识其请求的唯一性的标志","lang":"微信客户端当前语言","country":"微信用户当前国家信息"} |
| fail(error) | Function | error为JSON对象,错误信息。格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
有关参数具体说明,请参见 微信登录文档
示例
MWeixin.login({"scope":"snsapi_userinfo", "state":"wechat_sdk_demo_test"},function(result) {
}, function(obj) {
});
- 发起分享的App与小程序属于同一微信开放平台帐号,需要到微信开放平台绑定小程序。
- 支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
- 若客户端版本低于6.5.6或在iPad客户端接收,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。
MWeixin.shareMiniProgram(params, success, fail);
| 参数 | 类型 | 说明 |
|---|---|---|
| params | JSON对象 | |
| success() | Function | 分享成功回调 |
| fail(obj) | Function | 失败回调,失败回调参数为json对象.格式如下:{"errCode":"具体错误代码", "errMsg":"具体错误描述"} |
params结构说明
| 参数 | 类型 | 必填 | 作用 |
|---|---|---|---|
| userName | string | 是 | 小程序的原始id,可通过微信公众平台-->设置-->基本设置-->帐号信息里得到 |
| webpageUrl | string | 是 | 兼容低版本的网页链接,当手机安装微信为低版本时,以网页形式打开 |
| thumbData | string | 是 | 缩略图地址,支持本地、网络地址(分享前将自动下载该图片,打开微信分享速度依网速而定) |
| path | string | 否 | 小程序页面的路径 |
| title | string | 否 | 标题 |
| description | string | 否 | 兼容低版本的描述语 |
| miniProgramType | int | 否 | 0:正式版;1:开发版;2:体验版;默认为0 |
示例
var params = { "userName":"gh_1c95c11a29e2",
"webpageUrl":"http://www.baidu.com",
"path":"pages/index/index",
"title":"小程序标题",
"description":"小程序desc",
"thumbData":"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"};
MWeixin.shareMiniProgram(params,function(result) {
console.log('success:',result);
}, function(obj) {
console.log('error:',obj);
});