积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
Android-银联支付
error997 (error997)    2015-05-10 19:11:14      目标    课题
   银联支付也是一般比较常用的支付功能,这里简单了介绍android app如果短期快速应用这一方面的东西。直接上代码:
   1.导入银联支付的依赖包:
   2.在res目录下增加资源包:
   3.配置AndroidManifest.xml文件配置打开的activity:

切换到: 纯代码  
   
<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" />


   <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是同时异步的)
   以下 我以测试接口为例

切换到: 纯代码  
   
/** 
 *      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 = "用户取消了支付";  
        }  
        //支付完成,处理自己的业务逻辑!   
    }  
  
}


   /**
 *      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:做这个的时候,你要保证你有个牛比的支持团队能够接受新事物,同时谴责下银联的客服 太垃圾了说!

转自 http://blog.csdn.net/qq285016127/article/details/38435585
(+0)技能Get

建议楼主:搜索关键字 |参考其他资源 |回复 |追问
  error997(error997):   个人中心    课题    目标    代码积累