Android-银联支付开发

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

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

Android-银联支付开发_第1张图片

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


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

[html]  view plain copy
  1. <activity  
  2.             android:name="com.unionpay.uppay.PayActivity"  
  3.             android:configChanges="orientation|keyboardHidden"  
  4.             android:excludeFromRecents="true"  
  5.             android:label="@string/app_name"  
  6.             android:screenOrientation="portrait"  
  7.             android:windowSoftInputMode="adjustResize" />  
至此,我们的项目环境就搭好了.(以上资料文件,请查看银联测试文档 目录的androiddemo);


银联支付代码3步骤:

1.获取TN号  2.请求控件界面(PayActivity)   

3.ActivityResult处理支付结果(但该结果并不一定正确 ,因为银联系统通过异步返回给服务器和我们的app是同时异步的)

Android-银联支付开发_第2张图片

以下 我以测试接口为例

[java]  view plain copy
  1. /** 
  2.  *      UnionPay Test 
  3.  * 
  4.  *  @author Lean  @date:2014-8-8   
  5.  */  
  6. public class MainActivity extends Activity implements Runnable {  
  7.   
  8.     private String mMode = "01";//设置测试模式:01为测试 00为正式环境  
  9.     private static final String TN_URL_01 = "http://202.101.25.178:8080/sim/gettn";//自己后台需要实现的给予我们app的tn号接口  
  10.   
  11.     private Handler mHandler=new Handler(){  
  12.           
  13.         public void handleMessage(android.os.Message msg) {  
  14.   
  15.             String tn = "";  
  16.             if (msg.obj == null || ((String) msg.obj).length() == 0) {  
  17.                 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);  
  18.                 builder.setTitle("错误提示");  
  19.                 builder.setMessage("网络连接失败,请重试!");  
  20.                 builder.setNegativeButton("确定",  
  21.                         new DialogInterface.OnClickListener() {  
  22.                             @Override  
  23.                             public void onClick(DialogInterface dialog, int which) {  
  24.                                 dialog.dismiss();  
  25.                             }  
  26.                         });  
  27.                 builder.create().show();  
  28.             } else {  
  29.                 tn = (String) msg.obj;  
  30.                 doStartUnionPayPlugin(MainActivity.this, tn, mMode);  
  31.             }  
  32.         }  
  33.     };  
  34.       
  35.     /** 
  36.      *  启动支付界面 
  37.      */  
  38.     public void doStartUnionPayPlugin(Activity activity, String tn, String mode) {  
  39.         UPPayAssistEx.startPayByJAR(activity, PayActivity.classnullnull,  
  40.                 tn, mode);  
  41.     }  
  42.       
  43.       
  44.     @Override  
  45.     protected void onCreate(Bundle savedInstanceState) {  
  46.         super.onCreate(savedInstanceState);  
  47.         setContentView(R.layout.activity_main);  
  48.   
  49.         new Thread(MainActivity.this).start();  
  50.   
  51.     }  
  52.   
  53.       
  54.     @Override  
  55.     public void run() {  
  56.         String tn = null;  
  57.         InputStream is;  
  58.         try {  
  59.   
  60.             String url = TN_URL_01;  
  61.   
  62.             URL myURL = new URL(url);  
  63.             URLConnection ucon = myURL.openConnection();  
  64.             ucon.setConnectTimeout(120000);  
  65.             is = ucon.getInputStream();  
  66.             int i = -1;  
  67.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  68.             while ((i = is.read()) != -1) {  
  69.                 baos.write(i);  
  70.             }  
  71.   
  72.             tn = baos.toString();  
  73.             is.close();  
  74.             baos.close();  
  75.         } catch (Exception e) {  
  76.             e.printStackTrace();  
  77.         }  
  78.           
  79.         Message msg = mHandler.obtainMessage();  
  80.         msg.obj = tn;  
  81.         mHandler.sendMessage(msg);  
  82.     }  
  83.   
  84.     @Override  
  85.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  86.         if (data == null) {  
  87.             return;  
  88.         }  
  89.         String msg = "";  
  90.         /* 
  91.          * 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消 
  92.          */  
  93.         String str = data.getExtras().getString("pay_result");  
  94.         Log.v("zftphone""2 "+data.getExtras().getString("merchantOrderId"));  
  95.         if (str.equalsIgnoreCase("success")) {  
  96.             msg = "支付成功!";  
  97.               
  98.         } else if (str.equalsIgnoreCase("fail")) {  
  99.             msg = "支付失败!";  
  100.               
  101.         } else if (str.equalsIgnoreCase("cancel")) {  
  102.               
  103.             msg = "用户取消了支付";  
  104.         }  
  105.         //支付完成,处理自己的业务逻辑!  
  106.     }  
  107.   
  108. }  

Tip:做这个的时候,你要保证你有个牛比的支持团队能够接受新事物,同时谴责下银联的客服 太垃圾了说!

你可能感兴趣的:(Android-银联支付开发)