支付宝 微信 支付 Rxjava
支付宝 微信 支付 Rxjava
compile 'com.vinctor:rxpay:0.0.1'
官方强烈建议在服务器端进行签名,故RxAliPay
只支持服务器端签名,然后本地客户端进行发起支付
RxAliPay.getIntance()
.with(MainActivity.this, "signString")
.requestPay()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<PayResult>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Toast.makeText(thisActivity, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNext(PayResult payResult) {
Toast.makeText(thisActivity, payResult.toString(), Toast.LENGTH_SHORT).show();
}
});
}
});
在OnNext
返回参数的说明可以
参照支付宝
最新官方文档的说明
因为微信支付官方要求用户创建wxapi/WXPayEntryActivity
类,故分为以下几个步骤
1 在你自定义的Application
初始化
RxWxPay.init(Application application);
2 对你任意一个activity
类进行如下注解
@WxPay(BuildConfig.APPLICATION_ID)
public class MainActivity extends AppCompatActivity{
//other codes
}
注:其中BuildConfig.APPLICATION_ID
是系统变量,为获取你的应用的applicationID
3 声明(重要! ! ! ! !)
RxWxPay
不需要你自己编写wxapi/WXPayEntryActivity
类以及声明微信要求的广播类AppRegister
你只需要在当前app下下的AndroidManifest
下声明WXPayEntryActivity
,如下:
<activity android:name="{你的applicationID}.wxapi.WXPayEntryActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="{你的AppID}" />
</intent-filter>
</activity>
注: 你只需要自行填写的内容:
在
build.gradle
中声明的的ApplicationID
(注意:不是AndroidManifest
中声明的package
)
在微信开放平台中相应
app
的AppID
4 完成以上3步,你就可以使用RxWxPay
进行微信支付了:
RxWxPay.getIntance()
.withAppID("")//微信开放平台的AppID
.withPartnerID("")//商户号partnerid
.withPrepayID("")//预支付交易会话ID
.withNoncestr("")//随机字符串
.withTimestamp("")//时间戳
.withSign("")//签名
.requestPay()//发起支付请求
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<WxPayResult>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Toast.makeText(thisActivity, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNext(WxPayResult wxPayResult) {
Toast.makeText(thisActivity, wxPayResult.getErrCood() + "", Toast.LENGTH_SHORT).show();
}
});
你也可以自行构建WXPayBean
,再进行支付:
RxWxPay.WXPayBean payBean
=new RxWxPay.WWXPayBean(appid, partnerid, noncestr, timestamp, prepayid, sign);
RxWxPay.getIntance()
.withWxPayBean(payBean)
.requestPay()//发起支付请求
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<WxPayResult>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Toast.makeText(thisActivity, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNext(WxPayResult wxPayResult) {
Toast.makeText(thisActivity, wxPayResult.getErrCood() + "", Toast.LENGTH_SHORT).show();
}
});
在OnNext
中返回的WxPayResult
通过调用方法WxPayResult.getErrCood()
查看支付结果
如下:0成功 -1错误 -2取消