android 支付宝和微信支付封装,Android开发微信和支付宝支付教程

今天想跟大家分享一下Android开发中的支付功能,基本上所有的商城类项目都会用到微信支付,支付宝支付,相信很多初学者在开发的过程中也曾遇到跟我一样的情况:看完开发文档之后,做出来的功能怎么调用不起来,经过后来的反复调试才成功的完成支付功能,下面我就简单的来说说微信支付和支付宝支付的注意事项。

项目的下载链接我也放在结尾,有需要的朋友可以下载看看,欢迎大家提出意见。

微信支付注意事项:

1.创建项目的时候填写的应用包名,相信这个没有开发者会出错。

2.创建项目的时候填写的签名文件的签名串,填写的是签名文件的MD5值,值得注意的是,微信要求去掉MD5值当中的冒号,并且改大写为小写,当初我就是在这个上面犯了错,当时的微信文档也没有仔细说明。、

3.完成功能测试的时候,需要使用签名文件签名后的APK进行测试,否则会调用不起来。(不使用签名文件签名,有可能能调起第一次支付,后面就调用不起来了)

4.检查核对APP_ID是否正确,在项目过程中有多个地方需要用到APP_ID,AndroidManifest文件中也需要使用到。

支付宝支付注意事项:

1.其实支付宝支付挺简单的,没有微信那么复杂,只要检查key以及公钥和私钥的正确性就行了,然后按照demo来一步步集成就能实现功能了。

下面不多说废话了,上代码说明:‘’

xml文件就两个按钮,就不贴出来了,直接上Java代码:

微信支付代码:

// 微信支付必须参数

String appId = "wxd930ea5d5a258f4f";

String partnerId = "";

String prepayId = "";

String packageValue = "";

String nonceStr = "";

String timeStamp = "";

String sign = "";

这是微信支付需要的参数,少一个或者有一个值为空都不行,参数是有了,下面就是发起微信支付了,这里我自己写了工具类WXPayHelper用来封装微信支付,这样方便在多个地方调用微信支付功能。

/**

* 发起微信支付

*/

private void toWxPay(){

PayConfig payConfig = new PayConfig();

payConfig.setAppid(appId);

payConfig.setPartnerid(partnerId);

payConfig.setNoncestr(nonceStr);

payConfig.setPrepayid(prepayId);

payConfig.setPack(packageValue);

payConfig.setPaySign(sign);

payConfig.setTimestamp(timeStamp);

WXPayHelper payHelper = new WXPayHelper(this);

payHelper.doPay(payConfig);

}

下面是WXPayHelper工具类中的操作:

/**

* 使用后台返回的支付参数支付

*

* @param payConfig

*/

public void doPay(PayConfig payConfig) {

req.appId = payConfig.getAppid();

req.partnerId = payConfig.getPartnerid();

req.prepayId = payConfig.getPrepayid();

req.packageValue = payConfig.getPack();

req.nonceStr = payConfig.getNoncestr();

req.timeStamp = payConfig.getTimestamp();

req.sign = payConfig.getPaySign();

PayReq request = new PayReq();

request.appId = req.appId;

request.partnerId = req.partnerId;

request.prepayId= req.prepayId;

request.packageValue = req.packageValue;

request.nonceStr= req.nonceStr;

request.timeStamp= req.timeStamp;

request.sign= req.sign;

// 发起支付

msgApi.sendReq(req);

}

支付结果在回调页面WXPayEntryActivity展示:

/**

* 支付结果回调

* @param resp

*/

@Override

public void onResp(BaseResp resp) {

if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

int code = resp.errCode;

switch (code) {

case 0: // 支付成功

break;

case -1: // 支付失败

break;

case -2: // 支付取消

break;

default:

break;

}

}

}

AndroidManifest文件中需要注册:

android:name=".wxapi.WXPayEntryActivity"

android:exported="true"

android:launchMode="singleTop"

android:screenOrientation="portrait" />

好了,微信支付功能基本上就实现了

下面我们讲讲支付宝支付:

// 支付宝支付

String payData = "";

支付宝支付的参数,在这里我为什么只用一个参数呢,我这里跟支付宝官网给出的demo有点不一样,demo的参数是全部分开的,一个一个嵌入,而我这里只传了一个payData参数是因为后台人员已经把支付宝支付所需参数拼接好返回给前端了,所以对于支付宝怎么传参数,就看开发者自己定义了

private void getAilPay(String payData) {

// 完整的符合支付宝参数规范的订单信息

final String payInfo = payData;

Runnable payRunnable = new Runnable() {

@Override

public void run() {

// 构造PayTask 对象

PayTask alipay = new PayTask(MainActivity.this);

// 调用支付接口,获取支付结果

String result = alipay.pay(payInfo);

Message msg = new Message();

msg.what = SDK_PAY_FLAG;

msg.obj = result;

mHandler.sendMessage(msg);

}

};

// 必须异步调用

Thread payThread = new Thread(payRunnable);

payThread.start();

}

发起支付宝支付,这一步在支付宝的demo上也有,下面就是回调了

@Override

public boolean handleMessage(Message msg) {

switch (msg.what) {

case SDK_PAY_FLAG: {

PayResult payResult = new PayResult((String) msg.obj);

// 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签

String resultInfo = payResult.getResult();

String resultStatus = payResult.getResultStatus();

// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档

if (TextUtils.equals(resultStatus, "9000")) {

Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();

} else {

// 判断resultStatus 为非“9000”则代表可能支付失败

// “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)

if (TextUtils.equals(resultStatus, "8000")) {

Toast.makeText(MainActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();

} else {

// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误

Toast.makeText(MainActivity.this, "支付失败", Toast.LENGTH_SHORT).show();

}

}

break;

}

case SDK_CHECK_FLAG: {

Toast.makeText(MainActivity.this, "检查结果为:" + msg.obj, Toast.LENGTH_SHORT).show();

break;

}

}

return false;

}

AndroidManifest文件中需要注册:

android:name="com.alipay.sdk.app.H5PayActivity"

android:configChanges="orientation|keyboardHidden|navigation"

android:exported="false"

android:screenOrientation="behind"

android:windowSoftInputMode="adjustResize|stateHidden" >

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS微信支付封装是指在iOS平台上对微信支付支付宝支付功能进行封装和集成,方便开发者在自己的应用中集成使用这两种支付方式。 首先,对于微信支付封装开发者可以使用微信官方提供的iOS SDK进行集成。该SDK包含了微信支付的各种功能和接口,如创建支付订单、发起支付请求、支付结果回调等。开发者只需按照微信提供的文档进行相应的调用和配置,即可实现在自己的应用中使用微信支付功能。 其次,对于支付宝支付封装,同样可以使用支付宝官方提供的iOS SDK进行集成。该SDK包含了支付宝支付的相关功能和接口,如创建支付订单、发起支付请求、支付结果回调等。开发者只需按照支付宝提供的文档进行相应的调用和配置,即可实现在自己的应用中使用支付宝支付功能。 通过对iOS微信支付宝的封装开发者可以在自己的应用中方便地集成和使用微信支付支付宝支付功能,提供给用户更多的支付方式选择,方便用户进行支付操作。同时,封装的过程也可以提高开发效率和代码的复用性,减少开发者的开发工作量。 需要注意的是,为了保证支付过程的安全性和可靠性,开发者在集成和使用支付功能时应按照相关的规范和指引进行操作,确保支付过程的顺利完成和支付信息的安全保密。同时,开发者还需要了解和掌握各种支付方式的使用规则和注意事项,方便根据实际需求进行相应的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值