open social 插件的插件微信不能分享吗

今天看啥 热点:
移动共享开发(二)各平台SSO(免登录)配置
微信和微信朋友圈、QQ、QQ空间、新浪微博、腾讯微博、人人,sso信和
SSO名词解释 : SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
例如用户已经登录新浪微博客户端,使用SSO授权登录时则不需要用户手动输入用户名、密码,直接点击登录即可, 因此可成为免登录.
注意:SSO授权只针对授权过程,后续的分享仍然通过网页分享,不通过客户端完成分享流程
实现SSO授权必须自己在第三方平台注册应用,获取appkey及secret
配置SSO授权回调
如果有使用任一平台的SSO授权或者集成了facebook平台, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/**使用SSO授权必须添加如下代码 */
UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode) ;
if(ssoHandler != null){
ssoHandler.authorizeCallBack(requestCode, resultCode, data);
分享到微信和朋友圈
添加微信和朋友圈所依赖的jar文件
1.解压已下载的zip文件,将platforms/weixin/libs目录中SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
2.在libs目录中找到SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar文件,鼠标右键--&Add to Build Path。
3 将解压目录中platforms/weixin/res拷贝至你工程的res目录。
添加如下集成代码
String appID = &wx967daebe835fbeac&;
String appSecret = &5fa9e68caf83e563c8dcbce&;
UMWXHandler wxHandler = new UMWXHandler(getActivity(),appId,appSecret);
wxHandler.addToSocialSDK();
UMWXHandler wxCircleHandler = new UMWXHandler(getActivity(),appId,appSecret);
wxCircleHandler.setToCircle(true);
wxCircleHandler.addToSocialSDK();
微信和朋友圈支持纯文字,纯图片(点击查看大图),图文,音乐,视频分享。
此版本兼容了微信支付的功能,请更新SocialSDK_WeiXin_1.jar文件。
微信和微信朋友圈的回调
如果在您的项目中集成了微信或者微信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。&直接复制到Android
manifest XML 即可,不需要进行修改
然后将SDK包中platforms/weixin目录下的wxapi文件夹拷贝到您的工程的包目录下, 然后修改WXEntryActivity的完整路径即可。
例如social_sdk_example的包名为com.umeng.soexample,因此将wxapi文件夹拷贝到com.umeng.soexample下,最终WXEntryActivity的 完整路径为com.umeng.soexample.wxapi.WXEntryActivity。
注册微信回调代码:
mSnsPostListener
= new SnsPostListener() {
public void onStart() {
public void onComplete(SHARE_MEDIA platform, int stCode,
SocializeEntity entity) {
if (stCode == 200) {
Toast.makeText(MainActivity.this, &分享成功&, Toast.LENGTH_SHORT)
Toast.makeText(MainActivity.this,
&分享失败 : error code : & + stCode, Toast.LENGTH_SHORT)
mController.registerListener(mSnsPostListener);
其中分享的回调接口SnsPostListener的onComplete方法的第二个参数代表分享的状态码,当值为200时表示分享成功;其余的值则为分享失败。
微信集成相关说明
微信集成注意以下几点
正确填写AppID。工程的包名必须同申请应用的包名一致。在微信开放平台填写你App的的签名,测试、发布时要保证App的签名跟微信开放平台的签名一致。开发者的应用需要通过审核。开发者在申请应用必须要通过微信官网的审核才能进行调试。
Demo中集成的微信无法使用?
原因:Demo中使用的微信AppID绑定的签名信息和你打包时所用的签名信息不一致,导致无法响应. 解决办法有两个,您任选其一:
申请一个测试Demo中AppID.(申请地址).
填写&包名&时请使用Demo的包名&com.umeng.soexample&.
填写&签名&使用签名生成工具(签名工具)生成,签名时填写Demo的包名.
获取微信AppID后替换Demo中的使用的AppID.
使用SDK中的 debug.keystore编译运行Demo工程.
这一步很麻烦
使用微信分享首先需要在微信开放平台申请, 按照要求填写应用信息,审核通过后获取到微信AppID,AppSecret
微信签名说明
由于微信的签名过程跟验证流程较多,出错的可能性较大,这里将对微信的签名过程跟验证做详细的说明。
获取签名文件
获取应用签名方式有两种&
1:用eclipse导出&带签名&的apk文件,注意此时选择的签名文件是你发布app时的签名文件。在导出的最后一步,eclipse会显示一个Certificate fingerprints(证书指纹),如下图。此时找到MD5值,将该MD5值复制出来,按照“&去掉冒号(:),大写转小写&”的规则装换,此时字符串就是签名。
导出&带签名&的apk文件,将该apk文件安装至手机中。安装微信的签名工具,打开GenSignature应用程序,填写你App的包名,点击“Get
Signature”即可得到签名。
通过微信签名工具获取签名
请在微信开放平台申请应用
& 填写App的相关信息,注意确保包名跟签名填写正确,填写完成提交微信审核。
&微信集成测试
& 在进行微信集成测试时,请填写你申请App的AppID。测试时需要导出带签名的apk文件测试,否则将不能正常分享。
如果直接使用demo源码进行编译,需要使用SDK包中附带的debug.keystore(keystore密码为android)进行编译,否则会由于签名验证不一致导致微信分享功能异常,并且由于demo工程提供的微信APPID不具备微信登录权限,因此无法进行微信登录功能测试
微信分享功能使用了微信原生的jar包,如果你的应用中也引用了微信原生SDK,会出现jar冲突Unable
to execute dex: Multiple dex files define
&添加微信到分享列表
String appID = &wx967daebe835fbeac&;
String appSecret = &5fa9e68caf83e563c8dcbce&;
UMWXHandler wxHandler = new UMWXHandler(getActivity(),appId,appSecret);
wxHandler.addToSocialSDK();
UMWXHandler wxCircleHandler = new UMWXHandler(getActivity(),appId,appSecret);
wxCircleHandler.setToCircle(true);
wxCircleHandler.addToSocialSDK();
注意以上代码必须在弹出分享面板前调用,否则第一次分享时面板中无法出现微信及朋友圈图标
设置分享内容
WeiXinShareContent weixinContent = new WeiXinShareContent();
weixinContent.setShareContent(&来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信&);
weixinContent.setTitle(&友盟社会化分享组件-微信&);
weixinContent.setTargetUrl(&你的URL链接&);
weixinContent.setShareImage(localImage);
mController.setShareMedia(weixinContent);
CircleShareContent circleMedia = new CircleShareContent();
circleMedia.setShareContent(&来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,朋友圈&);
circleMedia.setTitle(&友盟社会化分享组件-朋友圈&);
circleMedia.setShareImage(localImage);
circleMedia.setTargetUrl(&你的URL链接&);
mController.setShareMedia(circleMedia);
接口说明:
微信分享必须设置targetURL,需要为http链接格式微信朋友圈只能显示title,并且过长会被微信截取部分内容
设置分享消息类型
微信分享支持图文分享、纯图片及纯文字分享,其中图文分享点击会跳转到设置的URL,纯图片分享可以点击查看大图
图文分享方法参考上文,纯图片分享方法只需要去掉文本内容设置即可,代码如下:
WeiXinShareContent weixinContent = new WeiXinShareContent();
weixinContent.setTitle(&友盟社会化分享组件-微信&);
weixinContent.setTargetUrl(&你的URL链接&);
weixinContent.setShareImage(localImage);
mController.setShareMedia(weixinContent);
CircleShareContent circleMedia = new CircleShareContent();
circleMedia.setShareImage(localImage);
circleMedia.setTargetUrl(&你的URL链接&);
mController.setShareMedia(circleMedia);
纯文本分享方法与纯图片类似,去掉分享图片即可
分享到微信朋友圈将平台参数替换即可
mController.postShare(mContext,SHARE_MEDIA.WEIXIN_CIRCLE,
new SnsPostListener() ;
分享给QQ好友
在腾讯开放平台(/)&注册自己的应用,按照QQ官方要求填写,获取APPID及appkey,并且将APPID及appkey绑定在友盟主站后台,
同时注意在应用审核通过前必须添加测试账号,否则会出现110406报错。
添加QQ分享所依赖的jar文件
解压已下载的zip文件,将platforms/qq_zone/libs目录中SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键--&Add to Build Path。
将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。
在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。
添加如下集成代码
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), &&,
&caab60104f0ba&);
qqSsoHandler.addToSocialSDK();
1.此版本集成了QQ的最新jar文件,请更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件.
2.QQ分享内容为音乐,视频的时候,其形式必须为图片支持url和本地图片类型.
3.QQ SSO授权不会在onActivityResult方法内被调用。
4.未安装手机QQ客户端的情况下,QQ不支持纯图片分享.
5.未安装手机QQ客户端的情况下,QQ取消授权不执行相关回调。
6.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。
&SSO(免登录)分享到QQ空间
添加QQ空间所依赖的jar文件跟资源文件
如果已经添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,则不需要再次添加。
1.1 解压已下载的zip文件,将platforms/qq_qzone/libs中 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3. jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
1.2 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键--&Add to Build Path。
1.3 将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。
1.4 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。
在集成代码中添加如下代码
QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(), &&,
&caab60104f0ba&);
qZoneSsoHandler.addToSocialSDK();
1.本次集成了QZone的最新jar包,升级时请注意更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件。
2.在进行QZone SSO授权时,请在AndroidManifest.xml中配置相应的Activity。具体参加上文AndroidManifest.xml文件配置。
3.QZone不支持纯图片分享。
4.无手机QQ客户端的情况下,QQ取消授权不执行相关回调。
5.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。
设置分享内容
设置QQ分享文字及图片
设置QQ分享内容
QQ支持分享文字、图片、网页形式以及视频音乐等多媒体资源,但是分享音乐等多媒体资源必须要跳转到网页,然后点击播放。
设置QQ分享内容使用下面的代码:
QQShareContent qqShareContent = new QQShareContent();
qqShareContent.setShareContent(&来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能 -- QQ&);
qqShareContent.setTitle(&hello, title&);
qqShareContent.setShareImage(new UMImage(getActivity(), R.drawable.icon));
qqShareContent.setTargetUrl(&你的URL链接&);
mController.setShareMedia(qqShareContent);
&设置Qzone分享文字及内容
设置Qzone分享内容
Qzone分享只支持图文形式分享,并且点击图文消息会跳转到预设的链接,图文分享只展示缩略图,**无法查看大图**
设置Qzone分享内容使用下面的代码:
QZoneShareContent qzone = new QZoneShareContent();
qzone.setShareContent(&来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能 -- QZone&);
qzone.setTargetUrl(&你的URL链接&);
qzone.setTitle(&QZone title&);
qzone.setShareImage(urlImage);
mController.setShareMedia(qzone);
设置QQ分享消息类型
QQ好友分享支持纯文字、纯图片、图文分享及音乐等多媒体资源,其中&图文分享点击会跳转到预设URL,无法查看大图&,需要点击查看大图需要设置为纯图片类型,方法如下:
QQShareContent qqShareContent = new QQShareContent();
qqShareContent.setTitle(&hello, title&);
qqShareContent.setShareImage(new UMImage(getActivity(), R.drawable.icon));
qqShareContent.setTargetUrl(&你的URL链接&);
mController.setShareMedia(qqShareContent);
使用纯图片分享必须使用本地图片,不可以使用URL网络图片
分享到Qzone的方法和QQ方法相同,只需将参数名替换为Qzone即可
mController.postShare(mContext,SHARE_MEDIA.QZONE,
new SnsPostListener() {
使用友盟默认的分享面板,只需在分享按钮中添加如下代码:
mController.openShare(getActivity(), false);
自定义分享面板主要针对希望自定义分享列表选择界面的开发者,开发者需要自行实现分享列表的选择页,在分享到QQ的按钮中实现下面的方法:
mController.postShare(mContext,SHARE_MEDIA.QQ,
new SnsPostListener() {
public void onStart() {
Toast.makeText(mContext, &开始分享.&, Toast.LENGTH_SHORT).show();
public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
if (eCode == 200) {
Toast.makeText(mContext, &分享成功.&, Toast.LENGTH_SHORT).show();
String eMsg = &&;
if (eCode == -101){
eMsg = &没有授权&;
Toast.makeText(mContext, &分享失败[& + eCode + &] & +
eMsg,Toast.LENGTH_SHORT).show();
分享到Qzone的方法和QQ方法相同,只需将参数名替换为Qzone即可
mController.postShare(mContext,SHARE_MEDIA.QZONE,
new SnsPostListener() {
在Android manifest XML中直接复制下面的代码:
&添加QQ及QQ空间到分享列表中
添加QQ在分享列表页中
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), &&,
&caab60104f0ba&);
qqSsoHandler.addToSocialSDK();
添加Qzone在分享列表页中
QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(), &&,
&caab60104f0ba&);
qZoneSsoHandler.addToSocialSDK();
使用QQ及QQ空间分享,将代码中的APPID及appkey全部替换为自己在QQ互联申请获取的APPID及appkey,否则分享完成后可能无法返回自己的应用,或弹出选择应用对话框
为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.
-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-libraryjars libs/SocialSDK_QQZone_2.jar
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep public class com.umeng.socialize.* {*;}
-keep public class javax.**
-keep public class android.webkit.**
-keep class com.facebook.**
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep public class [your_pkg].R$*{
public static final int *;
SSO(免登录)分享到新浪微博
注意一定保证在新浪微博上填写应用签名,参考文档
添加SSO必须的文件
将platforms/sina/libs中的SocialSDK_Sina.jar添加到工程libs中并将该jar加入到build path中,&由于4.2版本将remoteSSO文件打入SocialSDK_Sina.jar中,因此老版本升级过程中需要删除旧版本中的remoteSSO文件,否则会出现文件冲突
在代码中添加如下代码
mController.getConfig().setSsoHandler(new SinaSsoHandler());
&SSO(免登录)分享到腾讯微博
添加腾讯微博SSO所依赖的jar文件
1.解压已下载的zip文件,将platforms/tencentweibo/libs中SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar,,SocialSDK_tencentWB_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
2.在libs目录中找到SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar,,SocialSDK_tencentWB_3.jar文件,鼠标右键--&Add to Build Path.
在集成代码中添加如下代码
mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
1.手机中必须安装微博客户端V3.8.1及以上的版本才支持SSO功能.
2.腾讯微博的SSO没有回调。由于腾讯微博SSO没有提供回调,因此腾讯微博SSO不会在onActivityResult方法内被调用(腾讯微博授权流程不经过onActivityResult方法).
SSO(免登录)分享到人人
添加人人SSO所依赖的jar文件&
1.解压已下载的zip文件,将platforms/renren/libs/SocialSDK_renren_1.jar,SocialSDK_renren_2.jar,拷贝到你工程libs目录中。
2.在libs工程找到SocialSDK_renren_1.jar,SocialSDK_renren_2.jar文件,鼠标右键--&Add to Build Path。
在集成代码中添加如下代码
RenrenSsoHandler renrenSsoHandler = new RenrenSsoHandler(getActivity(),
&201874&, &f04a72a14c812d6132fcef&,
&3bf66e42db1e4fa0b737&);
mController.getConfig().setSsoHandler(renrenSsoHandler);
在SDK中的OAuth授权部分包含了Activity,为了程序能正常允许,请将以下Activity信息在您的应该工程Androidmanefest.xml中注册:
然后添加如下权限 :
1.手机中必须安装人人客户端V5.9.3及以上的版本才支持SSO功能。
2.由于人人SSO没有提供回调,因此人人SSO不会在onActivityResult方法内被调用(人人SSO授权流程不经过onActivityResult方法)。
暂无相关文章
相关搜索:
相关阅读:
相关频道:
Android教程最近更新WordPress › Open Social & WordPress Plugins
Search Plugins
Open Social
Login/Share with social networks: QQ, Sina, Baidu, Google, Live, DouBan, RenRen, KaiXin, XiaoMi, WeChat. No API, NO Register!
修正微信开放平台登陆
若干细节规范和优化
新增内部登陆按钮,方便老用户先登陆再绑定
若干兼容性更新
支持多网站绑定
优化了若干细节
修正了若干问题
修正微信二维码兼容
过滤分享时的一些干扰字符
修复语言(对应后台管理员设置的网站语言;个人在资料页设置的只对自己有效;不跟浏览器语言有关——函数不熟,希望能一劳永逸啦:)
更新微信二维码生成
取消自适应浏览器语言
可屏蔽Gavatar头像(如被墙)
默认虚假邮箱无法启用邮件通知
修复QQ在线小组件和啤酒链接
个人用户名允许修改一次
简化帐号及小工具的设置选项
增加几个非常实用的短代码
支持文章单独开放游客评论
游客评论支持反垃圾正则过滤
切换语言功能移到个人资料页
优化了一些细节和样式及翻译
增加微信开放平台登陆(未有帐号)
优化了分享按钮的提示问题
优化了一些体验小问题
优化分享接口可以自动附加文章批量图片
针对新版插件系统添加一个漂亮的图标
针对国内环境提供了登陆接口的代理及反向代理的功能
优化了推特的登陆函数和头像功能
优化了远程访问的接口函数
新用户默认角色指定为订阅者
新增转换其他同类插件用户数据
脚本加载方式改为可配置并后置
评论中的链接和外链统一为新窗
修正一些小问题
新增 Twitter/Github 登陆
优化配置保存方式防止更新丢失
精简大量代码和删除无关功能
登陆及分享按钮可以配置是否启用
修正头像显示的一些问题
增强了请求函数的兼容性
新增 CSDN/OSChina/Facebook 登陆
登陆方式弃用弹窗彻底改为跳转更稳定
新增评论回复邮件通知功能并带总开关
完善用户个人资料页的配置和整合度
增加了几个实用扩展功能和开关选项
添加了顶部和评论两个滚动小按钮
优化代码和规范修正一些翻译小错误
登陆页面以设置的callback参数为准避免混淆问题
修正链接带#时登陆后未自动刷新的问题
修正tooltip对页面非插件元素的影响
修正QQ头像的问题
修正 iOS 登陆时不会跳转的问题
增加以小米帐号登陆
增加短代码[os_hide],登陆用户可见
解决绑定功能逻辑不清晰的问题
解决豆瓣回调地址要完全匹配不能带参数的问题
支持评论需登陆设置下的登陆按钮的默认展示
登陆界面下通过开放帐号登陆可智能返回登陆前的页面
支持在个人资料页里绑定系统已注册的用户
哦,等等,上面这个功能原来一早已支持了的
解决更新后帐号配置被清空的问题
默认显示较清晰头像
分享按钮可添加在文章后
合并谷歌回调文件(旧文件可删)
修正登陆页面登陆问题
样式表和脚本放到图片目录下
规范了一下配置的变量名
修正头像函数调试模式下会出现警告的问题
更新了一下设定
增加参数设置、优化设置页面
增加入口,用户更容易修改邮箱
修正头像BUG,细节优化
增加语言切换
图片归类到一个目录
一些小修正
增加谷歌用户的头像
增加多LIVE、豆瓣、人人网、开心网
精简大量代码
第一个版本
Requires: 3.0 or higher
Compatible up to: 4.3.1
Last Updated:
4 weeks ago
Active Installs:
4.7 out of 5 stars
Not enough data
0 people say it works.
0 people say it's broken.
Code is Poetry.欢迎访问&&我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。
版权所有,转载本网站文章时请保留此信息。
收藏和分享:
所在分类:
热门图文推荐官方学习交流QQ群:&&&&站长QQ:
提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供站长技术、站长资讯等内容
提供常用开发手册和开发工具
您现在的位置:& >
hbuilder 支付宝和微信支付插件配置
导读:HBuilder 基座已实现H5 plus的支付API,现已集成支付宝快捷支付平台。使用支付功能前必须在支付宝网站开通快捷支付服务,并配置服务器生...
HBuilder 基座已实现H5 plus的支付API,现已集成支付宝快捷支付平台。使用支付功能前必须在支付宝网站开通&快捷支付&服务,并配置服务器生成订单信息。
支付流程如下:
plus API使用步骤:
1. 调用plus.payment.getChannels()获取系统支持的支付通道;
2. 调用plus.payment.request()发起支付请求。
var channel=null;
// 1. 获取支付通道
function plusReady(){
// 获取支付通道
plus.payment.getChannels(function(channels){
channel=channels[0];
},function(e){
alert(&获取支付通道失败:&+e.message);
document.addEventListener('plusready',plusReady,false);
var ALIPAYSERVER='http://demo./helloh5/payment/alipay.php?total=';
var WXPAYSERVER='http://demo./helloh5/payment/wxpay.php?total=';
// 2. 发起支付请求
function pay(id){
// 从服务器请求支付订单
var PAYSERVER='';
if(id=='alipay'){
PAYSERVER=ALIPAYSERVER;
}else if(id=='wxpay'){
PAYSERVER=WXPAYSERVER;
plus.nativeUI.alert(&不支持此支付通道!&,null,&捐赠&);
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
switch(xhr.readyState){
if(xhr.status==200){
plus.payment.request(channel,xhr.responseText,function(result){
plus.nativeUI.alert(&支付成功!&,function(){
},function(error){
plus.nativeUI.alert(&支付失败:& + error.code);
alert(&获取订单信息失败!&);
xhr.open('GET',PAYSERVER);
xhr.send();
注:第二步中获取到的订单数据需要在服务器通过支付宝平台获取PID和密钥生成。
HBuilder应用配置
分享插件添加方法具体步骤如下:
1. 双击应用的manifest.json文件,选中&使用第三方插件&
Ctrl+S保存。
点击manifest.json文件的&代码视图&,在permissions节点下添加Payment节点:
在plus -& distribute -& plugins 节点下添加payment节点:
alipay节点下配置支付宝相关信息
scheme值为iOS平台调用支付宝的&快捷支付&应用返回时用到的标识,推荐使用小写字符串。
weixin节点下配置微信支付相关信息
appid值为在微信开放平台申请应用的AppID值。
支付宝功能申请
登录支付宝账号,签约申请&移动快捷支付&功能,操作流程参考:
获取PID,参考教程:
生成密钥(公钥和私钥),并提交到支付宝,参考教程:
服务器生成订单示例(PHP)
完整示例代码已开源到
header('Content-type: text/plain');
// 获取支付金额
$amount='';
if($_SERVER['REQUEST_METHOD']=='POST'){
$amount=$_POST['total'];
$amount=$_GET['total'];
$total = floatval($amount);
if(!$total){
$total = 10;
// 对签名字符串转义
function createLinkstring($para) {
while (list ($key, $val) = each ($para)) {
$arg.=$key.'=&'.$val.'&&';
//去掉最后一个&字符
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
// 签名生成订单信息
function rsaSign($data) {
$priKey = &%私钥%&;
// 生成密钥时获取,直接使用pem文件的字符串
$res = openssl_get_privatekey($priKey);
openssl_sign($data, $sign, $res);
openssl_free_key($res);
$sign = base64_encode($sign);
$sign = urlencode($sign);
return $sign;
// 支付宝合作身份者ID,以2088开头的16位纯数字
$partner = &%PID%&;
// 支付宝开通快捷支付功能后可获取
// 支付宝账号
$seller_id = &payservice@dcloud.io&;
// 商品网址
$base_path = urlencode('http://demo./helloh5/payment/');
// 异步通知地址
$notify_url = urlencode('http://demo./helloh5/payment/notify.php');
// 订单标题
$subject = 'DCloud项目捐赠';
// 订单详情
$body = 'DCloud致力于打造HTML5最好的移动开发工具,包括终端的Runtime、云端的服务和IDE,同时提供各项配套的开发者服务。';
// 订单号,示例代码使用时间值作为唯一的订单ID号
$out_trade_no = date('YmdHis', time());
$parameter = array(
'service'
=& 'mobile.securitypay.pay',
// 必填,接口名称,固定值
'partner'
=& $partner,
// 必填,合作商户号
'_input_charset' =& 'UTF-8',
// 必填,参数编码字符集
'out_trade_no'
=& $out_trade_no,
// 必填,商户网站唯一订单号
'subject'
=& $subject,
// 必填,商品名称
'payment_type'
=& '1',
// 必填,支付类型
'seller_id'
=& $seller_id,
// 必填,卖家支付宝账号
'total_fee'
=& $total,
// 必填,总金额,取值范围为[0.01,]
'body'
// 必填,商品详情
'it_b_pay'
=& '1d',
// 可选,未付款交易的超时时间
'notify_url'
=& $notify_url,
// 可选,服务器异步通知页面路径
'show_url'
=& $base_path
// 可选,商品展示网站
//生成需要签名的订单
$orderInfo = createLinkstring($parameter);
$sign = rsaSign($orderInfo);
//生成订单
echo $orderInfo.'&sign=&'.$sign.'&&sign_type=&RSA&';
微信支付功能申请
使用微信支付功能需到微信开放平台申请移动应用并开通支付功能
申请应用后可以获取AppID和AppSecret值。
开通支付功能后可获取支付业务服务器配置数据
PARTNER:财付通商户号
PARTNER_KEY:财付通密钥
PAYSIGNKEY:支付签名密钥
服务器生成订单示例(PHP)
header('Access-Control-Allow-Origin: *');
header('Content-type: text/plain');
require_once(&classes/RequestHandler.class.php&);
require_once(&classes/ResponseHandler.class.php&);
require(&classes/client/TenpayHttpClient.class.php&);
//财付通商户号
$PARTNER = &财付通商户号&;
//财付通密钥
$PARTNER_KEY = &财付通密钥&;
$APP_ID=&移动应用AppID&;
//appsecret
$APP_SECRET= &移动应用AppSecret&;
//paysignkey(非appkey)
$APP_KEY=&支付签名密钥&;
//支付完成后的回调处理页面
$notify_url = &http://demo./helloh5/payment/wxnotify.php&;
// 获取支付金额
$amount='';
if($_SERVER['REQUEST_METHOD']=='POST'){
$amount=$_POST['total'];
$amount=$_GET['total'];
$total = floatval($amount);
if(!$total){
$total = 1;
$total = $total*100;
// 商品名称
$subject = 'DCloud项目捐赠';
// 订单号,示例代码使用时间值作为唯一的订单ID号
$out_trade_no = date('YmdHis', time());
$outparams =array();
//获取token值
$reqHandler = new RequestHandler();
$reqHandler-&init($APP_ID, $APP_SECRET, $PARTNER_KEY, $APP_KEY);
$Token= $reqHandler-&GetToken();
if ( $Token !='' ){
//=========================
//生成预支付单
//=========================
//设置packet支付参数
$packageParams =array();
$packageParams['bank_type']
= 'WX';
//支付类型
$packageParams['body']
= $subject;
//商品描述
$packageParams['fee_type']
= '1';
//银行币种
$packageParams['input_charset'] = 'GBK';
$packageParams['notify_url']
= $notify_url;
//通知地址
$packageParams['out_trade_no']
= $out_trade_no;
//商户订单号
$packageParams['partner']
= $PARTNER;
//设置商户号
$packageParams['total_fee']
//商品总金额,以分为单位
$packageParams['spbill_create_ip']= $_SERVER['REMOTE_ADDR'];
//支付机器IP
//获取package包
$package= $reqHandler-&genPackage($packageParams);
$time_stamp = time();
$nonce_str = md5(rand());
//设置支付参数
$signParams =array();
$signParams['appid']
$signParams['appkey']
=$APP_KEY;
$signParams['noncestr'] =$nonce_str;
$signParams['package']
=$package;
$signParams['timestamp']=$time_stamp;
$signParams['traceid']
= 'mytraceid_001';
//生成支付签名
$sign = $reqHandler-&createSHA1Sign($signParams);
//增加非参与签名的额外参数
$signParams['sign_method']
='sha1';
$signParams['app_signature']
//剔除appkey
unset($signParams['appkey']);
//获取prepayid
$prepayid=$reqHandler-&sendPrepay($signParams);
if ($prepayid != null) {
= 'Sign=WXPay';
//输出参数列表
$prePayParams =array();
$prePayParams['appid']
$prePayParams['appkey']
=$APP_KEY;
$prePayParams['noncestr']
=$nonce_str;
$prePayParams['package']
$prePayParams['partnerid']
=$PARTNER;
$prePayParams['prepayid']
=$prepayid;
$prePayParams['timestamp']
=$time_stamp;
//生成签名
$sign=$reqHandler-&createSHA1Sign($prePayParams);
$outparams['retcode']=0;
$outparams['retmsg']='ok';
$outparams['appid']=$APP_ID;
$outparams['noncestr']=$nonce_str;
$outparams['package']=$pack;
$outparams['partnerid']=$PARTNER;
$outparams['prepayid']=$prepayid;
$outparams['timestamp']=$time_stamp;
$outparams['sign']=$sign;
$outparams['retcode']=-2;
$outparams['retmsg']='错误:获取prepayId失败';
$outparams['retcode']=-1;
$outparams['retmsg']='错误:获取不到Token';
//Json 输出
ob_clean();
echo json_encode($outparams);
转载请注明(B5教程网)原文链接:/content-146-2429-1.html
网友评论:

我要回帖

更多关于 分享到微信插件 的文章

 

随机推荐