wechat


wechat模块实现微信分享、支付功能。通过rd.wechat获取管理对象。注册使用的appID需要用户从微信开放平台注册.并且在pluginConfigs.xml配置文件中配置scheme,scheme值就是注册所得appID.

如何创建应用

1、登录微信开发平台,点击右上角的注册按钮 如下图:

image

2、填写注册信息并注册 如下图:
image

3、注册成功后登录,来到应用列表。点击创建移动应用。创建应用 如下图:

image

Android创建应用注意事项:
(1)在控制台打开证书页面,Android证书 一键创建证书 如图所示:
image
(2)点击一键创建证书
image
(3)获取包名
image
(4)将应用app编译安装到手机上
(5)签名生成工具,将签名工具安装到手机上,下载生成工具连接,如图所示:
image
(6)将获得的包名填写在签名生成工具app中提交 获取应用签名
(7)将获取的应用签名,填写在微信开放平台如图所示位置
image

4、按照微信开放平台的要求,填写你的注册信息。提交后,等待审核 如下图:

image

5、审核通过后,点击查看按钮,查看应用信息 如下图:

image

6、保存appID 和 appSecret,留给插件使用 如下图:

image

MediaType(Number):

  • MediaTypeText: 文本,数值为0
  • MediaTypeImage: 图片,数值为1
  • MediaTypeWebPage: 新闻,数值为2
  • MediaTypeMusic: 音乐,数值为3
  • MediaTypeVideo: 视频,数值为4

WeixinScene(Number):

  • WeixinSession: 微信好友,数值为0
  • WeixinTimeline: 微信朋友圈,数值为1
  • WeixinFavourite: 微信收藏,数值为2

state(Number):

  • WXSuccess: 成功,数值为0
  • WXErrCodeCommon: 普通错误类型,数值为-1
  • WXErrCodeUserCancel: 用户点击取消并返回,数值为-2
  • WXErrCodeSentFail: 发送失败,数值为-3
  • WXErrCodeAuthDenied: 用户拒绝授权,数值为-4

getUserInfoState(Number):

  • GetSuccess: 获取用户信息成功,数值为0
  • GetFail: 获取用户信息失败,数值为-1

方法:

对象:

回调方法:

配置scheme值

关于iOS9支持:

init


初始化插件并启动.

var result = rd.wechat.init(appID, secret);    
说明:

初始化插件并启动.需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。

参数:
  • appID: ( String ) 必选,注册所得appID.
  • secret: ( String ) 可选,注册所得AppSecret,当使用授权登录并需要获取用户信息是必选。
返回值:
  • result: ( Boolean ) true,初始化成功. false,初始化失败.
示例:
var result = rd.wechat.init('wxd930ea5d5a258f4f','9f7bd2085bd2474d61d32538ae0fa8ae');

isWeixinInstalled


检测weixin是否安装

var result = rd.wechat.isWeixinInstalled();    
说明:

检测微信是否安装。只有微信已安装,才可以进行微信分享操作。

参数:

无.

返回值:
  • result: ( Boolean ) true,已安装微信. false,未安装微信.
示例:
var result = rd.wechat.isWeixinInstalled();

shareContent


分享内容

rd.wechat.shareContent(option,shareCallback);    
说明:

分享操作,通过option设置分享内容参数,分享结果传给shareCallback回调方法。

参数:
  • option: ( ShareOption ) 必选 设置分享参数
  • shareCallback: ( shareCallback ) 必选 分享结果的回调函数.
返回值:

无返回值

示例:
var option = {
            content : 'hello world',
            defaultContent: 'hi',
            imageUrl : 'http://a.hiphotos.baidu.com/image/pic/item/a8ec8a13632762d0677d08c6a3ec08fa513dc60c.jpg',
            title : 'nihao',
            url : 'http://www.baidu.com',
            mediaType : 2,
            scene:1
        };

rd.wechat.shareContent(option,function(msg){alert(msg);});

pay


移动支付

pay(option,callback);
说明:

移动支付,通过option设置支付参数,执行stateCallback回调函数。

参数:
返回值:

无返回值

示例:
    function stateCallback(state,msg){
        alert(state+" "+ msg);
    }
    var option={
        appid : 'wx8888888888888888',
        partnerid : '1900000109',
        prepayid : 'WX1217752501201407033233368018',
        package : 'Sign=WXPay',
        noncestr : '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
        timestamp : '1412000000',
        sign : 'C380BEC2BFD727A4B6845133519F3AD6',
    }
    rd.wechat.pay(option, stateCallback);

auth


微信授权登录

auth(authOption, authCallback)
说明:

授权流程为:

  1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
  2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
  3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

该模块仅实现步骤1请求code,其他步骤可参考官网进行实现移动应用微信登录开发指南

通过option设置支付参数,执行authCallback回调函数。

参数:
返回值:

无返回值

示例:
function authCallback(resultState,error,result){
    if (resultState == 0)
    {
        alert(result.code);
    }
}

var option = {
    state : '123',
    scope : 'snsapi_userinfo'
};

rd.wechat.auth(authOption, authCallback);    

getUserInfo


授权成功后获取用户基本信息

getUserInfo(getUserInfoCallBack);
说明:

该方法仅在授权成功的情况下有效。根据授权成功返回的code获取到access_token和openid,再根据access_token和openid请求获取到用户的基本信息。

参数:
返回值:

无返回值

