【移动应用开发技术】怎样在Android App中集成支付宝和微信支付功能_第1页
【移动应用开发技术】怎样在Android App中集成支付宝和微信支付功能_第2页
【移动应用开发技术】怎样在Android App中集成支付宝和微信支付功能_第3页
【移动应用开发技术】怎样在Android App中集成支付宝和微信支付功能_第4页
【移动应用开发技术】怎样在Android App中集成支付宝和微信支付功能_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎样在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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论