【安卓学习之第三方库】 Rxpay学习:支付宝微信支付

█ 【安卓学习之第三方库】 Rxpay学习:支付宝微信支付

█ 相关文章:

█ 读前说明:

  • 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
  • 本文只简单罗列相关的代码实现过程
  • 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已
  • 下载demo
  • 本demo直接参考https://github.com/Cuieney/RxPay,进行简单的集成测试,ok

Rxpay基于java的集成

  1. 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"
}
  1. 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>


  1. Application修改
@WX(packageName = "com.cuieney.android.rxpay")//微信支付注册keystore时候的包名
public class RxPayApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
    }
}
  1. 使用:
                //服务器产生的订单信息
                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();
                            }
                        });
  1. 运行效果:

因为我没有资质,没有申请相关的开发者账号,所以只能直接拿开源项目的东西测试下,
测试结果:都可以进行跳转,只是这些信息都过期了,只要换下相关商户信息就可以用,如下图

在这里插入图片描述
█ 支付宝alipaySdk

  1. 下载支付宝官方的sdk:App 支付客户端 DEMO&SDK - 支付宝开放平台

    ● 用户已安装支付宝:进入到支付宝--调起支付宝支付--输入密码--显示支付结果--自动回跳到商家 App 中
    ● 用户未安装支付宝:调起支付宝网页支付收银台--用户登录--确认付款页面--输入密码--展示支付结果
    
  2. 添加依赖库(app中的 build.gradle中):

下载支付宝官方的sdk,导入项目中:https://docs.open.alipay.com/54/104509

dependencies {
    ...  
    implementation files('libs/alipaySdk-20180601.jar')
}
  1. 跳转支付宝转账的代码如下:
		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();
  1. 支付结果处理的代码如下:(订单是否真实支付成功,需要依赖服务端的异步通知。)
        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();
        }

█ 支付宝转账

  1. 如果希望点击一个按钮,立即就跳出支付页面,则使用如下:

     ● alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode={支付二维码的url}
     ● 这里的二维码需要使用urlencode进行编码,否则不能用哦:
    
  2. 支付二维码的url如下:

    ● 原码:https://qr.alipay.com/fkx14203rsedkzsjvtfat3c?_s=web-other 
    ● 编码:https%3a%2f%2fqr.alipay.com%2ffkx14203rsedkzsjvtfat3c%3f_s%3dweb-other
    
  3. 跳转支付宝转账的代码如下:

     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支付接口

  1. 后台提供H5支付接口如下:

     ● alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode={支付二维码的url}
     ● 这里的二维码需要使用urlencode进行编码,否则不能用哦:
    
  2. 支付二维码的url如下:

    ● https://qr.alipay.com/bax06385q32ssucugqxm00f1
    
  3. webView或者直接使用手机浏览器加载:(直接跳转支付宝弹出支付界面)

    mWebview.loadUrl("https://qr.alipay.com/bax06385q32ssucugqxm00f1"); 
  1. 效果:
    在这里插入图片描述

码支付:(没用过,群里小伙伴推荐,记录下)

  1. 码支付

    ● 码支付是免费
    ● 不用申请QQ、支付宝免签约接口
    ● 和其他收费的支付宝免签约即时到帐辅助一样
    ● 支持QQ支付监控,支付宝支付接口监控,
    ● 地址是:https://codepay.fateqq.com/
    
  2. 支付方式:任何人可开通

    ● 微信支付
    ● 支付宝支付
    ● QQ钱包支付
    ● 财付通支付
    ● 支持电脑手机
    
  3. 收费:(微信支付监控)

    ● 58元开户,31天全免 ;
    ● 31天后每月微信交易1000免费,超出部分扣除流量套餐;
    ● 31天后如果微信交易不超出1000每月,那么就没有其他费用,永久免费哦;
    
  4. 免费软件版:

    ● 创建订单--》云端保存订单--》用户付款直接到你手里--》辅助软件提取订单数据--》辅助软件通知您网站处理;
    ● 钱不经过我们 自己的网站收银 自行控制二维码 安全放心 全免没其他任何费用。
    
  5. 会员软件版:

    ● 创建订单--》云端保存订单--》用户付款直接到你手里--》官方通知我们--》我们服务器通知您网站处理;
    ● 无需辅助通知 支付宝免制作二维码 自己的网站收银 钱不经过我们 直接到你手里 稳定安全放心
    

█ 相关资料:

- 
 ● 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值