第一次接触银联支付,官方文档说的还是比较详细的,网上一搜一大把,可以先看一下官方文档,结合着官方文档实现,废话不多说,直接上工具类:
//银联支付 工具类
public class UnionPayUtils {
// “00” – 银联正式环境
// “01” – 银联测试环境,该环境中不发生真实交易
private String serverMode = "01";//
/**
* @param context
* @param order 流水号 后台返回的
*/
public void setPay(Context context, String order) {
if (UPPayAssistEx.checkInstalled(context)) {//检测是否安装银联APK接口调用
//当判断用户手机上已安装银联APK,商户客户端可以做相应的个性化处理
}
//755427071111992030901 是我用的网上提供的网址生成的一个假的流水账号 网址:"http://101.231.204.84:8091/sim/getacptn"
UPPayAssistEx.startPay(context, null, null, "755427071111992030901", serverMode);
}
//处理银联手机支付控件返回的支付结果
public void setServerResult(Intent data, Context context) {
if (data == null) {
return;
}
String msg = "";
//支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
if (data.hasExtra("result_data")) {
String result = data.getExtras().getString("result_data");
// 此处的verify建议送去商户后台做验签
// 如要放在手机端验,则代码必须支持更新证书
// if (verify(sign)) {
//验签成功,显示支付结果
// showResultDialog(" 支付成功! ");
// } else {
// 验签失败
// }
msg = "支付成功";//想对支付成功做一些操作的话,可以在此实现
} else if (str.equalsIgnoreCase("fail")) {
msg = "支付失败";
} else if (str.equalsIgnoreCase("cancel")) {
msg = "取消支付";
}
}
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
然后在你调用的支付的那个界面实现:
UnionPayUtils utils=new UnionPayUtils ();
utils.setPay(context,"");//因为是测试,所以这个流水号没填,
在onActivityResult中调用
utils.setServerResult(data,context);
大功告成;睡会觉,整体还是比较简单的,详细信息就多看看官方文档