示例:
function getUserInfoCallBack(getUserInfoState,infoResult){
    if (getUserInfoState == 0){
        alert("获取信息成功" + infoResult);
    }else if (getUserInfoState == -1){
        alert('获取信息失败');
}

rd.wechat.getUserInfo(getUserInfoCallBack);

ShareOption


设置分享参数

ShareOption {
 attribute String  content ,
 attribute String  defaultContent,
 attribute String  imageUrl ,
 attribute String  title ,
 attribute String  url ,
 attribute MediaType  mediaType,    
 attribute WeixinScene  scene
 }
说明:

JSON对象,用于设置分享信息的参数。

属性:
  • content: (String ) 可选 分享内容,当分享类型为文本时,必须填写.
  • defaultContent: (String ) 可选 描述内容.
  • imageUrl: (String ) 可选 分享图片地址,当分享类型为图片时,必须填写;当分享类型为新闻、音乐、视频时,该图片作为缩略图.
  • title: (String ) 必选 标题.
  • url: ( String ) 可选 分享内容的链接地址,当分享类型为新闻、音乐、视频时,必须填写.
  • mediaType: ( MediaType ) 必选 分享类型.
  • scene: ( WeixinScene ) 必选 分享场景.

PayOption


支付信息设置

PayOption {
 property String  appid,
 property String  partnerid ,
 property String  prepayid ,
 property String  package ,
 property String  noncestr,    
 property String  timestamp,
 property String  sign ,
}
说明:

JSON对象,创建支付信息对象

属性:
  • appid: (String(32)) 必选 公众账号ID。微信分配的公众账号ID。
  • partnerid: (String(32) ) 必选 商户号。微信支付分配的商户号。
  • prepayid: (String(32) ) 必选 预支付交易会话ID。微信返回的支付交易会话ID。
  • package: (String(128) ) 必选 扩展字段。暂填写固定值Sign=WXPay。
  • noncestr: (String(32)) 必选 随机字符串。随机字符串,不长于32位。推荐随机数生成算法
  • timestamp: (String(10)) 必选 时间戳。时间戳,请见接口规则-参数规定
  • sign: (String(32) ) 必选 签名。签名,详见签名生成算法

AuthOption


用户授权时设置的信息

authOption{
    property String scope,
    property String state
}
说明:

JSON对象,创建授权信息对象

属性:
  • scope: (String) 必选 微信用户已授权给第三方应用帐号相应接口作用域(scope)。如获取用户个人信息则填写snsapi_userinfo, 详见什么是授权域?
  • state: (String) 可选 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。

shareCallback


用户授权成功的回调函数

function shareCallback(state) {
// Handle Success
}
说明:

通过状态码返回状态.

参数:
  • state: ( state ) 用户分享操作结果信息.

payCallback


用户支付的回调函数。

function payCallback(state,msg) { 
}
说明:

开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询返回的结果为准。

参数:
  • state: ( state) 支付状态信息。
  • msg: (String ) 操作结果描述信息。

authCallback


用户授权的回函数

function authCallback(resultState, error,result){

}
说明:

授权回返回结果。

参数:
  • resultState: ( state) 授权状态结果。
  • error: (String ) 错误信息。
  • result: (JSON ) 用户授权结果。具体字段如下:

    • code: (String ) 用户换取access_token的code,仅在resultState为0时有效。
    • state: (String ) 应用发送时用来标识其请求的唯一性的标志,由应用程序调用auth时传入,由微信终端回传,state字符串长度不能超过1K。
    • lang: (String ) 微信客户端当前语言。
    • country: (String ) 微信用户当前国家信息。

getUserInfoCallBack


获取用户信息的回调函数

function getUserInfoCallBack(getUserInfoState,infoResult){

}
说明:

获取用户信息的回调返回结果。

参数:
  • getUserInfoState: ( getUserInfoState) 获取用户信息的状态结果。
  • infoResult: (JSON ) 用户基本信息结果。具体字段如下:

    • openid: (String ) 普通用户的标识,对当前开发者帐号唯一。
    • nickname: (String ) 普通用户昵称。
    • sex: (Number ) 普通用户性别,1为男性,2为女性。
    • province: (String ) 普通用户个人资料填写的省份。
    • city: (String ) 普通用户个人资料填写的城市。
    • headimgurl: (String ) 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。
    • privilege: (Array ) 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)。
    • unionid: (String ) 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

添加scheme值


需要添加scheme值到配置文件中(pluginConfigs.xml).scheme值为注册所得appID.

     <config pluginName="wechat">
        <ios>
            <param key="Scheme" value="wx4868b35061f87885"></param>
        </ios>
        <android>

        </android>
    </config>

关闭HTTPS请求协议


为了强制增强数据访问安全,iOS9默认会把大部分的HTTP请求都改为HTTPS请求。本插件基于微信集成.目前微信官网没有针对iOS9的HTTPS协议做出更新操作. 所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下:

<!--找到InfoPlistEdit节点 在这里设置HTTPS相关参数.-->
<config pluginName="InfoPlistEdit">
    <ios>
        <!--true:表示开启http协议模式;false:表示关闭http协议模式,采用https请求协议.-->
         <param key="AllowAllHttpConnection" value="true"></param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.

添加URLScheme白名单


苹果官方指出在iOS9.0及以上系统中,如果使用canOpenURL方法,该方法所涉及到的URL scheme必须在工程中将它们列为白名单,否则不能使用。 所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下:

<config pluginName="InfoPlistEdit">
    <ios>
        <!--将所需要用到的scheme添加到这里.-->
        <param key="SchemeWhiteList">
             <string>wechat</string>
            <string>weixin</string>
        </param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.