1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android 支付宝 微信 银联

Android 支付宝 微信 银联

时间:2020-10-02 09:55:27

相关推荐

Android 支付宝 微信 银联

AndroidPay

1.微信SDK更新到6.8.0,支持Android 11吊起微信。

2.调整微信配置说明

3.调整gradle为7.0.2

4.调整JSON解析

5.handleIntent新增异常捕捉

功能介绍

1.微信支付、登录、分享功能

2.支付宝支付、授权登录(极简版+完整版本)功能

3.银联支付功能

软件架构

Builder模式

资源

使用说明

Dependencies

./build.gradle | settings.gradle配置如下

repositories {...maven { url 'https://jitpack.io' }}

./app/build.gradle配置如下

dependencies {implementation 'com.github.RelinRan:AndroidPay:.3.13.1'}

ARR

下载之后放入libs文件夹里面,然后./app/build.gradle配置如下

android {....repositories {flatDir {dirs 'libs'}}}dependencies {implementation(name: 'android_pay_.3.13.1', ext: 'aar')}

微信支付

项目包名下新建wxapi文件夹,然后新建WXPayEntryActivity.java文件,继承WeChatPayActivity

public class WXPayEntryActivity extends WeChatPayActivity {}

AndroidManifest.xml配置

<activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"android:screenOrientation="portrait"android:theme="@style/Android.Theme.Light.NoActionBar" />

manifest标签内(与权限同级)下配置

<queries><package android:name="com.tencent.mm" /></queries>

支付调用

