支付宝(4)创建界面FaceToFacePayment

最后一步 创建界面  测试

(未经允许!不得转载!转载也行!请加链接!)

using AlipayRelevant;
using Aop.Api.Request;
using Aop.Api.Response;
using Com.Alipay;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
//http://www.cnblogs.com/CigaretteBeauty/
namespace FaceToFacePayment
{
    public partial class Form1 : Form
    {
        public Form1()
        {       //http://www.cnblogs.com/CigaretteBeauty/
            InitializeComponent();
        }
        NewClass newClass = new NewClass();

        private void button1_Click(object sender, EventArgs e)
        {       //http://www.cnblogs.com/CigaretteBeauty/
            AlipayTradePrecreateResponse payResponse;
            string result = ScanCode(out payResponse);
            this.textBox1.Text = result;
            pictureBox1.Image = newClass.GenByZXingNet(payResponse.QrCode);
        }
        /// <summary>
        /// 扫码支付
        /// </summary>
        /// <param name="payResponse">返回二维码字符串</param>
        /// <param name="result">返回结果</param>
        private string ScanCode(out AlipayTradePrecreateResponse payResponse)
        {
            //线上联调时,请输入真实的外部订单号。
            string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss") + "0000" + (new Random()).Next(1, 10000).ToString();  //商户唯一订单号
            string subject = WIDsubject.Text.Trim();    //商品名称
            string total_amount = WIDamount.Text.Trim();    //金额

            //请根据实际请求需要biz_content参数
            StringBuilder sb = new StringBuilder();
            sb.Append("{\"out_trade_no\":\"" + out_trade_no + "\",");
            sb.Append("\"total_amount\":\"" + total_amount + "\",\"discountable_amount\":\"0.00\",");
            sb.Append("\"subject\":\"" + subject + "\",\"body\":\"test\",");
            sb.Append("\"goods_detail\":[{\"goods_id\":\"items01\",\"goods_name\":\"XX酒店消费\",\"goods_category\":\"000001\",\"price\":\"88.00\",\"quantity\":\"1\"}],");
            sb.Append("\"operator_id\":\"op001\",\"store_id\":\"pudong001\",\"terminal_id\":\"t_001\",");
            string expire_time = System.DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
            sb.Append("\"time_expire\":\"" + expire_time + "\"}");

            payResponse = newClass.Prepay(sb.ToString());
            //以下返回结果的处理供参考。
            //payResponse.QrCode即二维码对于的链接
            //将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。
             string result = payResponse.Body;
            if (payResponse != null)
            {
                switch (payResponse.Code)
                {
                    case ResultCode.SUCCESS:
                        System.Console.Write(" 预下单成功");
                        StringBuilder sb1 = new StringBuilder();
                        sb1.Append("{\"out_trade_no\":\"" + out_trade_no + "\"}");
                        break;
                    case ResultCode.FAIL:
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append("{\"out_trade_no\":\"" + out_trade_no + "\"}");
                        newClass.Cancel(sb2.ToString());
                        break;
                }
            }
            return result;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.textBox3.Text = BarCode();
        }

