首页 > 代码库 > 银联支付总结
银联支付总结
支付流程图:
Android 客户端
1、 接口说明
upmp_android/UPPayAssistEx.jar包中定义了启动支付控件的接口,接口定义如
下:
public static int startPay(Activity activity, String spId, String sysProvider, String orderInfo, String mode)
参数说明:
activity ——用于启动支付控件的活动对象
spId ——保留使用,这里输入null
sysProvider ——保留使用,这里输入null
orderInfo ——订单信息为交易流水号,即TN。
mode —— 银联后台环境标识,“00”将在银联正式环境发起交易, “01”将在
银联测试环境发起交易
返回值:
UPPayAssistEx.PLUGIN_VALID —— 该终端已经安装控件,并启动控件
UPPayAssistEx.PLUGIN_NOT_FOUND —— 手机终端尚未安装支付控件,需要先 安装支付控件
其它辅助接口:
public static boolean installUPPayPlugin(Context context)
参数说明:
context ——安装控件的上下文
返回值: true ——安装正常,false ——安装失败
2、 添加SDK 包
- 配置AndroidManifest.xml:<activityandroid:name="com.unionpay.uppay.PayActivity"android:configChanges="orientation|keyboardHidden"android:excludeFromRecents="true"android:screenOrientation="portrait"android:windowSoftInputMode="adjustResize" ></activity>
- asset和jar中配置:
ps:drawable中的data.bin;一定要有否则会出现payActivity空指针报错;内在网银apk-->UPPayPluginExPro.apk
- 从服务器端返回流水号在---》代码中调用:---->详细见步骤三:/*** @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、 调用支付控件 (官方的配置)
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 =http://www.mamicode.com/= 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://download.csdn.net/detail/hongliuxing/7998801
官方支付:http://download.csdn.net/detail/hongliuxing/7998821
来自为知笔记(Wiz)
银联支付总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。