下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎样在AndroidApp中集成支付宝和微信支付功能
这篇文章主要介绍了怎样在AndroidApp中集成支付宝和微信支付功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让在下带着大家一起了解一下。集成支付宝支付没想到现在App里集成支付宝是这么的简单,我还折腾了好久…好了,开始,假设你已经完成了支付宝那些繁杂的申请啥的工作,进入开发了。首先,去下载官方的DEMO:App支付客户端DEMO&SDK。导入开发资源解压后把里面的jar包拿出来放到你工程的lib目录下,如图然后进入工程的“ProjectStructure”,在appmodule下选择“Filedependency”,将libs目录下的alipaySDK-xxxxxxxx.jar导入,或者在appmodule下的build.gradle下手动添加依赖,如下代码所示:
compile
files('libs/alipaySdk-20170725.jar')
修改AndroidManifest文件复制进去就行<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden"
>
</activity>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden"
>
</activity>声明权限<uses-permission
android:name="android.permission.INTERNET"
/>
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>好了,准备工作基本完成。支付接口的调用这里参考下给的Demo。由于支付包的Demo给的是本地加密的方式,并且不推荐使用这种方法,所以我们只需要用的其中的部分代码就好了。首先,把PayResult.java这个类复制到你的项目里。代码如下:public
class
PayResult
{
private
String
resultStatus;
private
String
result;
private
String
memo;
public
PayResult(Map<String,
String>
rawResult)
{
if
(rawResult
==
null)
{
return;
}
for
(String
key
:
rawResult.keySet())
{
if
(TextUtils.equals(key,
"resultStatus"))
{
resultStatus
=
rawResult.get(key);
}
else
if
(TextUtils.equals(key,
"result"))
{
result
=
rawResult.get(key);
}
else
if
(TextUtils.equals(key,
"memo"))
{
memo
=
rawResult.get(key);
}
}
}
@Override
public
String
toString()
{
return
"resultStatus={"
+
resultStatus
+
"};memo={"
+
memo
+
"};result={"
+
result
+
"}";
}
/**
*
@return
the
resultStatus
*/
public
String
getResultStatus()
{
return
resultStatus;
}
/**
*
@return
the
memo
*/
public
String
getMemo()
{
return
memo;
}
/**
*
@return
the
result
*/
public
String
getResult()
{
return
result;
}
}然后调支付接口。PayTask对象主要为商户提供订单支付、查询功能,及获取当前开发包版本号。获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),private
static
final
int
SDK_PAY_FLAG
=
1;
//
订单信息
final
String
orderInfo
=
info;
Runnable
payRunnable
=
new
Runnable()
{
@Override
public
void
run()
{
PayTask
alipay
=
new
PayTask(PayDemoActivity.this);
Map<String,
String>
result
=
alipay.payV2(orderInfo,
true);
Message
msg
=
new
Message();
msg.what
=
SDK_PAY_FLAG;
msg.obj
=
result;
mHandler.sendMessage(msg);
}
};
Thread
payThread
=
new
Thread(payRunnable);
payThread.start();注意下orderInfo这个变量,这个值是由通过向后台请求返回的值。这里需要后台注意的是,写的时候看好App支付请求参数说明这个文档。然后是支付结果的获取与处理。@SuppressLint("HandlerLeak")
private
Handler
mHandler
=
new
Handler()
{
@SuppressWarnings("unused")
public
void
handleMessage(Message
msg)
{
switch
(msg.what)
{
case
SDK_PAY_FLAG:
{
@SuppressWarnings("unchecked")
PayResult
payResult
=
new
PayResult((Map<String,
String>)
msg.obj);
/**
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
String
resultInfo
=
payResult.getResult();//
同步返回需要验证的信息
String
resultStatus
=
payResult.getResultStatus();
//
判断resultStatus
为9000则代表支付成功
if
(TextUtils.equals(resultStatus,
"9000"))
{
//
该笔订单是否真实支付成功,需要依赖服务端的异步通知。
Toast.makeText(PayDemoActivity.this,
"支付成功",
Toast.LENGTH_SHORT).show();
}
else
{
//
该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(PayDemoActivity.this,
"支付失败",
Toast.LENGTH_SHORT).show();
}
break;
}
default:
break;
}
};
};然后就好了。结束。集成微信支付微信支付还是好弄的,就是先该注册的注册,该申请的申请,这个不是本文的重点。因为微信有个支付回调的问题,我的做法就是在项目的x.x.x.wxapi包路径中实现WXPayEntryActivity类(切记包名或类名一定要一致,否则会造成无法回调)。代码如下:public
class
WXPayEntryActivity
extends
Activity
implements
IWXAPIEventHandler{
private
static
final
String
TAG
=
"WXPayEntryActivity";
private
IWXAPI
api;
@Override
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
api
=
WXAPIFactory.createWXAPI(this,
Constants.APP_ID);
api.handleIntent(getIntent(),
this);
/*
*
在这里去做跟后台服务器的请求,
*
获取需要的签名信息,然后调起微信支付。
**/
}
@Override
protected
void
onNewIntent(Intent
intent)
{
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent,
this);
}
@Override
public
void
onReq(BaseReq
req)
{
}
@Override
public
void
onResp(BaseResp
resp)
{
Log.d(TAG,
"onPayFinish,
errCode
=
"
+
res
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5A级景区旅游档案管理存在的问题及对策
- 3D打印技术在心血管疾病中的应用进展
- 304L不锈钢法兰配35CrMo紧固件腐蚀分析
- 21世纪初中国农村居民国内旅游流要素-结构耦合关系及时空演化分析
- 2018欧洲女子数学奥林匹克第1题探究
- 18.5 MW样机定子线圈结构及嵌线制造工艺分析
- 110 kV复合外套金属氧化锌避雷器爆炸故障分析
- 1000MW级机组接入220kV电网技术条件研究
- 高血压患者如何保持自我价值感
- 医疗机构内部传染病的防控策略
- DB65T 3952-2016反恐怖防范设置规范 学校
- 2023年度世纪杯演讲比赛题目
- 医院重点部门和部位消防安全要求
- 游泳课进中小学工作方案
- 小学劳动教育校本课程的开发与实践 论文
- 周围性面神经麻痹的护理
- 真空测漏仪操作规程
- 短视频营销与运营课程标准
- 水利水电可持续发展的新理念
- 控规实施评估报告稿附件
- GB-T9341-2008塑料弯曲性能的测定.pdf
评论
0/150
提交评论