█ 【安卓学习之第三方库】 Rxpay学习:支付宝微信支付
█ 相关文章:
█ 读前说明:
- 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
- 本文只简单罗列相关的代码实现过程
- 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已
- 下载demo
- 本demo直接参考https://github.com/Cuieney/RxPay,进行简单的集成测试,ok
█ Rxpay基于java的集成
- APP目录下的build.gradle中添加AspectJ的依赖:
dependencies {
...
implementation 'com.cuieney:rxpay-api:2.2.3'
annotationProcessor 'com.cuieney:rxpay-compiler:2.1.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.51"
}
- AndroidManifest.xml修改
<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" />
<application
... >
...
<!-- 支付宝 -->
<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
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden"/>
<!-- 微信支付 -->
<!--添加你微信支付的appid 和PARTNER_ID商户号(固定不变的),
apiKey(商户平台设置的密钥key获取方法,
可以问后台要可以到微信商户平台(pay.weixin.qq.com)-账户设置-API安全-密钥设置)-->
<meta-data
android:name="WX_APPID"
android:value="wxbc998sss8d5283csdsdf187" />
<!-- 非必填项,此处填写后,请求json的partnerId字段就可以不填 -->
<meta-data
android:name="PARTNER_ID"
android:value="124455465765" />
<!-- 非必填项,此处填写后,请求json的sign字段就可以不填(即App端签名) -->
<meta-data
android:name="API_KEY"
android:value="sdsdsafshregewrew" />
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
</application>
- Application修改
@WX(packageName = "com.cuieney.android.rxpay")//微信支付注册keystore时候的包名
public class RxPayApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
}
}
- 使用:
//服务器产生的订单信息
String str1 = "partner=\"2088121059329235\"&seller_id=\"1993349866@qq.com.....";
new RxPay(this).requestAlipay(str1)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
Toast.makeText(MainActivity.this, "阿里支付状态:"+aBoolean, Toast.LENGTH_SHORT).show();
Log.e("oye", "accept: " + aBoolean);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.e("oye", "accept: ", throwable);
Toast.makeText(MainActivity.this,"阿里支付状态err:"+throwable.getMessage(), Toast.LENGTH_SHORT).show();
}
});
//服务器生成订单后的json 具体看README格式
String str2 = "{\"prepayId\":\"wx20171130142918877d249e440347896475\"}";
new RxPay(this).requestWXpay(
str2)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.e("oye", "accept: " + aBoolean);
Toast.makeText(MainActivity.this, "微信支付状态:"+aBoolean, Toast.LENGTH_SHORT).show();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.e("oye", "accept: ", throwable);
Toast.makeText(MainActivity.this,"微信支付状态err:"+throwable.getMessage(), Toast.LENGTH_SHORT).show();
}
});
- 运行效果:
因为我没有资质,没有申请相关的开发者账号,所以只能直接拿开源项目的东西测试下,
测试结果:都可以进行跳转,只是这些信息都过期了,只要换下相关商户信息就可以用,如下图
█ 支付宝alipaySdk
-
下载支付宝官方的sdk:App 支付客户端 DEMO&SDK - 支付宝开放平台
● 用户已安装支付宝:进入到支付宝--调起支付宝支付--输入密码--显示支付结果--自动回跳到商家 App 中 ● 用户未安装支付宝:调起支付宝网页支付收银台--用户登录--确认付款页面--输入密码--展示支付结果
-
添加依赖库(app中的 build.gradle中):
下载支付宝官方的sdk,导入项目中:https://docs.open.alipay.com/54/104509
dependencies {
...
implementation files('libs/alipaySdk-20180601.jar')
}
- 跳转支付宝转账的代码如下:
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(aty);
Map<String, String> result = alipay.payV2(key, true);
Message msg = new Message();
msg.obj = result;// 支付结果
mHandler.sendMessage(msg);
}
};
Thread payThread = new Thread(payRunnable);
payThread.start();
- 支付结果处理的代码如下:(订单是否真实支付成功,需要依赖服务端的异步通知。)
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(aty, "支付成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(aty, "支付失败", Toast.LENGTH_SHORT).show();
}
█ 支付宝转账
-
如果希望点击一个按钮,立即就跳出支付页面,则使用如下:
● alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode={支付二维码的url} ● 这里的二维码需要使用urlencode进行编码,否则不能用哦:
-
支付二维码的url如下:
● 原码:https://qr.alipay.com/fkx14203rsedkzsjvtfat3c?_s=web-other ● 编码:https%3a%2f%2fqr.alipay.com%2ffkx14203rsedkzsjvtfat3c%3f_s%3dweb-other
-
跳转支付宝转账的代码如下:
Toast.makeText(MainActivity.this, "跳转到支付宝转账", Toast.LENGTH_SHORT).show();
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https%3a%2f%2fqr.alipay.com%2ffkx14203rsedkzsjvtfat3c%3f_s%3dweb-other"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Toast.makeText(MainActivity.this,"非常感谢你的支持", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(MainActivity.this,"打开支付宝失败,你可能还没有安装支付宝客户端", Toast.LENGTH_SHORT).show();
}
█ H5支付接口
-
后台提供H5支付接口如下:
● alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode={支付二维码的url} ● 这里的二维码需要使用urlencode进行编码,否则不能用哦:
-
支付二维码的url如下:
● https://qr.alipay.com/bax06385q32ssucugqxm00f1
-
webView或者直接使用手机浏览器加载:(直接跳转支付宝弹出支付界面)
mWebview.loadUrl("https://qr.alipay.com/bax06385q32ssucugqxm00f1");
- 效果:
█ 码支付:(没用过,群里小伙伴推荐,记录下)
-
码支付
● 码支付是免费 ● 不用申请QQ、支付宝免签约接口 ● 和其他收费的支付宝免签约即时到帐辅助一样 ● 支持QQ支付监控,支付宝支付接口监控, ● 地址是:https://codepay.fateqq.com/
-
支付方式:任何人可开通
● 微信支付 ● 支付宝支付 ● QQ钱包支付 ● 财付通支付 ● 支持电脑手机
-
收费:(微信支付监控)
● 58元开户,31天全免 ; ● 31天后每月微信交易1000免费,超出部分扣除流量套餐; ● 31天后如果微信交易不超出1000每月,那么就没有其他费用,永久免费哦;
-
免费软件版:
● 创建订单--》云端保存订单--》用户付款直接到你手里--》辅助软件提取订单数据--》辅助软件通知您网站处理; ● 钱不经过我们 自己的网站收银 自行控制二维码 安全放心 全免没其他任何费用。
-
会员软件版:
● 创建订单--》云端保存订单--》用户付款直接到你手里--》官方通知我们--》我们服务器通知您网站处理; ● 无需辅助通知 支付宝免制作二维码 自己的网站收银 钱不经过我们 直接到你手里 稳定安全放心
█ 相关资料:
-
● 1. GitHub - Cuieney/RxPay: 一个集成支付宝微信的支付工具完全兼容kotlin
● 2.发现bug:issues
● 3.android 集成微信支付宝 RxPay - 张学涛 - 博客园
● 4.支付宝内部功能调用APP的said说明(转载)_zswll2的博客-CSDN博客
● 5.UrlEncode编码/UrlDecode解码 - 站长工具
● 6. 支付宝开放平台 点击业务接入 -> 即时到账
● 7. iOS支付功能篇:原生WebView调起支付宝客户端支付方案_sail的技术博客-CSDN博客
● 8.码支付|免费免签接口|支付宝免签约即时到帐
转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/110525653