        private string BarCode()
        {
            //线上联调时,请输入真实的外部订单号。
            string out_trade_no = System.DateTime.Now.ToString("yyyyMMddHHmmss") + "0000" + (new Random()).Next(1, 10000).ToString(); //商户唯一订单号

            //线上联调时,请输入真实的条码。

            string auth_code = TXTBarCode.Text.Trim();
            if (String.IsNullOrEmpty(auth_code))
            {
                MessageBox.Show("扫码失败!");
                return "扫码失败";
            }
            string total_amount = TXTMoney.Text.Trim();

            StringBuilder sb = new StringBuilder();
            sb.Append("{\"out_trade_no\":\"" + out_trade_no + "\",");
            sb.Append("\"scene\":\"bar_code\",");
            sb.Append("\"auth_code\":\"" + auth_code + "\",");
            sb.Append("\"total_amount\":\"" + total_amount + "\",\"discountable_amount\":\"0.00\",");
            sb.Append("\"subject\":\"泰能软件-条码支付\",\"body\":\"abc\",");
            sb.Append("\"goods_detail\":[{\"goods_id\":\"items01\",\"goods_name\":\"XX酒店消费\",\"goods_category\":\"000001\",\"price\":\"" + total_amount + "\",\"quantity\":\"1\"}],");
            sb.Append("\"operator_id\":\"op001\",\"store_id\":\"pudong001\",\"terminal_id\":\"t_001\",");

            string expire_time = System.DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
            sb.Append("\"time_expire\":\"" + expire_time + "\"}");

            AlipayTradePayResponse payResponse = newClass.Pay(sb.ToString());

            string result = payResponse.Body;

            if (payResponse != null)
            {

                switch (payResponse.Code)
                {
                    case ResultCode.SUCCESS:
                        System.Console.Write("支付成功");
                        result = payResponse.Body;
                        break;

                    case ResultCode.INRROCESS:
                        StringBuilder sb1 = new StringBuilder();
                        sb1.Append("{\"out_trade_no\":\"" + out_trade_no + "\"}");

                        //根据业务需要,选择是否新起线程进行轮询
                        //ParameterizedThreadStart ParStart = new ParameterizedThreadStart(LoopQuery);
                        //Thread myThread = new Thread(ParStart);
                        //object o = payResponse;
                        //myThread.Start(o);

                        //返回支付处理中,需要进行轮询
                        AlipayTradeQueryResponse queryResponse =newClass.LoopQuery(sb1.ToString());   //用订单号trade_no进行轮询也是可以的。
                        if (queryResponse != null)
                        {
                            result = queryResponse.Body;
                        }
                        break;

                    case ResultCode.FAIL:
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append("{\"out_trade_no\":\"" + out_trade_no + "\"}");
                        newClass.Cancel(sb2.ToString());
                        break;

                }
            }

            return result;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            StringBuilder sb1 = new StringBuilder();
            sb1.Append("{\"out_trade_no\":\"" + this.textBox2.Text + "\"}");
            AlipayTradeQueryResponse queryResponse = newClass.LoopQuery(sb1.ToString());   //用订单号trade_no进行轮询也是可以的。
            if (queryResponse != null)
            {
                this.textBox4.Text = "\r\n" + queryResponse.Body;
            }

        }

        private void button4_Click(object sender, EventArgs e)
        {
            AlipayTradeQueryRequest payRequst = new AlipayTradeQueryRequest();
            AlipayTradeQueryResponse payResponse = null;

            for (int i = 1; i <= 6; i++)
            {
                //Thread.Sleep(5000);
                payResponse = newClass.client.Execute(payRequst);
                if (string.Compare(payResponse.Code, ResultCode.SUCCESS, false) == 0)
                {
                    if (payResponse.TradeStatus == "TRADE_FINISHED"
                        || payResponse.TradeStatus == "TRADE_SUCCESS"
                        || payResponse.TradeStatus == "TRADE_CLOSED")
                        break;
                }
            }
            StringBuilder sb1 = new StringBuilder();
            sb1.Append("{\"out_trade_no\":\"" + this.textBox2.Text + "\"}");
           this.textBox4.Text = newClass.Cancel(sb1.ToString()).Body;
        }

    }

}

时间: 2024-11-08 14:17:10

支付宝(4)创建界面FaceToFacePayment的相关文章

创建界面视图的流程

1,创建主窗体 在内存中实例化JFrame对象 通过使用setSize(),setBounds()或者pack()方法给JFrame设置大小 通过使用setTitle()设置标题,setDefaultCloseOperation()设置关闭策略,setLocationRelativeTo()设置主窗体的位置 通过使用setVisible(true)设置组件对象可见 2,设置布局管理器 通过setLayout()设置布局管理器 通过add()语句添加各种组件到布局管理器中 创建界面视图的流程,布布

在Qt中使用C++代码创建界面

