Android第三方支付——Bmob支付总结

1、添加jar包

       将名为libs的文件夹放在您项目根目录下(里面有 BmobPay_版本号.jar 和3个支付宝的jar一共四个jar文件)

2、添加权限和内容

<!-- alipay sdk permission begin -->
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      <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" />
  <!-- alipay sdk permission end -->

 <!-- bmob pay sdk activity begin ,please put below code into application tag -->
  <activity
      android:name="com.alipay.sdk.app.H5PayActivity"
      android:configChanges="orientation|keyboardHidden|navigation"
      android:exported="false"
      android:screenOrientation="behind"
      android:windowSoftInputMode="adjustResize|stateHidden" >
  </activity>
  <activity
      android:name="com.bmob.pay.tool.PayActivity"
      android:screenOrientation="portrait"
      android:theme="@android:style/Theme.Translucent" />
  <!-- bmob pay sdk activity end -->

3、类库说明

com.bmob.pay.tool.BmobPay

  • pay(double price, String name, PayListener listener)
  • pay(double price, String name, String body, PayListener listener)
  • PayListener     支付结果监听类com.bmob.pay.tool.PayListener 有成功、失败、未知结果、返回订单号等方法

类型名称说明
doubleprice商品的价格,建议测试用0.02
Stringname商品的名称,请注意不要有违禁字眼,可以为空

只允许中文、数字、英文和下划线、英文破折号,否则过滤

Stringbody商品的详情描述,请注意不要有违禁字眼,可以为空

只允许中文、数字、英文和下划线、英文破折号,否则过滤








  • payByWX(double price, String name, PayListener listener)
  • payByWX(double price, String name, String body, PayListener listener)

    调用微信支付,要安装插件(如果没有安装,会监听器的fail方法会返回-3错误码),插件在sdk文档的plugin文件夹下,demo有通过assets安装的示例

  • query(String orderId, OrderQueryListener listener)

类型名称说明
StringorderId支付订单号,不可为空
OrderQueryListenerlistener查询结果监听类com.bmob.pay.tool.OrderQueryListener

有成功、失败等方法






4、示例代码

package com.subzero.dictionary.pay;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.widget.Toast;
import com.bmob.pay.tool.BmobPay;
import com.bmob.pay.tool.PayListener;

/**
 * Bmob支付宝支付示例
 * @link http://docs.bmob.cn/androidpay/index.html?menukey=fast_start&key=start_android_pay
 */
public class Pay {

	// 申请的Bmob AppId
	private String APPID = "换成自己申请的<span style="font-family: Arial, Helvetica, sans-serif;">AppId</span><span style="font-family: Arial, Helvetica, sans-serif;">";</span>
	private BmobPay bmobPay;

	private ProgressDialog dialog;

	private Context context;

	public Pay(Context context) {
		this.context = context;
	}

	// 调用支付宝支付
	public void payByAli(String name, final double price) {
		// 必须先初始化
		BmobPay.init(context, APPID);

		// 初始化BmobPay对象,可以在支付时再初始化
		bmobPay = new BmobPay((Activity) context);
		showDialog("正在获取订单...");
		/**
		 * name 商品名称 price 价格
		 */
		bmobPay.pay(price, name, "来自Android客户端", new PayListener() {
			// 因为网络等原因,支付结果未知(小概率事件),出于保险起见稍后手动查询
			@Override
			public void unknow() {
				Toast.makeText(context, "支付结果未知,请稍后手动查询", Toast.LENGTH_SHORT)
						.show();
				hideDialog();
			}

			// 支付成功,如果金额较大请手动查询确认
			@Override
			public void succeed() {
				Toast.makeText(context, "支付成功!", Toast.LENGTH_SHORT).show();
				hideDialog();
			}

			// 无论成功与否,返回订单号
			@Override
			public void orderId(String orderId) {
				// 此处应该保存订单号,比如保存进数据库等,以便以后查询
				showDialog("获取订单成功!请等待跳转到支付页面~");
			}

			// 支付失败,原因可能是用户中断支付操作,也可能是网络原因
			@Override
			public void fail(int code, String reason) {
				Toast.makeText(context, "支付中断!", Toast.LENGTH_SHORT).show();
				hideDialog();
			}
		});
	}

	void showDialog(String message) {
		if (dialog == null) {
			dialog = new ProgressDialog(context);
			dialog.setCancelable(false);
		}
		dialog.setMessage(message);
		dialog.show();
	}

	void hideDialog() {
		if (dialog != null && dialog.isShowing())
			try {
				dialog.dismiss();
			} catch (Exception e) {
			}
	}

	void installBmobPayPlugin(String fileName) {
		try {
			InputStream is = context.getAssets().open(fileName);
			File file = new File(Environment.getExternalStorageDirectory()
					+ File.separator + fileName);
			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");
			context.startActivity(intent);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
详细文档说明:

点击此处

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少华年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值