Android集成银联支付

来源:互联网 发布:网络平台承担连带责任 编辑:程序博客网 时间:2024/05/16 01:56

银联支付是继支付宝于微信支付之后的第三大支付方式,如果你已经看过前两篇博文,学会支付宝和微信的支付集成方法,接下来,银联支付就很简单了。

支付宝支付流程博文

http://blog.csdn.net/wangxiaohuhu1314/article/details/76191157

微信支付流程博文

http://blog.csdn.net/wangxiaohuhu1314/article/details/76228712


1.银联支付流程图



2.     到银联开发者平台下载开发包

3.     安装“UPPayDemo.apk”,安装后运行效果如下:


4.     打开中国银联手机支付控件接入指南Android.doc”,在这个文档中有测试账号(账号:6226090000000048,验证码:123456,使用测试账号进行测试,结果如下:


“UPPayDemo.apk”对应的源码也在开发包中,这个Demo可以完全支付了说明现在的Demo就已经完全配置好了银联的开发环境了,我们只需要参照这个Demo去配置我们自己的项目即可。
注:银联开发环境的编译不能在太老的环境下编译,否则会报类找不到异常

5.     创建一个Android项目,界面如下:


activity_main.xml如下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="银联支付"        android:onClick="unionPay" /></RelativeLayout>
MainActivity.java如下:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void unionPay(View v) {}}
6.     配置银联开发环境:a)     按照前面运行的apk的提示把相应的资源复制到相应的目录下b)     导入银联Demo,把银联Demo中的清单文件中的权限复制到我们的项目中c)     把银联Demo中的清单文件中声明的支付相关的Activity声明复制到我们的项目中7.     把购物车中的内容提交给服务器并获取支付序列号,代码如下:

public void unionPay(View v) {    // 把购物车中的内容提交给服务器获取支付序列号    String TN_URL_01 = "http://101.231.204.84:8091/sim/getacptn";    Response.Listener<String> listener = new Response.Listener<String>() {        @Override        public void onResponse(String response) {            unionPay(response);        }    };    Response.ErrorListener errorListener = new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError error) {            Log.e(TAG, "onErrorResponse: 请求失败", error);        }    };    StringRequest request = new StringRequest(TN_URL_01, listener, errorListener);    Volley.newRequestQueue(this).add(request);}private void unionPay(String tn) {    Log.i(TAG, "tn: " + tn);}
8.     把支付序列号提交给银联进行支付(可以参考银联官方Demo的代码),如下:

private void unionPay(String tn) {    // mMode参数解释: "00" - 启动银联正式环境 "01" - 连接银联测试环境    UPPayAssistEx.startPay(this, null, null, tn, "01");}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    /*************************************************     * 步骤3:处理银联手机支付控件返回的支付结果     ************************************************/    if (data == null) {        return;    }    String msg = "";    /*     * 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消     */    String str = data.getExtras().getString("pay_result");    if (str.equalsIgnoreCase("success")) {        // 支付成功后,extra中如果存在result_data,取出校验        msg = "支付成功!";    } else if (str.equalsIgnoreCase("fail")) {        msg = "支付失败!";    } else if (str.equalsIgnoreCase("cancel")) {        msg = "用户取消了支付";    }    AlertDialog.Builder builder = new AlertDialog.Builder(this);    builder.setTitle("支付结果通知");    builder.setMessage(msg);    builder.setInverseBackgroundForced(true);    // builder.setCustomTitle();    builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {            dialog.dismiss();        }    });    builder.create().show();}










原创粉丝点击