关于支付宝支付,不得不说,对于程序猿来说是最简单的支付方式(对于某信,某联来说)
准备工作 放入jar包等, 清单配置文件需要添加com.alipay.sdk.app.H5PayActivity
不多说,直接上代码......
/**
* 调起支付宝 需要的参数要从后台获取(安全考虑)
* @param string
*/
private void requstAlipay(final String string){
new Thread(){
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask(mContext);
// 调用支付接口,获取支付结果
Log.i("支付string",""+string);
String result = alipay.pay(string, true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
Log.i("输出内容",result.toString()+"");
mHandler.sendMessage(msg);
};
}.start();
}
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
/**
* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
* docType=1) 建议商户依赖异步通知
*/
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(mContext, "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 判断resultStatus 为非"9000"则代表可能支付失败
// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, "8000")) {
Toast.makeText(mContext, "支付结果确认中", Toast.LENGTH_SHORT).show();
} else {
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(mContext, "支付失败", Toast.LENGTH_SHORT).show();
}
}
break;
}
default:
break;
}
};
};
对于支付宝来说,支付还是很简单的,没有包名和一些其他限制,直接运行就可以测试,
如果还是不能支付(我还没遇到过) 百度搜索吧