您的位置:首页 > 移动开发 > Android开发

Android-银联支付开发

2016-06-12 22:42 471 查看
转自:http://blog.csdn.net/qq285016127/article/details/38435585

银联支付也是一般比较常用的支付功能,这里简单了介绍Android app如果短期快速应用这一方面的东西。直接上代码:

1.导入银联支付的依赖包:



2.在res目录下增加资源包:



3.配置AndroidManifest.xml文件配置打开的activity:

[html] view
plaincopy





<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
plaincopy





/** 

 *      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 = "用户取消了支付";  

        }  

        //支付完成,处理自己的业务逻辑!  

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: