简介
封装支付宝和微信第三方支付的一个库
快速集成
1.在项目根目录build.gradle中allprojects添加对aar的支持。
1 | allprojects { |
- 引入库
- 方法一,下载整个项目,把moudle模块**mypay**整个文件夹复制到你项目根目录,在app的build.gradle中的dependencies添加如下代码
1 | implementation project(':mypay') |
然后再同一个文件android标签添加对mypay的aar文件的引用
1 | android { |
然后在settings.gradle中加入
1 | include ':app', ':mypay' |
最后rebuild一下就ok了。
- 方法二,通过dependencies方式:
首先在app根目录的build.gradle中添加
1 | allprojects { |
然后再项目的build.gradle中的dependencies添加
1 | implementation 'com.lbz.pay:mypay:0.0.5' |
然后在android节点下加入
1 | android{ |
然后把aar文件copy到目录的libs文件夹(因为支付宝是以aar文件导入,aar文件无法引用aar文件的原因,需要重新导入一次)
最后rebuild一下就ok了
- 微信授权登录需要一个微信回调类WXPayEntryActivity,注意这个类的位置是在程序包名下的wxapi包下。例如我程序的包名是com.lbz.pay_sample,那么这个类就在com.lbz.pay_sample.wxapi下。WXPayEntryActivity可以参考下面。接受到微信的回调信息,使用EventBus通知发起支付的activity支付结果是怎样子的再做相应的显示。
1 | public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { |
- 在manifest文件application标签内的加入前面WXPayEntryActivity
1 | <activity |
- 请求支付
微信请求:
- 第一步构建请求参数WeChatReqParam
1 | private String nonce_str;//随机字符串 |
以上为WeChatReqParam的构造参数,建议以上参数通过服务器返回比较安全。
- 第二步,构造请求体WeChatPayReq,传入前一步的WeChatReqParam
1 | WeChatPayReq weChatPayReq = new WeChatPayReq.Builder().with(MainActivity.this) |
- 第三步发起请求
1 | PayAPI.getInstance().sendPayRequest(weChatPayReq); |
- 第四部,接收回调,建议使用EventBus。
1 | @Subscribe(threadMode = ThreadMode.MAIN) |
支付宝请求:
- 第一步构建请求参数AliPayReqParam
1 | //公共参数 |
以上为AliPayReqParam的构造参数,建议以上参数通过服务器返回比较安全。它有两个构造方法,方法一
1 | public AliPayReqParam(String app_id, String sign, String timestamp, String notify_url, String subject, String out_trade_no, String total_amount) { |
方法二:
1 | public AliPayReqParam(String alipay_request) { |
- 第二步,构造请求体AliPayReq,传入前一步的AliPayReq,同时设置回调监听器setOnAliPayListener
1 | AliPayReq aliPayReq = new AliPayReq.Builder().with(MainActivity.this) |
- 第三步发起请求
1 | //第一种构造方法 |
注意点
微信和支付宝回调的结果,若支付成功,建议从服务器查询一下订单状态是否生成,因为存在支付成功了,但是回调有延迟 导致服务器数据库没有更新。然后提示用户是否真的成功。推荐使用*RxJava*** *trywhen***操作符
1 | Disposable orderReqDisposable; |