Android支付宝,微信,银联支付支付的集成

发布时间:2025-05-18 09:11

选择有支付保障的支付方式,如支付宝、微信支付 #生活常识# #购物消费建议# #网购安全#

public  class  PayDemoActivity  extends FragmentActivity {

     public static  final  String PARTNER =  "2016012501118845" ;

     public static  final  String SELLER =  "6225757524716173" ;

     public static  final  String RSA_PRIVATE = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALTam792ATycFFDXWg6VEQofa3lT4qWkmcyXLnbSZVHV/brDdDNfeHMJWwvsvuJYNxEDZOYL/AA7/WuBLI+KklXhFUnu/NjQWmXzndiQI15Mfq+2TDh1Cf9H7ypUHah8RrcTwaM9H1/SWP7f2o2QOucB2Y/bI4Faq3ISwONXztTvAgMBAAECgYEAjK4cRwOhFKeIehX6XKuB9LDaJielfxoZ9PaI0y74V38w/q15X1jdVgaqBw2ismjSdO6B9xzNatU/XPe/VO0CxHFZ3/5Qhc/b724MsTxGyVC8TMI/oHMgAlVE3cR4/fwj0fhsYUYbSy9yCTqyinpdLZcNkUpMBJaeaM4jQJZvaSECQQDm7TrKPyJ1mgkKZADco+/HzcX1OnLvGtjFnSxD4LUShFfpYW5bWthy+869Jt9iIbOVDkvrfANMKhOuk0sEany/AkEAyH2SUFJUA1r+csi6WDf694npi6gtY0MhcNgGmoVr3g1daWf3cbx81VUE9y4ffqH91mdxWlVMVsCQetNYywdD0QJAAKQsA5/FQrpYyBSbBAHYip+BqzqsUwmqDHJxSwb2ucRwUg+ZNNu9uiQE4PWYrTcWvpU5lL/VaoK7Z0K1dJ+vFQJBAKV78F7X9XxniQqZYCYc3sufS+P4Rq5d5KZNyPWWFvjLs0SjifyZBbjYWibkLR7K+sgTzd4v9bjNbPPUqr+6GWECQAk6JYzWuS8D7ns/JEbI1fuUzm2U8/Q2R60dq7EFtbw+Po1dxZzUJ+V5JhW9exvhrr7lVII/0aB8nv/LUE+2XCo=" ;

     public static  final  String RSA_PUBLIC =  "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB" ;

     private static  final  int  SDK_PAY_FLAG =  1 ;

     private static  final  int  SDK_CHECK_FLAG =  2 ;

     private Handler mHandler =  new Handler() {

         public void  handleMessage(Message msg) {

             switch (msg.what) {

             case SDK_PAY_FLAG: {

                 PayResult payResult = new  PayResult((String) msg.obj);

                 /**

                  * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&

                  * docType=1) 建议商户依赖异步通知

                  */

                 String resultInfo = payResult.getResult();

                 String resultStatus = payResult.getResultStatus();

                 if (TextUtils.equals(resultStatus,  "9000" )) {

                     Toast.makeText(PayDemoActivity. this , "支付成功" ,

                             Toast.LENGTH_SHORT).show();

                 } else  {

                     if (TextUtils.equals(resultStatus,  "8000" )) {

                         Toast.makeText(PayDemoActivity. this , "支付结果确认中" ,

                                 Toast.LENGTH_SHORT).show();

                     } else  {

                         Toast.makeText(PayDemoActivity. this , "支付失败" ,

                                 Toast.LENGTH_SHORT).show();

                     }

                 }

                 break ;

             }

             case SDK_CHECK_FLAG: {

                 Toast.makeText(PayDemoActivity. this , "检查结果为:"  + msg.obj,

                         Toast.LENGTH_SHORT).show();

                 break ;

             }

             default :

                 break ;

             }

         };

     };

     @Override

     protected void  onCreate(Bundle savedInstanceState) {

         super .onCreate(savedInstanceState);

         setContentView(R.layout.pay_main);

     }

     /**

      * call alipay sdk pay. 调用SDK支付

      *

      */

     public void  pay(View v) {

         if (TextUtils.isEmpty(PARTNER) || TextUtils.isEmpty(RSA_PRIVATE)

                 || TextUtils.isEmpty(SELLER)) {

             new AlertDialog.Builder( this )

                     .setTitle( "警告" )

                     .setMessage( "需要配置PARTNER | RSA_PRIVATE| SELLER" )

                     .setPositiveButton( "确定" ,

                             new DialogInterface.OnClickListener() {

                                 public void  onClick(

                                         DialogInterface dialoginterface, int  i) {

                                     finish();

                                 }

                             }).show();

             return ;

         }

         String orderInfo = getOrderInfo( "测试的商品" , "该测试商品的详细描述" ,  "0.01" );

         /**

          * 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!

          */

         String sign = sign(orderInfo);

         try {

             /**

              * 仅需对sign 做URL编码

              */

             sign = URLEncoder.encode(sign, "UTF-8" );

         } catch  (UnsupportedEncodingException e) {

             e.printStackTrace();

         }

         /**

          * 完整的符合支付宝参数规范的订单信息

          */

         final String payInfo = orderInfo +  "&sign=\"" + sign +  "\"&"

                 + getSignType();

         System.out.println( "payInfo===========" + payInfo);

         Runnable payRunnable = new  Runnable() {

             @Override

             public void  run() {

                 PayTask alipay = new  PayTask(PayDemoActivity. this );

                 String result = alipay.pay(payInfo, true );

                 Message msg = new  Message();

                 msg.what = SDK_PAY_FLAG;

                 msg.obj = result;

                 mHandler.sendMessage(msg);

             }

         };

         Thread payThread = new  Thread(payRunnable);

         payThread.start();

     }

