|
@@ -1,6 +1,19 @@
|
|
|
-import { SendAuthReq, WXApi, WXAPIFactory } from '@tencent/wechat_open_sdk';
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ PayReq,
|
|
|
|
|
+ SendAuthReq,
|
|
|
|
|
+ SendMessageToWXReq,
|
|
|
|
|
+ WXApi,
|
|
|
|
|
+ WXAPIFactory,
|
|
|
|
|
+ WXImageObject,
|
|
|
|
|
+ WXMediaMessage,
|
|
|
|
|
+ WXWebpageObject
|
|
|
|
|
+} from '@tencent/wechat_open_sdk';
|
|
|
import { ContextHelper } from '../ContextHelper';
|
|
import { ContextHelper } from '../ContextHelper';
|
|
|
import { IBestToast } from '@ibestservices/ibest-ui';
|
|
import { IBestToast } from '@ibestservices/ibest-ui';
|
|
|
|
|
+import { WeChatPayParams } from '../../model/WechatModel';
|
|
|
|
|
+import { ShareParams } from '../../model/JDBModel';
|
|
|
|
|
+import { ImageUtil } from '../ImageUtil';
|
|
|
|
|
+import { fileUri } from '@kit.CoreFileKit';
|
|
|
|
|
|
|
|
export class WechatUtil {
|
|
export class WechatUtil {
|
|
|
TAG: string = 'WeChatLoginUtils';
|
|
TAG: string = 'WeChatLoginUtils';
|
|
@@ -9,14 +22,98 @@ export class WechatUtil {
|
|
|
static appSecret = '9207b18860aef2e784d14b413bf1ff79'
|
|
static appSecret = '9207b18860aef2e784d14b413bf1ff79'
|
|
|
static wechatApi: WXApi;
|
|
static wechatApi: WXApi;
|
|
|
|
|
|
|
|
- static init() {
|
|
|
|
|
|
|
+ static getWechatApi(): WXApi {
|
|
|
if (!WechatUtil.wechatApi) {
|
|
if (!WechatUtil.wechatApi) {
|
|
|
WechatUtil.wechatApi = WXAPIFactory.createWXAPI(WechatUtil.WECHAT_APP_ID_VALUE);
|
|
WechatUtil.wechatApi = WXAPIFactory.createWXAPI(WechatUtil.WECHAT_APP_ID_VALUE);
|
|
|
}
|
|
}
|
|
|
|
|
+ return WechatUtil.wechatApi;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- static getWechatApi(): WXApi {
|
|
|
|
|
- return WechatUtil.wechatApi;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信登录
|
|
|
|
|
+ * @returns
|
|
|
|
|
+ */
|
|
|
|
|
+ static async handleWeChatLogin(): Promise<void> {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let req = new SendAuthReq();
|
|
|
|
|
+ req.isOption1 = false;
|
|
|
|
|
+ req.nonAutomatic = true;
|
|
|
|
|
+ req.scope = 'snsapi_userinfo'; //应用授权作用域,获取用户个人信息则填写 snsapi_userinfo (只能填 snsapi_userinfo)
|
|
|
|
|
+ req.state = 'none';
|
|
|
|
|
+ req.transaction = 'test123';
|
|
|
|
|
+ let finished = await WechatUtil.getWechatApi().sendReq(ContextHelper.UIAbilityContext, req);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ IBestToast.show({ message: '微信登录失败,请重试', type: 'fail' });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信支付
|
|
|
|
|
+ * @returns
|
|
|
|
|
+ */
|
|
|
|
|
+ static async handleWeChatPay(param: WeChatPayParams) {
|
|
|
|
|
+ let req = new PayReq()
|
|
|
|
|
+ req.appId = param.appid
|
|
|
|
|
+ req.partnerId = param.partnerid
|
|
|
|
|
+ req.prepayId = param.prepayid
|
|
|
|
|
+ req.packageValue = param.package
|
|
|
|
|
+ req.nonceStr = param.noncestr
|
|
|
|
|
+ req.timeStamp = param.timestamp.toString()
|
|
|
|
|
+ req.sign = param.sign
|
|
|
|
|
+ await WechatUtil.getWechatApi().sendReq(ContextHelper.UIAbilityContext, req)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信分享
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信分享
|
|
|
|
|
+ */
|
|
|
|
|
+ static async handleWeChatShare(shareData: ShareParams) {
|
|
|
|
|
+ // 下载并获取图片URI
|
|
|
|
|
+ const thumbBuffer = await ImageUtil.downLoadToBoxWithQuality(shareData.imageUrl!, 30)
|
|
|
|
|
+
|
|
|
|
|
+ // 创建网页对象,包含跳转链接
|
|
|
|
|
+ const webpageObject = new WXWebpageObject()
|
|
|
|
|
+ webpageObject.webpageUrl = shareData.href // 设置跳转链接
|
|
|
|
|
+
|
|
|
|
|
+ let mediaMessage = new WXMediaMessage()
|
|
|
|
|
+ mediaMessage.title = shareData.title || '「接单宝」✔ 任务简单 ✔ 上线就能赚✔ 提现快速到账'
|
|
|
|
|
+ mediaMessage.description = shareData.summary || '「接单宝」✔ 任务简单 ✔ 上线就能赚✔ 提现快速到账'
|
|
|
|
|
+ mediaMessage.thumbData = new Uint8Array(thumbBuffer!)
|
|
|
|
|
+ // mediaMessage.thumbMediaObject = imageObject // 设置缩略图
|
|
|
|
|
+ mediaMessage.mediaObject = webpageObject // 设置网页对象
|
|
|
|
|
+
|
|
|
|
|
+ let req = new SendMessageToWXReq()
|
|
|
|
|
+ req.scene = shareData.scene == 'WXSceneSession' ? SendMessageToWXReq.WXSceneSession :
|
|
|
|
|
+ SendMessageToWXReq.WXSceneTimeline // 使用传入的scene参数
|
|
|
|
|
+ req.message = mediaMessage
|
|
|
|
|
+
|
|
|
|
|
+ await WechatUtil.getWechatApi().sendReq(ContextHelper.UIAbilityContext, req)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信分享
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 微信分享
|
|
|
|
|
+ */
|
|
|
|
|
+ static async handleWeChatShareTest(shareData: ShareParams) {
|
|
|
|
|
+ let imageObject = new WXImageObject()
|
|
|
|
|
+
|
|
|
|
|
+ imageObject.uri = fileUri.getUriFromPath(await ImageUtil.downLoadToBox(shareData.imageUrl!));
|
|
|
|
|
+
|
|
|
|
|
+ let mediaMessage = new WXMediaMessage()
|
|
|
|
|
+ mediaMessage.mediaObject = imageObject
|
|
|
|
|
+
|
|
|
|
|
+ let req = new SendMessageToWXReq()
|
|
|
|
|
+ req.scene = SendMessageToWXReq.WXSceneSession
|
|
|
|
|
+ req.message = mediaMessage
|
|
|
|
|
+
|
|
|
|
|
+ await WechatUtil.getWechatApi().sendReq(ContextHelper.UIAbilityContext, req)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|