Qt 支持两种创建界面的方式: 一种是使用C++代码,Qt 自诞生以来就支持: 一种是使用 QML,可以创建个性化的界面: Qt 提供了多种工程类型,选择不同的工程类型将导致使用不同的方式来创建界面. 首次打开Qt,会出现欢迎界面,点击New Project按钮,或者在菜单栏点击文件,然后选择新建文件或项目, 都会弹出向导对话框,如下图所示:(不同的Qt编译器版本,界面可能会有所差别) Qt Widgets Application和Qt Console Application工程将会使用C++代

用IOS做一个界面切换的效果(登录界面和注册界面和找回密码界面的切换)(用封装好的lable和textf创建界面)

创建一个类封装uitextfield和UIlabel (源代码.m文件) #import "TLView.h" @interface TLView () { UILabel *_desLabel;    //左边的lable UITextField *_textField;//右边的 } @end @implementation TLView //改写父类的初始化方法,处理相同的性能 - (id)initWithFrame:(CGRect)frame { self = [super i

使用Qt Designer创建界面

在博客 "在Qt中使用C++代码创建界面"  (地址:http://blog.csdn.net/rl529014/article/details/51345619)中,我讲了如何通过纯C++代码来创建Qt图形界面, 这是传统的GUI程序开发方式,只使用C++代码,C++既负责设计界面,也负责处理业务逻辑. 界面是用户能够直接看到的,称为"前端":业务逻辑的处理用户看不到,在背后默默进行,称为"后台". 传统的GUI程序开发不区分前端和后台,统一使

iOS创建界面方法的讨论

以前在入门的时候,找的入门书籍上编写的 demo 都是基于 Storyboards 拖界面的.后来接触公司项目,发现界面都是用纯代码去写复杂的 autoLayout 的.再然后,领导给我发了个 Masonry 库去看,依然是手写代码布局界面,但效率高了不少.工作一段时间,看了很多博客,也看了一些书,发现用纯代码写界面的很少,于是就在 Google 上搜 Storyboards 有什么好处,最后发现了一篇非常好的文章.在此提炼文章的一些观点,同时表达一下自己的观点. 文章链接:iOS User I

学习MFC创建界面

原始学习文章地址: http://blog.csdn.net/chenyusiyuan/article/details/4744097 一.创建MFC 首先创建一个MFC对话框应用程序(Dialog-based Application)如下: 在VS2013里,我们可以用一个 Solution 来组合几个 Project (每个 Project 基本上只包含一个 Program),当我们要构建一个多Program的应用时(例如一个客户端程序加一个服务器应用程序),利用 Solution 可以将这

基于qml创建最简单的图像处理程序(1)-基于qml创建界面

为什么使用QT,包括进一步使用QML?两个主要原因,一是因为我是一个c++程序员,有语言使用惯性:二是我主要做图像处理方面工作,使用什么平台对于我来说不重要,我只需要在不同平台上面能够运行我的图像处理程序(而主要是和OpenCV有关系的).所以选择QT,它能够在win/linux/android,包括PI上面都提供不错的GUI支持:而如果我想在Android上编写图像处理程序,又主要遇到两个问题,一是相机的获取.OpenCV的videocapture在Android上支持不好,在最新版本的Ope

使用QML创建界面(转)

原文转自 https://blog.csdn.net/rl529014/article/details/51378307 在Qt编程中,我们可以使用纯C++代码,或C++和XML结合的方式来创建GUI程序. 下面我介绍一下如何在Qt Creater中用QML创建GUI程序. 首先打开Qt Creater,选择"Qt Quick Application": 然后选择Qt Quick Component Set的版本,注意此处的版本要和程序中导入的版本一致. 新建完成后,显示的界面如下:

代码创建UI界面

UIKit框架 UIResponder – UIApplication – UIView     •  UIWindow,UILabel,UIImageView,UIPickerViewUIAlertView,UIScrollVIew,UIProgressView,UIToolbar,UIWebView • UIControl – UIButton,UITextField,UISwitch,UISegementControl, UIPageControl,UISlider – UIDatePic