Android-银联支付
2016-04-12 20:05
567 查看
DevStore首页 > DEV资源 > 服务评测下载 > 银联支付安卓版服务评测 //下为转载笔记
银联支付也是一般比较常用的支付功能,这里简单了介绍android app如果短期快速应用这一方面的东西。直接上代码:
1.导入银联支付的依赖包:
2.在res目录下增加资源包:
3.配置AndroidManifest.xml文件配置打开的activity:
[html] view
plain copy
print?
<activity
android:name="com.unionpay.uppay.PayActivity"
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
至此,我们的项目环境就搭好了.(以上资料文件,请查看银联测试文档目录的androiddemo);
银联支付代码3步骤:
1.获取TN号 2.请求控件界面(PayActivity)
3.ActivityResult处理支付结果(但该结果并不一定正确 ,因为银联系统通过异步返回给服务器和我们的app是同时异步的)
以下 我以测试接口为例
[java] view
plain copy
print?
/**
* UnionPay Test
*
* @author Lean @date:2014-8-8
*/
public class MainActivity extends Activity implements Runnable {
private String mMode = "01";//设置测试模式:01为测试 00为正式环境
private static final String TN_URL_01 = "http://202.101.25.178:8080/sim/gettn";//自己后台需要实现的给予我们app的tn号接口
private Handler mHandler=new Handler(){
public void handleMessage(android.os.Message msg) {
String tn = "";
if (msg.obj == null || ((String) msg.obj).length() == 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("错误提示");
builder.setMessage("网络连接失败,请重试!");
builder.setNegativeButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
} else {
tn = (String) msg.obj;
doStartUnionPayPlugin(MainActivity.this, tn, mMode);
}
}
};
/**
* 启动支付界面
*/
public void doStartUnionPayPlugin(Activity activity, String tn, String mode) {
UPPayAssistEx.startPayByJAR(activity, PayActivity.class, null, null,
tn, mode);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(MainActivity.this).start();
}
@Override
public void run() {
String tn = null;
InputStream is;
try {
String url = TN_URL_01;
URL myURL = new URL(url);
URLConnection ucon = myURL.openConnection();
ucon.setConnectTimeout(120000);
is = ucon.getInputStream();
int i = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((i = is.read()) != -1) {
baos.write(i);
}
tn = baos.toString();
is.close();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
Message msg = mHandler.obtainMessage();
msg.obj = tn;
mHandler.sendMessage(msg);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {
return;
}
String msg = "";
/*
* 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消
*/
String str = data.getExtras().getString("pay_result");
Log.v("zftphone", "2 "+data.getExtras().getString("merchantOrderId"));
if (str.equalsIgnoreCase("success")) {
msg = "支付成功!";
} else if (str.equalsIgnoreCase("fail")) {
msg = "支付失败!";
} else if (str.equalsIgnoreCase("cancel")) {
msg = "用户取消了支付";
}
//支付完成,处理自己的业务逻辑!
}
}
Tip:做这个的时候,你要保证你有个牛比的支持团队能够接受新事物,同时谴责下银联的客服 太垃圾了说!
银联支付也是一般比较常用的支付功能,这里简单了介绍android app如果短期快速应用这一方面的东西。直接上代码:
1.导入银联支付的依赖包:
2.在res目录下增加资源包:
3.配置AndroidManifest.xml文件配置打开的activity:
[html] view
plain copy
print?
<activity
android:name="com.unionpay.uppay.PayActivity"
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" />
至此,我们的项目环境就搭好了.(以上资料文件,请查看银联测试文档目录的androiddemo);
银联支付代码3步骤:
1.获取TN号 2.请求控件界面(PayActivity)
3.ActivityResult处理支付结果(但该结果并不一定正确 ,因为银联系统通过异步返回给服务器和我们的app是同时异步的)
以下 我以测试接口为例
[java] view
plain copy
print?
/**
* UnionPay Test
*
* @author Lean @date:2014-8-8
*/
public class MainActivity extends Activity implements Runnable {
private String mMode = "01";//设置测试模式:01为测试 00为正式环境
private static final String TN_URL_01 = "http://202.101.25.178:8080/sim/gettn";//自己后台需要实现的给予我们app的tn号接口
private Handler mHandler=new Handler(){
public void handleMessage(android.os.Message msg) {
String tn = "";
if (msg.obj == null || ((String) msg.obj).length() == 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("错误提示");
builder.setMessage("网络连接失败,请重试!");
builder.setNegativeButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
} else {
tn = (String) msg.obj;
doStartUnionPayPlugin(MainActivity.this, tn, mMode);
}
}
};
/**
* 启动支付界面
*/
public void doStartUnionPayPlugin(Activity activity, String tn, String mode) {
UPPayAssistEx.startPayByJAR(activity, PayActivity.class, null, null,
tn, mode);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(MainActivity.this).start();
}
@Override
public void run() {
String tn = null;
InputStream is;
try {
String url = TN_URL_01;
URL myURL = new URL(url);
URLConnection ucon = myURL.openConnection();
ucon.setConnectTimeout(120000);
is = ucon.getInputStream();
int i = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((i = is.read()) != -1) {
baos.write(i);
}
tn = baos.toString();
is.close();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
Message msg = mHandler.obtainMessage();
msg.obj = tn;
mHandler.sendMessage(msg);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {
return;
}
String msg = "";
/*
* 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消
*/
String str = data.getExtras().getString("pay_result");
Log.v("zftphone", "2 "+data.getExtras().getString("merchantOrderId"));
if (str.equalsIgnoreCase("success")) {
msg = "支付成功!";
} else if (str.equalsIgnoreCase("fail")) {
msg = "支付失败!";
} else if (str.equalsIgnoreCase("cancel")) {
msg = "用户取消了支付";
}
//支付完成,处理自己的业务逻辑!
}
}
Tip:做这个的时候,你要保证你有个牛比的支持团队能够接受新事物,同时谴责下银联的客服 太垃圾了说!
相关文章推荐
- android里的inflate的使用
- 给Android开发者的RxJava
- Android中实现从SD卡的Gallery画廊带回图片
- Android多媒体--音视频播放
- 无需Root实现Android手机屏幕流畅投影到电脑进行演示(附软件下载)
- FaceBook推出的Android图片加载库-Fresco
- android异常处理——try、catch、finally、throw、throws
- android ContentProvider使用总结
- Android实现左滑退出Activity(完美封装)
- android broadcast使用总结分享
- px、pt、dp和 sp
- 判断 Android 设备是否已 ROOT
- java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
- Android自定义控件1
- Android(M) Telephony Framework SIM card recognization flow
- android6.0 adbd深入分析(二)adb驱动数据的处理、写数据到adb驱动节点
- AndroidStudio开发第一个JNI工程
- Android 如何判断一个应用在运行
- android jni编译配置DEBUG or RELEASE 的方法和优先级
- Android实现圆角边框