/**
* Chia sẻ WeChat, đăng nhập, thanh toán
* @author ansen
* @create thời gian 2015-08-29
*/
công cộng
lớp học
weixintrình bày
mở rộng
người thuyết trình{
công cộng
tĩnh
cuối cùng
số nguyên
kích thước hình ảnh=
32768
;
công cộng
tĩnh
cuối cùng
chuỗi app_id =
""
;
công cộng
tĩnh
cuối cùng
chuỗi bí mật=
""
;
riêng tư
iwxapi wxapi?
riêng tư
xem xem xem;
riêng tư
iusercontroller người dùngcontroller;
@ghi đè
công cộng
iview nhận iview() {
trở lại
iview;
}
công cộng
weixinpresenter(bối cảnhbối cảnh){
nếu như
(bối cảnh!=
vô giá trị
&& bối cảnh
trường hợp của
iview)
iview =(iview) ngữ cảnh;
nếu như
(wxapi==
vô giá trị
){
wxapi = wxapifactory.createwxapi(bối cảnh, app_id,
ĐÚNG VẬY
);
wxapi.registerapp(id_ứng dụng);
}
nếu như
(
vô giá trị
==người dùng điều khiển)
usercontroller=controllerfactory.getusercontroller();
}
/**
* Đăng nhập bằng WeChat (ba bước)
* 1. Đăng nhập được ủy quyền của WeChat
* 2. Lấy mã thông báo người dùng theo mã đăng nhập được ủy quyền
* 3. Lấy thông tin người dùng dựa trên token
* @param hoạt động
*/
công cộng
vô hiệu
đăng nhập(){
sendauth.req yêu cầu =
mới
sendauth.req();
yêu cầu. phạm vi =
"snsapi_userinfo"
;
req.state = string.valueof(system.currenttimemillis());
wxapi.sendreq(req);
}
/**
* Nhận mã thông báo truy cập WeChat
*/
công cộng
vô hiệu
getaccesstoken(chuỗi mã){
nếu như
(!usercontroller.islogin()){
usercontroller.getweixinaccesstoken(app_id, bí mật, mã,
mới
yêu cầu dữ liệu gọi lại(){
@ghi đè
công cộng
vô hiệu
datacallback(weixintoken obj){
nếu như
(đối tượng!=
vô giá trị
){
nếu như
(obj.geterrcode()==
0
){
nếu như
(mlog.debug)
iview.showtoast(
"Mã định danh duy nhất của người dùng được ủy quyền:"
+obj.getopenid());
getweixinuserinfo(đối tượng);
}
khác
{
iview.showtoast(obj.geterrmsg());
}
}
khác
{
}
}
});
}
khác
{
}
}
/**
* Nhận thông tin người dùng WeChat
*/
riêng tư
vô hiệu
lấy thông tin người dùng weixin(
cuối cùng
weixintoken obj){
usercontroller.getweixinuserinfo(obj.getaccess_token(), obj.getopenid(),
mới
requestdatacallback() {
@ghi đè
công cộng
vô hiệu
datacallback(registerb registerb){
registerb.setaccess_token(obj.getaccess_token());
registerb.settoken_expires_at(obj.getexpires_in());
nếu như
(registerb.geterrcode()==
0
){
registerb.setthird_type_name(hằng số.wei_xin);
thirdlogin(registerb);
}
khác
{
iview.showtoast(registerb.geterrmsg());
}
}
});
}
/**
* Gọi đến máy chủ của chúng tôi để đăng nhập
* @param registerb
*/
riêng tư
vô hiệu
đăng nhập thứ ba(registerb registerb){
usercontroller.thirdauth(registerb,
mới
yêu cầu dữ liệu gọi lại(){
@ghi đè
công cộng
vô hiệu
datacallback(người dùng){
nếu như
(checkcallbackdata(người dùng,
ĐÚNG VẬY
)){
nếu như
(người dùng.geterror()==người dùng.errornone){
iview.showtoast(r.string.login_success);
getappcontroller().sendloginchangeintent();
usercontroller.saveloginuser(người dùng, fileutil.getfilepath());
((iloginview)iview).tomain();
}
khác
{
iview.showtoast(người dùng.geterror_reason());
}
}
}
});
}
/**
* Chia sẻ trên WeChat
* @paramfriendcircle Có nên chia sẻ với vòng kết nối bạn bè không
*/
công cộng
vô hiệu
chia sẻ(
cuối cùng
Boolean
vòng tròn bạn bè,
cuối cùng
videob videob){
mới
tải picthread(videob.getcover_url(),
mới
trình xử lý(){
@ghi đè
công cộng
vô hiệu
handlemessage(tin nhắn msg) {
byte
[] byte=(
byte
[]) tin nhắn.obj;
nếu như
(byte.length>kích thước hình ảnh){
iview.showtoast(r.string.image_no_big);
trở lại
;
}
hệ thống.out.println(
"Độ dài hình ảnh:"
+byte.chiều dài);
wxvideoobject videoobject =
mới
wxvideoobject();
videoobject.videourl = videob.getshare_url() + hằng số.wei_xin +
"&chia_sẻ_từ="
+com.kaka.utils.constants.android;
wxmediamessage wxmessage =
mới
wxmediamessage(đối tượng video);
wxmessage.title = videob.getcontent();
wxmessage.thumbdata = byte;
sendmessagetowx.req yêu cầu =
mới
gửi tin nhắn đến owx.req();
req.transaction = string.valueof(videob.getid() + system.currenttimemillis());
yêu cầu.message = wxmessage;
req.scene = friendscircle ? sendmessagetowx.req.wxscenetimeline : sendmessagetowx.req.wxscenesession;
wxapi.sendreq(req);
}
}).bắt đầu();
}
riêng tư
lớp học
tải picthread
mở rộng
chủ đề{
riêng tư
chuỗi url;
riêng tư
giao dịch giao dịch;
công cộng
loadpicthread(chuỗi url,trình xử lý trình xử lý){
cái này
.url=url;
cái này
.người chia bài=người chia bài;
}
@ghi đè
công cộng
vô hiệu
chạy(){
thử
{
url ảnh =
mới
url(url);
httpurlconnection conn = (httpurlconnection)picurl.openconnection();
conn.setconnecttimeout(
6000
);
conn.setdoinput(
ĐÚNG VẬY
);
conn.setusecaches(
SAI
);
conn.connect();
bitmap bmp=bitmapfactory.decodestream(conn.getinputstream());
bytearrayoutputstream đầu ra =
mới
luồng đầu ra bytearray();
bmp.compress(bitmap.compressformat.jpeg,
100
, đầu ra);
số nguyên
tùy chọn =
100
;
trong khi
(đầu ra.tobytearray().length > image_size && tùy chọn !=
10
) {
đầu ra. thiết lập lại();
bmp.compress(bitmap.compressformat.jpeg, tùy chọn, đầu ra);
tùy chọn -=
10
;
}
bmp. tái chế();
byte
[] kết quả = đầu ra.tobytearray();
đầu ra. đóng();
tin nhắn message=handler.obtainmessage();
message.obj=kết quả;
message.sendtotarget();
}
nắm lấy
(ngoại lệ e) {
e.printstacktrace();
}
}
}
công cộng
Boolean
iswxappinstalled(){
trở lại
wxapi.iswxappinstalled();
}
công cộng
vô hiệu
thanh toán wx
cuối cùng
hoạt động cơ sở, chuỗi order_id, chuỗi paytype){
hoạt động.hiển thịtiến trình(
""
);
controllerfactory.getwalletscontroller().getpayments(order_id, paytype,
mới
requestdatacallback() {
@ghi đè
công cộng
vô hiệu
datacallback(thanh toánsp obj) {
nếu như
(kiểm tra dữ liệu gọi lại(obj,
ĐÚNG VẬY
)){
nếu như
(obj.geterror()==obj.errornone){
yêu cầu trả lương yêu cầu =
mới
yêu cầu trả lương();
req.appid = obj.getappid();
req.noncestr=obj.getnoncestr();
req.packagevalue=obj.getpackage_value();
req.sign=obj.getsign();
req.partnerid=obj.getpartnerid();
req.prepayid=obj.getprepayid();
req.timestamp=obj.gettimestamp();
wxapi.registerapp(obj.getappid());
wxapi.sendreq(req);
mlog.i(
"Ansen"
,
"Bắt đầu thanh toán WeChat..."
);
iview.showtoast(
"Bắt đầu thanh toán WeChat..."
);
}
}
khác
{
iview.showtoast(obj.geterror_reason());
}
hoạt động.ẩntiếntrình();
}
});
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!