首页 > 编程语言 > .NET(C#、VB)APP开发——Smobiler平台控件介绍:AliPay组件

.NET(C#、VB)APP开发——Smobiler平台控件介绍:AliPay组件

时间:2022-11-07 17:34:00浏览次数:39  
标签:AliPay 控件 string Smobiler request private Body model response

本文简述在如何在Smobiler中调用支付宝支付。

Step 1. 新建一个窗体,并在窗体中拖入Button,Label,AliPay等控件,布局如下:

1.png

Step 2. 代码

在窗体中声明变量

        //订单编号
        private string tradeNo;

        //支付宝应用编号,此应用必须签约 APP支付(请从支付宝开发者平台获取)
        private string appid = "************";
        //应用的私钥
        private string appPrivateKey = "****************************";
        //应用的支付宝公钥
        private string aliPublicKey = "************************";
        //阿里支付网关
        private string aliOpenAPI = "https://openapi.alipay.com/gateway.do";
        

【生成订单编号】按钮点击事件代码:

        private void btnOutOrder_Press(object sender, EventArgs e)
        {
            tradeNo = "SMOAPP" + DateTime.Now.ToString("yyyyMMddHHmmss");
            this.labOutOrder.Text = tradeNo;
        }

【创建订单】按钮的点击事件代码如下:

        private void btnCreateOrder_Press(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tradeNo) == true)
            {
                btnOutOrder_Press(null, null); //生成订单编号
            }
            IAopClient client = GetAPOClient();
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.trade.app.pay
            AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
            AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
            model.Body = "请支持0.01元"; //支付描述
            model.Subject = "支付"; //支付标题
            model.TotalAmount = "0.01"; //支付金额
            model.ProductCode = "QUICK_MSECURITY_PAY"; //产品码
            model.OutTradeNo = tradeNo; //外部编号,外部编号在支付成功时,只能使用一次
            model.TimeoutExpress = "30m"; //超时时间
            request.SetBizModel(model);
            //有条件可设置回调地址,支付宝在支付完成后会POST此地址。或通过查询的方式。
            //request.SetNotifyUrl("");
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = client.SdkExecute(request);
            //页面输出的response.Body就是orderString 可以直接给客户端请求,无需再做处理。
            System.Diagnostics.Debug.WriteLine(response.Body);

            //注意,第一个参数是苹果支付需要的格式为ap应用编号,android可设置为空
            this.aliPay1.AppPay("ap" + appid, response.Body, (obj, args) =>
            {
                if (args.isError == true)
                {
                    MessageBox.Show(args.error);
                }
                else
                {
                    string result = "";
                    //foreach (KeyValuePair<string, object> item in args.result)
                    //{
                    //    result += string.Format("{0}/{1}" + Environment.NewLine, item.Key, item.Value);
                    //}
                    MessageBox.Show(result);
                }
            });
        }

【支付状态查询】按钮点击事件代码:

        private void btnOrderStatus_Press(object sender, EventArgs e)
        {
            IAopClient client = GetAPOClient();
            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称如:alipay.trade.app.pay
            AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
            AlipayTradeQueryModel model = new AlipayTradeQueryModel();
            model.OutTradeNo = tradeNo;
            request.SetBizModel(model);
            //这是普通的接口使用Execute
            AlipayTradeQueryResponse response = client.Execute(request);
            //页面输出的response.Body就是orderString 可以直接给客户端请求,无需再做处理。
            System.Diagnostics.Debug.WriteLine(response.Body);
            MessageBox.Show(response.Body);
        }

        private IAopClient GetAPOClient()
        {
            return new DefaultAopClient(aliOpenAPI, appid, appPrivateKey, "json", "1.0", "RSA2", aliPublicKey, "utf-8", false);
        }

Step 3. 测试

AliPay组件测试需要在Smobiler 云平台上添加AliPay插件并打包客户端。登陆云平台,选择应用(或者创建应用)-应用打包,

2.png

将打包好的客户端下载安装到手机上,运行服务端程序,进行测试,效果如下

3.png

标签:AliPay,控件,string,Smobiler,request,private,Body,model,response
From: https://blog.51cto.com/u_14360220/5830146

相关文章

  • WPF 自定义控件 动画仪表盘控件 Gauge
    原文网址:https://blog.csdn.net/weixin_42850577/article/details/124008594WPF自制动画仪表盘控件Gauge  Xaml代码:<StyleTargetType="{x:Typectrl:ArcGauge......
  • 关于CHART控件使用的一个例子
    最近一段时间,有用到WinForm的chart控件,主要是做了一个纺织行业的验布数据的图表显示,比如长度值和重量值的曲线绘制,以此图表,相关人员则可判断哪些检验数据是错误......
  • C#之跨线程访问控件属性
    在窗体设计中,会经常遇到跨线程访问窗体控件,如果直接访问会报错,那怎么办呢?直接上代码代码为一个类,实际运用的时候直接实例化调用即可  1classCrossThreadUp......
  • ASP.net wp 动态添加控件设置属性事件
     页面代码:<body><formid="form1"runat="server"><div><asp:LabelID="Label1"runat="server"Text="Label"></asp:Label><......
  • delphi TscSplitView控件学习笔记(2)
    效果图:设计图:scSplitView设置:opened:false;openedwidth:150;(按你自己需求)compactwidth:35;(确保只能看到图标即可)设计技巧:compactwidth先设置成全尺......
  • delphi TscSplitView控件学习笔记
    一.先说效果吧,放置的位置不一样,显示出来的效果也不一样 然后效果是这样的:注意位置标记1按钮的位置.当DisplayMode:=scsvmOverlay时,会遮挡TscSplitView......
  • 【Android】SwipeRefreshLayout的简单使用教程。下拉刷新控件炫酷效果。
    作者:程序员小冰,GitHub主页:​​https://github.com/QQ986945193​​新浪微博:​​http://weibo.com/mcxiaobing​​首先给大家看一下我们今天这个最终实现的效果图:好了,简......
  • UIPath踩坑记一在浏览器控件中找不到”打开浏览器“控件
    问题:在浏览器控件中找不到”打开浏览器“控件  解决:1、检查程序包中是否正常安装”UiPath.UiAutomation“包,如下图12、检查设计设置,是否关闭”为新项目使用新式体验......
  • 上传大文件解决方案控件
    ​ 总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比......
  • RecordDispaly控件上显示Blob分析结果的方法
    这里写一下另一种方法,即从CreateLastRunRecord().SubRecords[0]中将所有的图形Record提取出来,添加到display控件上,以下为代码:此帖售价 2 金币,已有 56 人购买 [记录......