本文简述如何在Smobiler中调用支付宝支付。
Step 1. 界面
新建一个窗体,并在窗体中拖入Button,Label,AliPay等控件,布局如下:

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.payAlipayTradeAppPayRequest 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("");//这里和普通的接口调用不同,使用的是sdkExecuteAlipayTradeAppPayResponse 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.payAlipayTradeQueryRequest request = new AlipayTradeQueryRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。AlipayTradeQueryModel model = new AlipayTradeQueryModel();model.OutTradeNo = tradeNo;request.SetBizModel(model);//这是普通的接口使用ExecuteAlipayTradeQueryResponse 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插件并打包客户端。登陆云平台,选择应用(或者创建应用)-应用打包,

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















