【威哥說】想賺錢?由于微信和支付寶嚴格的企業審核機制,個人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();
}
}
效果圖展示