android - 银联在线支付

“深入浅出,人人都是程序员”

本文章参考:http://blog.csdn.net/dashentao1989/article/details/48680377

银联开发者地址:https://open.unionpay.com/ajweb/help/file

从官方下载下来的资源

资源显示

1.工程环境配置

(1) 引入jar包
引入银联jar包

分别新建2个文件夹

分别新建两个文件夹 assets 和 jniLibs (注意文件夹级别分布)

这里写图片描述

在build.gradle文件注意要引用到libs 和jar 包

2.在AndroidMainfest.xml中设置手机权限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.NFC" />

这是跳转到银联支付页面(官方写法,估计也没什么变动)

<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" />

3.代码实现

在主activity类的代码

public class YinLianActivity extends AppCompatActivity {

    private Button yinlianPayBtn;
    private RelativeLayout container;
    private static final String TN_URL_01 = "http://101.231.204.84:8091/sim/getacptn";
    private static final String R_SUCCESS = "success";
    private static final String R_FAIL = "fail";
    private static final String R_CANCEL = "cancel";


    private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            // “00” – 银联正式环境
            // “01” – 银联测试环境,该环境中不发生真实交易
            String tn = (String) msg.obj;
            if (!TextUtils.isEmpty(tn)) {
                // 测试环境
                String serverMode = "01";
                UPPayAssistEx.startPayByJAR(YinLianActivity.this,
                        PayActivity.class, null, null, tn, serverMode);
            }
        }
    };


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_yinlian);
        yinlianPayBtn = (Button) findViewById(R.id.button1);
        container = (RelativeLayout) findViewById(R.id.container1);
        yinlianPayBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new MyThread().start();
            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data == null) {
            return;
        }

        String str = data.getExtras().getString("pay_result");
        if (str.equalsIgnoreCase(R_SUCCESS)) {
            Snackbar.make(container, R.string.pay_success, Snackbar.LENGTH_LONG).show();
        } else if (str.equalsIgnoreCase(R_FAIL)) {
            Snackbar.make(container, R.string.pay_fail, Snackbar.LENGTH_LONG).show();
        } else if (str.equalsIgnoreCase(R_CANCEL)) {
            Snackbar.make(container, R.string.pay_cancel, Snackbar.LENGTH_LONG).show();
        }
    }

    /**
     * 获取tn线程
     *
     * @author JamesTao
     */
    private class MyThread extends Thread {
        public MyThread() {
        }

        @Override
        public void run() {
            super.run();
            String tn = null;
            InputStream is;
            try {
                String url = TN_URL_01;
                URL myURL = new URL(url);
                URLConnection ucon = myURL.openConnection();
                ucon.setConnectTimeout(120 * 1000);
                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);
        }
    }



}

4.布局文件activity_yinlian.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:id="@+id/container1"
                android:layout_height="match_parent"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context=".MainActivity">


    <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打开银联支付页面" />

</RelativeLayout>

应用截图:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值