银联支付组件。
                            ![]()  | 
                        
                            ![]()  | 
                    
| 图1 | 图2 | 
                            方法 | 
                        
                            方法说明 | 
                    
|---|---|
| 
                             Pay  | 
                        
                             支付。  | 
                    
    C#:
        
         string tradeNo = "";//交易订单好
         string merID = "**********";//商户id,从银联平台获取
         string ordertime = "";//交易事件
           
            
    C#:
        private void button3_Press(object sender, EventArgse)
        {
            Dictionary<string, string> param = new Dictionary<string, string();
            //以下信息非特殊情况不需要改动
            param["version"] = SDKConfig.Version;//版本号
            param["encoding"] = "UTF-8";//编码方式
            param["txnType"] = "01";//交易类型
            param["txnSubType"] = "01";//交易子类
            param["bizType"] = "000201";//业务类型
            param["signMethod"] = SDKConfig.SignMethod;//签名方法
            param["channelType"] = "08";//渠道类型
            param["accessType"] = "0";//接入类型
            param["backUrl"] = SDKConfig.BackUrl;  //后台通知地址
            param["currencyCode"] = "156";//交易币种
            //TODO 以下信息需要填写
            param["merId"] = merID;//商户号,请改自己的测试商户号,此处默认取demo演示页面传递的参数
            param["orderId"] ="SMOAPP" + DateTime.Now.ToString("yyyyMMddHHmmss");//商户订单号,8-32位数字字母,不能含“-”或“_”,可以自行定制规则
            param["txnTime"] = ordertime = DateTime.Now.ToString("yyyyMMddHHmmss");//订单发送时间,格式为YYYYMMDDhhmmss,取北京时间,此处默认取demo演示页面传递的参数,参考取法: DateTime.Now.ToString("yyyyMMddHHmmss")
            param["txnAmt"] = "5000";//交易金额,单位分,此处默认取demo演示页面传递的参数
            // 请求方保留域,
            // 透传字段,查询、通知、对账文件中均会原样出现,如有需要请启用并修改自己希望透传的数据。
            // 出现部分特殊字符时可能影响解析,请按下面建议的方式填写:
            // 1. 如果能确定内容不会出现&={}[]"'等符号时,可以直接填写数据,建议的方法如下。
            //param["reqReserved"] = "透传信息1|透传信息2|透传信息3";
            // 2. 内容可能出现&={}[]"'符号时:
            // 1) 如果需要对账文件里能显示,可将字符替换成全角&={}“‘字符(自己写代码,此处不演示);
            // 2) 如果对账文件没有显示要求,可做一下base64(如下)。
            //    注意控制数据长度,实际传输的数据长度不能超过1024位。
            //    查询、通知等接口解析时使用System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(reqReserved))解base64后再对数据做后续解析。
            //param["reqReserved"] = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("任意格式的信息都可以"));
            AcpService.Sign(param, System.Text.Encoding.UTF8);  // 签名
            string url = SDKConfig.AppRequestUrl;
            Dictionary<string, string > rspData = AcpService.Post(param, url, System.Text.Encoding.UTF8);
            if (rspData.Count != 0)
            {
               if (AcpService.Validate(rspData, System.Text.Encoding.UTF8))
                {
                    Toast("商户端验证返回报文签名成功。");
                    string respcode = rspData["respCode"]; //其他应答参数也可用此方法获取
                    if ("00" == respcode)
                    {
                        //成功
                        //TODO
                        Toast("成功接收tn:" + rspData["tn"]);
                        unionPay1.Pay("01", rspData["tn"].ToString(),(obj,args)=> {
                            if (args.isError == false)
                                Toast("succcess");
                            else { Toast(args.error); }
                        });
                       //后续请将此tn传给手机开发,由他们用此tn调起控件后完成支付。
                        //手机端demo默认从仿真获取tn,仿真只返回一个tn,如不想修改手机和后台间的通讯方式,
                    }
                    else
                    {
                        //其他应答码做以失败处理
                        //TODO
                        Toast("失败:" + rspData["respMsg"]);
                    }
                }
                else
                {
                    Toast("商户端验证返回报文签名失败。");
                }
            }
            else
            {
                Toast("请求失败");
            }
        }
        
                 
    C#:
        
            // 第三个参数需要和smobiler云平台上添加银联插件填写value值一致
            unionPay1.Pay("01", rspData["tn"].ToString(), "payDemo", (obj, args) => {});
            
               
            
    C#:
        private void button2_Press(object sender, EventArgs e)
        {
           Dictionary<string, string param = new Dictionary<string, string();
            //以下信息非特殊情况不需要改动
            param["version"] = SDKConfig.Version;//版本号
            param["encoding"] = "UTF-8";//编码方式
            param["certId"] = CertUtil.GetSignCertId();//证书ID
            param["signMethod"] = SDKConfig.SignMethod;//签名方法
            param["txnType"] = "00";//交易类型
            param["txnSubType"] = "00";//交易子类
            param["bizType"] = "000000";//业务类型
            param["accessType"] = "0";//接入类型
            param["channelType"] = "07";//渠道类型
            //TODO 以下信息需要填写
            param["orderId"] = tradeNo;	//请修改被查询的交易的订单号,8-32位数字字母,不能含“-”或“_”,此处默认取demo演示页面传递的参数
            param["merId"] = merID;//商户代码,请改成自己的测试商户号,此处默认取demo演示页面传递的参数
            param["txnTime"] =ordertime;//请修改被查询的交易的订单发送时间,格式为YYYYMMDDhhmmss,此处默认取demo演示页面传递的参数
            AcpService.Sign(param, System.Text.Encoding.UTF8);  // 签名
            string url = SDKConfig.SingleQueryUrl;
            Dictionary<string, string> rspData = AcpService.Post(param, url, System.Text.Encoding.UTF8);
            if (rspData.Count != 0)
            {
                if (AcpService.Validate(rspData, System.Text. Encoding.UTF8))
                {
                    string respcode = rspData["respCode"];  //其他应答参数也可用此方法获取
                    if ("00" == respcode)
                    {
                        string origRespCode = rspData["origRespCode"];  //其他应答参数也可用此方法获取
                         //处理被查询交易的应答码逻辑
                        if ("00" == origRespCode)
                        {
                             //交易成功,更新商户订单状态
                            //TODO
                            Toast("交易成功。");
                        }
                        else if ("03" == origRespCode ||
                            "04" == origRespCode ||
                            "05" == origRespCode)
                        {
                             //需再次发起交易状态查询交易
                            //TODO
                            Toast("稍后查询。");
                        }
                        else
                        {
                             //其他应答码做以失败处理
                            //TODO
                            Toast("交易失败:" + rspData["origRespMsg"]);
                        }
                    }
                    else if ("03" == respcode ||
                            "04" == respcode ||
                            "05" == respcode)
                    {
                        //不明原因超时,后续继续发起交易查询。
                        //TODO<
                        Toast("处理超时,请稍后查询。");
                    }
                    else
                    {
                        //其他应答码做以失败处理
                        //TODO
                        Toast("查询操作失败:" + rspData["respMsg"]);
                    }
                }
            }
            else
            {
                Toast("请求失败");
            }
        }
            
            
       
            完整代码参考SmobilerTutorials