WeChatPay.Builder builder = new WeChatPay.Builder(this);builder.appId("xxxx");builder.partnerId("xxx");builder.prepayId("xxx");builder.nonceStr("xxxx");builder.timeStamp("xxxx");builder.packageValue("Sign=WXPay");builder.sign("xxxx");builder.listener(new OnWeChatPayListener() {@Overridepublic void onWeChatPay(int code,String msg) {if(code==WeChatConstants.SUCCEED){//支付成功}if(code==WeChatConstants.CANCEL){//用户取消}if(code==WeChatConstants.FAILED){//支付失败}}});builder.extData(xxxxx);//支付提示文字builder.build();

支付宝支付

AndroidManifest.xml配置,非必要配置(项目本身或者其他arr没有配置org.apache.http.legacy的情况之下需要)

<uses-libraryandroid:name="org.apache.http.legacy"android:required="false" />

支付调用

AliPay.Builder builder = new AliPay.Builder(this);builder.orderInfo("xxxx");builder.listener(new OnAliPayListener() {/*** 参数解释** @param status 是结果码(类型为字符串)。* 9000订单支付成功* 8000正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态* 4000订单支付失败* 5000重复请求* 6001用户中途取消* 6002网络连接出错* 6004支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态* 其它其它支付错误* @param json 是处理结果(类型为json结构字符串)* out_trade_noString是64商户网站唯一订单号70501111111S001111119* trade_noString是64该交易在支付宝系统中的交易流水号。最长64位。112400001000340011111118* app_idString是32支付宝分配给开发者的应用Id。072300007148* total_amountPrice是9该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。9.00* seller_idString是16收款支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字2088111111116894* msgString是16处理结果的描述,信息来自于code返回结果的描述success* charsetString是16编码格式utf-8* timestampString是32时间-10-11 17:43:36* codeString是16结果码具体见* @param description description是描述信息(类型为字符串)*/@Overridepublic void onAliPay(String status, String json, String description) {if(status.equals("9000")){//成功}else if(status.equals("6001")){//用户取消}else{//支付失败}}});builder.loading(true);builder.build();

银联支付

UUPay uuPay = new UUPay(this);uuPay.pay(tn,UUPay.PayMode.FORM);

微信登录

项目包名下新建wxapi文件夹,然后新建WXEntryActivity.java文件,继承WeChatAuthActivity

public class WXEntryActivity extends WeChatAuthActivity {}

AndroidManifest.xml配置

<activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:taskAffinity="填写你的包名"android:launchMode="singleTask"android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>

manifest标签内(与权限同级)下配置

<queries><package android:name="com.tencent.mm" /></queries>

微信登录

WeChatLogin.Builder builder = new WeChatLogin.Builder(context);builder.appId("xxx");builder.appSecret("xxx");builder.listener(new OnWXLoginListener() {@Overridepublic void onWeChatLogin(int code, String msg, WeChatUser user) {if (code==WeChatConstants.LOADING){//登录中}if (code==WeChatConstants.SUCCEED){//登录成功}if (code==WeChatConstants.CANCEL){//用户取消登录}if (code==WeChatConstants.AUTH_DENIED){//授权取消}}});builder.build();

支付宝登录(官方文档)

授权登录回调onAliLogin(int code, String memo, AliUser aliUser)回调返回code值如下:

AliLogin.OK = 9000 (调用成功)

AliLogin.Duplex = 5000 (3s内快速发起了多次支付 / 授权调用。稍后重试即可。)

AliLogin.NOT_INSTALLED = 4001(用户未安装支付宝 App。)

AliLogin.SYS_ERR = 4000(其它错误,如参数传递错误。)

AliLogin.CANCEL = 6001(用户取消)

_ERROR = 6002(网络连接出错)

极简版授权(官方文档)

在项目AndroidManifest.xml配置如下(注意:android:scheme="xxxxxxxxxx"这个需要自己配置,最好是自己应用包名)

<activity android:name="com.alipay.sdk.app.AlipayResultActivity" tools:node="merge"><intent-filter tools:node="replace"><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.BROWSABLE"/><data android:scheme="xxxxxxxxxx"/></intent-filter></activity>

支付宝登录代码

AliLogin.Builder builder = new AliLogin.Builder(this);builder.appId("xxxxx");builder.scheme("xxxxxx");//必须跟AndroidManifest.xml配置一致builder.listener(new OnAliLoginListener() {@Overridepublic void onAliLogin(int code, String memo, AliUser aliUser) {if (code == AliLogin.OK) {//处理你的逻辑,极简版本只有aliUser.getAuthCode()}}});builder.build();

完整版授权(官方文档)

注意:authInfo需要后端提供,为了安全性。如果后端不提供就是调用OrderInfoUtil工具类如下方法获取

/*** 构建授权信息** @param privateKey 私钥(https://doc./docs/doc.htm?treeId=291&articleId=106097&docType=1)* @param pid 签约的支付宝账号对应的支付宝唯一用户号,以2088开头的16位纯数字组成* @param app_id支付宝分配给开发者的应用ID* @param target_id 商户标识该次用户授权请求的ID,该值在商户端应保持唯一* @param rsa2 签名类型是否是RSA2,否:RSA* @return*/public static String buildAuthInfo(String privateKey, String pid, String app_id, String target_id, boolean rsa2)

授权AndroidManifest.xml配置

<activityandroid:name="com.alipay.sdk.app.H5AuthActivity"android:configChanges="orientation|keyboardHidden|navigation|screenSize"android:exported="false" ></activity><activityandroid:name="com.alipay.sdk.app.H5OpenAuthActivity"android:configChanges="orientation|keyboardHidden|navigation|screenSize"android:exported="false"android:screenOrientation="behind"android:windowSoftInputMode="adjustResize|stateHidden" ></activity>

授权调用代码

AliLogin.Builder builder = new AliLogin.Builder(this);builder.authInfo("xxxxx");builder.listener(new OnAliLoginListener() {@Overridepublic void onAliLogin(int code, String memo, AliUser aliUser) {if (code == AliLogin.OK) {//处理你的逻辑,完整版本有aliUser.getUserId()和aliUser.getAliPayOpenId()}}});builder.build();

微信分享

项目包名下新建wxapi文件夹,然后新建WXEntryActivity.java文件,继承WeChatAuthActivity

public class WXEntryActivity extends WeChatAuthActivity {}

因为根据官方文档集成,其中参数名字也跟官方文档一致,目前只是加了一个thumUrl和imageUrl不跟官方文档一致,为了方便缩略图和图片分享使用网络图片; 其他的参数参考官方文档

图片分享代码

WeChatShare.Builder builder = new WeChatShare.Builder(getContext());builder.type(WeChatShare.TYPE_IMAGE);builder.appId(Constants.WE_CHAT_APP_ID);builder.scene(WeChatShare.SCENE_SESSION);builder.imagePath("本地图片地址");//或者builder.imageUrl("http://xxxxxx");builder.listener(new OnWeChatShareListener() {@Overridepublic void onWeChatShare(int code, String msg) {//分享回调,官方目前取消了回调,不管是否正确分享都会进入。}});builder.build();

视频分享代码

WeChatShare.Builder builder = new WeChatShare.Builder(getContext());builder.type(WeChatShare.TYPE_VIDEO);builder.appId(Constants.WE_CHAT_APP_ID);builder.scene(WeChatShare.SCENE_SESSION);builder.title("标题");builder.description("描述信息");builder.thumbImage(bitmap);//或 builder.thumbUrl("http://xxxxxx"); 或builder.thumbData(byte[]);builder.videoUrl("视频网络地址");builder.listener(new OnWeChatShareListener() {@Overridepublic void onWeChatShare(int code, String msg) {//分享回调,官方目前取消了回调,不管是否正确分享都会进入。if (code==WeChatConstants.SUCCEED){//成功}if (code==WeChatConstants.CANCEL){//取消}}});builder.build();

网页分享代码

WeChatShare.Builder builder = new WeChatShare.Builder(getContext());builder.type(WeChatShare.TYPE_WEB);builder.appId(Constants.WE_CHAT_APP_ID);builder.scene(WeChatShare.SCENE_SESSION);builder.title("标题");builder.description("描述信息");//缩略图设置builder.thumbImage(bitmap);//或 builder.thumbUrl("http://xxxxxx"); 或builder.thumbData(byte[]);builder.webpageUrl("网络地址");builder.listener(new OnWeChatShareListener() {@Overridepublic void onWeChatShare(int code, String msg) {//分享回调,官方目前取消了回调,不管是否正确分享都会进入。if (code==WeChatConstants.SUCCEED){//成功}if (code==WeChatConstants.CANCEL){//取消}}});builder.build();

音乐分享代码

WeChatShare.Builder builder = new WeChatShare.Builder(getContext());builder.type(WeChatShare.TYPE_MUSIC);builder.appId(Constants.WE_CHAT_APP_ID);builder.scene(WeChatShare.SCENE_SESSION);builder.title("标题");builder.description("描述信息");//缩略图设置builder.thumbImage(bitmap);//或 builder.thumbUrl("http://xxxxxx"); 或builder.thumbData(byte[]);builder.musicUrl("网络地址");builder.listener(new OnWeChatShareListener() {@Overridepublic void onWeChatShare(int code, String msg) {//分享回调,官方目前取消了回调,不管是否正确分享都会进入。if (code==WeChatConstants.SUCCEED){//成功}if (code==WeChatConstants.CANCEL){//取消}}});builder.build();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。