【威哥说】想赚钱?由于微信和支付宝严格的企业审核机制,个人app集成支付功能一直困扰着开发者们,本文将带你分分钟实现个人app集成支付宝和微信的支付功能,让你的app可以赚钱。
【正文】我们开发项目的时候难免会遇到支付的需求,现在即使不是电商平台基本也都有支付功能,看个文章还可以赞赏,有没有?涉及到支付,我们立刻就会想到国内鼎鼎大名独霸多年的支付宝,还有近几年通过微信人脉起来的微信支付,其它的也有很多,但是对于我们app来说,你只需要集成主流用户基数最大的就可以,他们手机都会有这两个app,这样也能确保用户可以支付成功。当然,这只是说电子商务,除了这2个还要支持各大银行的网银。并不是每个用户都用支付宝微信,但是每个人都会有一张银行卡。
下面开始集成支付宝和微信支付:
1.注册http://www.bmob.cn/ 平台账户并创建应用
2.申请支付权限,按照步骤上传照片下一步即可
3.下载支付包 BmobPay_v3.0.3_160621.jar包,放到libs下
4.加入权限
5.为了防止客户没有支付插件,这里要把支付插件放到main下的assets下,bp.db,其实就是apk,这样防止被安全软件检测警告。
6.初始化 BP.init(context,"你的Application ID");
7.最后调用付款
第4个参数为true时调用支付宝支付,为false时调用微信支付
BP.pay("商品名称", "商品描述", 钱数, true, new Plistener(){回调方法});
下面是代码:
调用微信付款:
private void payWeixin() {
Log.i(TAG, "payWeixin: "+"weixin");
/**
* 第5个参数为true时调用支付宝支付,为false时调用微信支付
*/
BP.pay( "商品名称", "商品描述", 0.02, false,new PListener() {
@Override
public void orderId(String s) {
Log.i(TAG, "orderId: "+s);
}
@Override
public void succeed() {
Log.i(TAG, "succeed: "+"成功");
}
@Override
public void fail(int i, String s) {
Log.i(TAG, i+"fail: "+s);
install(i);
}
@Override
public void unknow() {
}
});
}
调用安装插件的方法
private void install(int i) {
if (i == -3) {
new AlertDialog.Builder(SettlementActivity.this)
.setMessage(
"监测到你尚未安装支付插件,无法进行微信支付,请选择安装插件(已打包在本地,无流量消耗)还是用支付宝支付")
.setPositiveButton("安装",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
installBmobPayPlugin("bp.db");
}
})
.setNegativeButton("支付宝支付",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
payAli();
}
}).create().show();
} else {
Toast.makeText(SettlementActivity.this, "支付中断!",
Toast.LENGTH_SHORT).show();
}
}
//安装插件
void installBmobPayPlugin(String fileName) {
try {
InputStream is = getAssets().open(fileName);
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator + fileName + ".apk");
if (file.exists())
file.delete();
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
byte[] temp = new byte[1024];
int i = 0;
while ((i = is.read(temp)) > 0) {
fos.write(temp, 0, i);
}
fos.close();
is.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse("file://" + file),
"application/vnd.android.package-archive");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
效果图展示