3、 调用支付控件 (官方的配置)
a) 在调用支付控件的代码文件中引入UPPayAssistEx类如:
import com.unionpay.UPPayAssistEx ;
b) 接着可以通过以下方式调用支付控件:
// “00” – 银联正式环境
// “01” – 银联测试环境,该环境中不发生真实交易
String serverMode = “01”;
int ret = UPPayAssistEx.startPay ( activity, null, null, tn, serverMode);
if( ret == UPPayAssist.PLUGIN_NOT_FOUND ){
//安装Asset中提供的UPPayPlugin.apk
// 此处可根据实际情况,添加相应的处理逻辑
UPPayAssistEx.installUPPayPlugin(activity);
}
支付完成后,获取支付控件支付结果,并添加相应处理逻辑,只需实现调用Activity
中的onActivityResult()方法即可,实例代码如下:
protected void onActivityResult( int requestCode, int resultCode, Intent data)
{
if( data == null ){
return;
}
String str = data.getExtras().getString("pay_result");
if( str.equalsIgnoreCase(R_SUCCESS) ){
showResultDialog(" 支付成功! ");
}else if( str.equalsIgnoreCase(R_FAIL) ){
showResultDialog(" 支付失败! ");
}else if( str.equalsIgnoreCase(R_CANCEL) ){
showResultDialog(" 你已取消了本次订单的支付! ");
}
}
最后看完整代码:
1:服务器返回拿到流水号后在触发控件:
public void onResult(Integer taskKey, TaskResult<UinonPayTrade> result) {
dismissLoadingDialog();
if (result != null && result.getCode() != TaskResult.OK) {
showToastMsg(result.getMsg());
return;
}
if (result.getCode() == TaskResult.OK) {
mUinonPayTrade = result.getData();
doStartUnionPayPlugin(mUinonPayTrade.getTn(), "00");
}
}
2:调控件:00"启动银联正式环境 ;"01"连接银联测试环境;
/**
* @description 方法详细描述:跳转到网银控件上
* @author samy
* @param @param mode "00"启动银联正式环境 ;"01"连接银联测试环境
* @date 2014-4-29 下午5:52:16
*/
protected void doStartUnionPayPlugin(String tn, String mode) {
int ret = UPPayAssistEx.startPay(MyWithDrawUnionpayActivity.this, null, null, tn, mode);
if (ret == 0) {
// UPPayAssistEx.startPay(this, null, null, tn, mode);
} else {
// 正常的有请求返回的
UPPayAssistEx.startPayByJAR(MyWithDrawUnionpayActivity.this, PayActivity.class, null, null, tn, mode);
}
// UPPayAssistEx.startPayFromBrowser(arg0, arg1, arg2);
// int ret = UPPayAssistEx.startPay(MyWithDrawUnionpayActivity.this, null, null, tn, mode);
// if (ret != 0)
// {
// // 需要重新安装控件
// AlertDialog.Builder builder = new AlertDialog.Builder(this);
// builder.setTitle("提示");
// builder.setMessage("完成购买需要安装银联支付控件,是否安装?");
//
// builder.setNegativeButton("确定", new DialogInterface.OnClickListener()
// {
// @Override
// public void onClick(DialogInterface dialog, int which)
// {
// // 可做安装处理
// dialog.dismiss();
// UPPayAssistEx.installUPPayPlugin(MyWithDrawUnionpayActivity.this);
// }
// });
//
// builder.setPositiveButton("取消", new DialogInterface.OnClickListener()
// {
//
// @Override
// public void onClick(DialogInterface dialog, int which)
// {
// dialog.dismiss();
// }
// });
// builder.create().show();
// }
}
3:网银支付成功以否回调:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
return;
}
String msg = "";
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
msg = "网银充值成功!";
} else if (str.equalsIgnoreCase("fail")) {
msg = "网银充值失败!";
} else if (str.equalsIgnoreCase("cancel")) {
msg = "取消了网银充值";
}
showToastMsg(msg);
jumpToActivity(******.class, true);
}
原文地址:http://www.cnblogs.com/hongfeiliuxing/p/13fbfca02b3e801abbd770dcccad1ed2.html