package
com.tianxia.lib.baseworld.alipay;
import
java.net.URLEncoder;
import
java.text.SimpleDateFormat;
import
java.util.Date;
import
com.tianxia.lib.baseworld.R;
import
android.app.Activity;
import
android.app.ProgressDialog;
import
android.content.DialogInterface;
import
android.os.Handler;
import
android.os.Message;
import
android.view.KeyEvent;
import
android.widget.Toast;
public
class
AlixPay
{
static
String
TAG =
"AlixPay"
;
private
Activity
mActivity;
public
AlixPay(Activity
activity) {
mActivity
= activity;
}
private
ProgressDialog
mProgress =
null
;
private
Handler
mHandler =
new
Handler()
{
public
void
handleMessage(Message
msg) {
try
{
String
strRet = (String) msg.obj;
switch
(msg.what)
{
case
AlixId.RQF_PAY:
{
closeProgress();
BaseHelper.log(TAG,
strRet);
try
{
String
memo =
"memo="
;
int
imemoStart
= strRet.indexOf(
"memo="
);
imemoStart
+= memo.length();
int
imemoEnd
= strRet.indexOf(
";result="
);
memo
= strRet.substring(imemoStart, imemoEnd);
ResultChecker
resultChecker =
new
ResultChecker(strRet);
int
retVal
= resultChecker.checkSign();
if
(retVal
== ResultChecker.RESULT_CHECK_SIGN_FAILED) {
BaseHelper.showDialog(
mActivity,
"提示"
,
mActivity.getResources().getString(
R.string.check_sign_failed),
android.R.drawable.ic_dialog_alert);
}
else
{
BaseHelper.showDialog(mActivity,
"提示"
,
memo,
R.drawable.infoicon);
}
}
catch
(Exception
e) {
e.printStackTrace();
BaseHelper.showDialog(mActivity,
"提示"
,
strRet,
R.drawable.infoicon);
}
}
break
;
}
super
.handleMessage(msg);
}
catch
(Exception
e) {
e.printStackTrace();
}
}
};
void
closeProgress()
{
try
{
if
(mProgress
!=
null
)
{
mProgress.dismiss();
mProgress
=
null
;
}
}
catch
(Exception
e) {
e.printStackTrace();
}
}
public
void
pay()
{
MobileSecurePayHelper
mspHelper =
new
MobileSecurePayHelper(mActivity);
boolean
isMobile_spExist
= mspHelper.detectMobile_sp();
if
(!isMobile_spExist)
return
;
if
(!checkInfo())
{
BaseHelper.showDialog(mActivity,
"提示"
,
"缺少partner或者seller,"
,
R.drawable.infoicon);
return
;
}
try
{
String
orderInfo = getOrderInfo();
String
signType = getSignType();
String
strsign = sign(signType, orderInfo);
strsign
= URLEncoder.encode(strsign);
String
info = orderInfo +
"&sign="
+
"\""
+
strsign +
"\""
+
"&"
+
getSignType();
MobileSecurePayer
msp =
new
MobileSecurePayer();
boolean
bRet
= msp.pay(info, mHandler, AlixId.RQF_PAY, mActivity);
if
(bRet)
{
closeProgress();
mProgress
= BaseHelper.showProgress(mActivity,
null
,
"正在支付"
,
false
,
true
);
}
else
;
}
catch
(Exception
ex) {
Toast.makeText(mActivity,
R.string.remote_call_failed,
Toast.LENGTH_SHORT).show();
}
}
private
boolean
checkInfo()
{
String
partner = PartnerConfig.PARTNER;
String
seller = PartnerConfig.SELLER;
if
(partner
==
null
||
partner.length() <=
0
||
seller ==
null
||
seller.length() <=
0
)
return
false
;
return
true
;
}
String
getOrderInfo() {
String
strOrderInfo =
"partner="
+
"\""
+
PartnerConfig.PARTNER +
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"seller="
+
"\""
+
PartnerConfig.SELLER +
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"out_trade_no="
+
"\""
+
getOutTradeNo() +
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"subject="
+
"\""
+
mActivity.getString(R.string.donate_subject) +
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"body="
+
"\""
+
mActivity.getString(R.string.donate_body) +
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"total_fee="
+
"\""
+
"10.00"
+
"\""
;
strOrderInfo
+=
"&"
;
strOrderInfo
+=
"notify_url="
+
"\""
return
strOrderInfo;
}
String
getOutTradeNo() {
SimpleDateFormat
format =
new
SimpleDateFormat(
"MMddHHmmss"
);
Date
date =
new
Date();
String
strKey = format.format(date);
java.util.Random
r =
new
java.util.Random();
strKey
= strKey + r.nextInt();
strKey
= strKey.substring(
0
,
15
);
return
strKey;
}
String
getSignType() {
String
getSignType =
"sign_type="
+
"\""
+
"RSA"
+
"\""
;
return
getSignType;
}
String
sign(String signType, String content) {
return
Rsa.sign(content,
PartnerConfig.RSA_PRIVATE);
}
static
class
AlixOnCancelListener
implements
DialogInterface.OnCancelListener
{
Activity
mcontext;
AlixOnCancelListener(Activity
context) {
mcontext
= context;
}
public
void
onCancel(DialogInterface
dialog) {
mcontext.onKeyDown(KeyEvent.KEYCODE_BACK,
null
);
}
}
}
相关推荐
android集成了APP支付宝功能的Demo,通过测试
cordova-plugin-alipay, 支付宝App支付插件,支持Android、iOS
Android支付宝授权,支付宝登录demo,非常简洁高效集成
在App内集成支付宝支付。APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内。如果用户没有安装支付宝APP,商家APP内会...
适用于商家在App应用中集成支付宝支付功能。 商家APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付...
第三方SDK集成库,支持 授权/分享/支付 等功能 授权 目前支持 微信/QQ/新浪微博,客户端只需要配置APPID(新浪微博) 分享 目前支持 微信(会话/朋友圈/收藏),QQ/QZone,新浪微博 支付 目前支持 支付宝/微信支付 对于...
下面这篇文章主要给大家介绍了关于如何在Android App中集成支付宝和微信支付功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友下面随着小编来一起学习学习吧
AppPay for Android 是一个专注于App支付的库,将主流的官方App支付集成方式进行封装、简化,让实现App支付简单到只需几句代码。 AppPay目前包括的库 WXPay 封装的微信支付库,使用起来更简单。 AliPay 封装...
使用说明:安装到手机,直接输入你想签名的apk 的包名,获取签名
仿京东商城系列14------用户登录以及app登录拦截 仿京东长城系列15------用户注册,SMSSDK集成 仿京东商城系列16------支付SDK集成 仿京东商城系列17------支付功能实现 仿京东商城系列18------xml文件读取(地址...
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS,Android,H5,以及各种小程序(微信/支付宝/百度/头条/ QQ /钉钉)等多个平台。 uni-app在手,做啥都不愁。甚至不跨端,也...
随着移动支付的兴起,在我们的app’中,会经常有集成支付的需求.这时候一般都会采用微信和支付宝的sdk 来集成 (一)支付宝支付 在使用支付宝支付的过程中,我们是在服务器端生成订单,客户端访问接口,并得到订单信息,...
1、集成友盟分享,登录,统计,推送; 2、集成zxing扫描二维码和生成二维码; 3、集成sqlite数据库存储信息;...11、支付宝和微信支付(均未签约无法真实支付,但是支付宝可以调用沙箱应用完成支付流程)
最近在做APP接入支付宝支付的功能,找到一个不错的资料,里面是Android和iOS接入支付宝支付功能的相关demo源码。
Ionic-bate(测试版)开发的校园代领快递APP,Ionic可同时部署...缺点就是现有的第三方SDK比如百度地图,支付宝,推送等都还是JS SDK,在Typescript上集成不太方便,So,坐等Typescript发展&普及&Ionic2;稳定版的推出。
7.适应Android苹果APP、H5网页、小程序、QQ小程序,理论适应所有小程序平台,开发更多支持... 8.拥有管理员页面,完成权限分级,整个网站只能在APP中管理。 9.独特的付费广告模块:文章拉流广告、横幅广告、启动图...
商城基于thinkphp6+element-ui+uniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。...
项目内所有数据直接在机锋网获取 本项目源码为商业源码 售价50专家币 以下截图是项目编译后的工程截图 截图中的功能都已经实现 识货的朋友可以在后台在线充值后下载涉及模块&技术通知栏网络检测支付宝集成登录注册...
Android 微信、支付App支付SDK IJPay 让支付触手可及,实现微信、支付宝系列支付 博客 简易的微信公众号管理平台 搭建属于自己的网穿透工具 SpringBoot 2.x 集成QQ邮箱、网易系邮箱、Gmail邮箱发送邮件 项目...