     /**

      * check whether the device has authentication alipay account.

      * 查询终端设备是否存在支付宝认证账户

      *

      */

     public void  check(View v) {

         Runnable checkRunnable = new  Runnable() {

             @Override

             public void  run() {

                 PayTask payTask = new  PayTask(PayDemoActivity. this );

                 boolean isExist = payTask.checkAccountIfExist();

                 Message msg = new  Message();

                 msg.what = SDK_CHECK_FLAG;

                 msg.obj = isExist;

                 mHandler.sendMessage(msg);

             }

         };

         Thread checkThread = new  Thread(checkRunnable);

         checkThread.start();

     }

     /**

      * get the sdk version. 获取SDK版本号

      *

      */

     public void  getSDKVersion() {

         PayTask payTask = new  PayTask( this );

         String version = payTask.getVersion();

         Toast.makeText( this , version, Toast.LENGTH_SHORT).show();

     }

     /**

      * 原生的H5(手机网页版支付切natvie支付) 【对应页面网页支付按钮】

      *

      * @param v

      */

     public void  h5Pay(View v) {

         Intent intent = new  Intent( this , H5PayDemoActivity. class );

         Bundle extras = new  Bundle();

         /**

          * url是测试的网站,在app内部打开页面是基于webview打开的,demo中的webview是H5PayDemoActivity,

          * demo中拦截url进行支付的逻辑是在H5PayDemoActivity中shouldOverrideUrlLoading方法实现,

          * 商户可以根据自己的需求来实现

          */

         extras.putString( "url" , url);

         intent.putExtras(extras);

         startActivity(intent);

     }

     /**

      * create the order info. 创建订单信息

      *

      */

     private String getOrderInfo(String subject, String body, String price) {

         String orderInfo = "partner="  +  "\""  + PARTNER +  "\"" ;

         orderInfo += "&seller_id="  +  "\""  + SELLER +  "\"" ;

         orderInfo += "&out_trade_no="  +  "\""  + getOutTradeNo() + "\"" ;

         orderInfo += "&subject="  +  "\""  + subject +  "\"" ;

         orderInfo += "&body="  +  "\""  + body +  "\"" ;

         orderInfo += "&total_fee="  +  "\""  + price +  "\"" ;

                 + "\"" ;

         orderInfo += "&service=\"mobile.securitypay.pay\"" ;

         orderInfo += "&payment_type=\"1\"" ;

         orderInfo += "&_input_charset=\"utf-8\"" ;

         orderInfo += "&it_b_pay=\"30m\"" ;

         orderInfo += "&return_url=\"m.alipay.com\"" ;

         return orderInfo;

     }

     /**

      * get the out_trade_no for an order. 生成商户订单号,该值在商户端应保持唯一(可自定义格式规范)

      *

      */

     private String getOutTradeNo() {

         SimpleDateFormat format = new  SimpleDateFormat( "MMddHHmmss" ,

                 Locale.getDefault());

         Date date = new  Date();

         String key = format.format(date);

         Random r = new  Random();

         key = key + r.nextInt();

         key = key.substring( 0 , 15 );

         return key;

     }

     /**

      * sign the order info. 对订单信息进行签名,即加密

      *

      * @param content

      *            待签名订单信息

      */

     private String sign(String content) {

         return SignUtils.sign(content, RSA_PRIVATE);

     }

     /**

      * get the sign type we use. 获取签名方式

      *

      */

     private String getSignType() {

         return "sign_type=\"RSA\"" ;

     }

}

网址:Android支付宝,微信,银联支付支付的集成 https://www.yuejiaxmz.com/news/view/992218

相关内容

Android平台微信与支付宝支付集成教程
iOS集成三方支付支付宝、微信、银联、Apple Pay
支付宝支付集成总结
第三方支付平台:支付宝与微信支付,让支付更便捷
《Android开发工具箱》中支持哪些第三方支付集成?
两个分类,帮你快速集成支付宝和微信支付
支付宝快捷支付服务
中国新支付巨头崛起,“叫板”微信支付宝,移动支付改变生活
信用卡支付宝快捷支付
怎么集成支付宝移动支付(支付宝密钥)?

随便看看