zoukankan      html  css  js  c++  java
  • android支付之银联支付

    先导入jar包UPPapAssistEx

    android银联支付分成以下三个部分↓

    一、从网络开始,获取交易流水号即TN(通过网络请求从后台获取到TN)

    跟接口处商量获取方式

    二、通过银联工具类启动支付插件

    UpPayUtils.doStartUnionPayPlugin(this,tn,ConstantValues.MODE);

    银联支付工具类

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.util.Log;
    import com.unionpay.UPPayAssistEx;
    import com.xh.boke.ConstantValues;
    
    /**
     * 银联支付工具类
     * Created by Administrator on 2015/10/26 0026.
     */
    public class UpPayUtils {
    
        private static final String TAG = "UpPayUtils";
    
        /**
         * 调用银联支付
         * @param activity 活动页
         * @param tn 流水号
         * @param mode 启动环境
         */
        public static void doStartUnionPayPlugin(final Activity activity, String tn, String mode) {
            // mMode参数解释:
            // 00 - 启动银联正式环境
            // 01 - 连接银联测试环境
            int ret = UPPayAssistEx.startPay(activity, null, null, tn, mode);
            if (ret == ConstantValues.PLUGIN_NEED_UPGRADE || ret == ConstantValues.PLUGIN_NOT_INSTALLED) {
                // 需要重新安装控件
                Log.e(TAG, " plugin not found or need upgrade!!!");
    
                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                builder.setTitle("提示");
                builder.setMessage("完成购买需要安装银联支付控件,是否安装?");
    
                builder.setNegativeButton("确定",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                UPPayAssistEx.installUPPayPlugin(activity);
                                dialog.dismiss();
                            }
                        });
    
                builder.setPositiveButton("取消",
                        new DialogInterface.OnClickListener() {
    
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                builder.create().show();
    
            }
            Log.e(TAG, "" + ret);
        }
    
    }

    三、处理银联手机支付控件返回的支付结果

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        if (data == null) {
            return;
        }
    
        /*
         * 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消
         */
        String str = data.getExtras().getString("pay_result");
        if (str.equalsIgnoreCase("success")) {
            Toast.makeText(this, "支付成功!", Toast.LENGTH_SHORT).show();
        } else if (str.equalsIgnoreCase("fail")) {
            Toast.makeText(this, "支付失败!", Toast.LENGTH_SHORT).show();
        } else if (str.equalsIgnoreCase("cancel")) {
            Toast.makeText(this, "您取消了订单支付!", Toast.LENGTH_SHORT).show();
        }
        
    }

    下面是银联的配置信息

    public class ConstantValues {
        
        /** 银联支付 */
        public static final int PLUGIN_VALID = 0;//已经安装银联插件
        public static final int PLUGIN_NOT_INSTALLED = -1;//未安装银联插件
        public static final int PLUGIN_NEED_UPGRADE = 2;//需要重新安装银联插件
        /** mMode参数解释: "00" - 启动银联正式环境 "01" - 连接银联测试环境 */
        public static final String MODE = "01";
        
    }

    另外,在Android Manifest.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.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
    
    <!-- 银联支付 -->
    <activity
        android:name="com.unionpay.uppay.PayActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" 
        android:configChanges="orientation|keyboardHidden"
        android:excludeFromRecents="true"
        android:windowSoftInputMode="adjustResize">
    </activity>

    注意:调用银联支付需要银联插件的支持,在assets文件夹中放入银联插件,在代码中已经有检测功能,这样可免下载安装

  • 相关阅读:
    Web API 强势入门指南
    毫秒必争,前端网页性能最佳实践
    Windbg Extension NetExt 使用指南 【3】 ---- 挖掘你想要的数据 Managed Heap
    Windbg Extension NetExt 使用指南 【2】 ---- NetExt 的基本命令介绍
    Windbg Extension NetExt 使用指南 【1】 ---- NetExt 介绍
    WCF : 修复 Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service 问题
    透过WinDBG的视角看String
    Microsoft Azure Web Sites应用与实践【4】—— Microsoft Azure网站的“后门”
    企业IT管理员IE11升级指南【17】—— F12 开发者工具
    WCF : 如何将NetTcpBinding寄宿在IIS7上
  • 原文地址:https://www.cnblogs.com/kangweifeng/p/4910994.html
Copyright © 2011-2022 走看看