对微信支付和支付宝支付的App端SDK进行二次封装,对外提供一个较为简单的接口和支付结果回调
注:生成pay_param的部分可见:http://www.jianshu.com/p/9b353529f02c
权限声明
<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" />
注册activity
<!-- 微信支付 -->
<activity
android:name="com.tsy.pay.weixin.WXPayCallbackActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity-alias
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.tsy.pay.weixin.WXPayCallbackActivity" />
<!-- 支付宝支付 -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"></activity>
<activity
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"></activity>
/**
* 微信支付
* @param pay_param 支付服务生成的支付参数
*/
private void doWXPay(String pay_param) {
String wx_appid = "wx6b69bdbf2adca4f8"; //替换为自己的appid
WXPay.init(getApplicationContext(), wx_appid); //要在支付前调用
WXPay.getInstance().doPay(pay_param, new WXPay.WXPayResultCallBack() {
@Override
public void onSuccess() {
Toast.makeText(getApplication(), "支付成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int error_code) {
switch (error_code) {
case WXPay.NO_OR_LOW_WX:
Toast.makeText(getApplication(), "未安装微信或微信版本过低", Toast.LENGTH_SHORT).show();
break;
case WXPay.ERROR_PAY_PARAM:
Toast.makeText(getApplication(), "参数错误", Toast.LENGTH_SHORT).show();
break;
case WXPay.ERROR_PAY:
Toast.makeText(getApplication(), "支付失败", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void onCancel() {
Toast.makeText(getApplication(), "支付取消", Toast.LENGTH_SHORT).show();
}
});
}
/**
* 支付宝支付
* @param pay_param 支付服务生成的支付参数
*/
private void doAlipay(String pay_param) {
new Alipay(this, pay_param, new Alipay.AlipayResultCallBack() {
@Override
public void onSuccess() {
Toast.makeText(getApplication(), "支付成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onDealing() {
Toast.makeText(getApplication(), "支付处理中...", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int error_code) {
switch (error_code) {
case Alipay.ERROR_RESULT:
Toast.makeText(getApplication(), "支付失败:支付结果解析错误", Toast.LENGTH_SHORT).show();
break;
case Alipay.ERROR_NETWORK:
Toast.makeText(getApplication(), "支付失败:网络连接错误", Toast.LENGTH_SHORT).show();
break;
case Alipay.ERROR_PAY:
Toast.makeText(getApplication(), "支付错误:支付码支付失败", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(getApplication(), "支付错误", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void onCancel() {
Toast.makeText(getApplication(), "支付取消", Toast.LENGTH_SHORT).show();
}
}).doPay();
}