使用C# Window 窗体实现支付宝支付功能

文章详细介绍了如何在C#的Window窗体应用中集成支付宝支付功能,包括在支付宝开放平台注册、获取appid和密钥,以及使用Alipay.AopSdk.Core和Alipay.AopSdk.F2F库创建支付请求和查询支付状态。同时,文章还讲解了如何生成支付二维码,涉及QRCoder库的使用。
摘要由CSDN通过智能技术生成

使用C# Window 窗体实现支付宝支付功能

一、搬砖前的准备

	1.先看下支付宝开放平台
		https://open.alipay.com/platform/home.htm
	2.使用自己的支付宝扫码功能登录该网页
	3.登录进入之后需要简单的电话号码的验证,按他说的来就好了
	4.我们主要使用的是其控制台的沙箱功能,如图:
	![在这里插入图片描述](https://img-blog.csdnimg.cn/4e0e26606bf348309f958e593ce5b7c4.png)

5.注意这个appid等下我们要用
在这里插入图片描述
6.还有一个地方注意一下,就是公钥等下我们也要用,在这里看仔细了。
在这里插入图片描述
然后你就看到了在这里插入图片描述
等下我们用到的是应用私钥和支付宝公钥
。。。。。
接下来开始进入代码程序

二、步入正题(创建项目并加入程序包)

1.打开vs(visula studio)新建一个WindowForm项目
2.添加 lable button textbox pictureBox 控件,如图
在这里插入图片描述
3.注意将pictureBox的控件的属性size mode改成zoom,等下会生成一个支付的二维码
4.在你的程序中引入Nuget程序包
5.在《NeGet》中 搜索《Alipay.AopSdk.Core》和《Alipay.AopSdk.F2F》这两个由支付宝提供程序包;
6.继续搜索《QRCoder》程序包;
7.安装好以上的程序包

三、代码开始

1.创建一个AliPayConfigs类,类的内容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Alipay.AopSdk.Core;
using Alipay.AopSdk.Core.Domain;
using Alipay.AopSdk.Core.Request;
using Alipay.AopSdk.Core.Response;
using QRCoder;

namespace ZhiFuBaoPay
{
    public class AliPayConfigs
    {


            public static string alipay_public_key ="";//支付宝公钥

            public static string merchant_private_key = "";//商户私钥--应用私钥

            public static string appId = "";//商户的APPID

            public static string serverUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; // 网关地址

            public static string charset = "GBK"; // 不用改!

            public static string sign_type = "RSA2"; // 不用改!

            public static string json = "json"; // 不用改!

            public static string version = "1.0"; // 不用改!
            
            

        public static IAopClient client = new DefaultAopClient(AliPayConfigs.serverUrl, AliPayConfigs.appId, AliPayConfigs.merchant_private_key, AliPayConfigs.json, AliPayConfigs.version, AliPayConfigs.sign_type, AliPayConfigs.alipay_public_key, AliPayConfigs.charset, false);


        public static String Text1; // 订单编号 在form1中赋值 没有这个是会报错滴
        public static void Query()
        {
            new Thread(() => {
                int i = 0;
                AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
                request.BizContent = "{" +
                    "\"out_trade_no\":\"" + Text1 + "\"" +
                    "}";

                while (true)
                {
                    Thread.Sleep(1000); // 每隔一秒,查询一次 查看是否支付成功
                    AlipayTradeQueryResponse response = client.Execute(request);

                    if (response.Code == "10000")
                    {
                        MessageBox.Show("支付成功!");
                        break;
                    }
                }
            }).Start();
        }
    }
}

2.在窗体的按钮点击事件加入以下代码就实现即可

private void button1_Click(object sender, EventArgs e)
        {
            AliPayConfigs.Text1 = textBox1.Text; // 获取订单编号 传给Query 否则报错
            AliPayCode();
            AliPayConfigs.Query();
        }
        public void AliPayCode()
        {

            //https://opendocs.alipay.com/apis/api_1/alipay.trade.wap.pay 查看学习
            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();

            AlipayTradeAppPayModel aliPayRequest = new AlipayTradeAppPayModel()//这个类内容在最下面
            {
                OutTradeNo = textBox1.Text,// 订单号号,商户订单号(注:订单号要唯一)
                TotalAmount = textBox2.Text,//订单金额
                Subject = "支付宝支付功能测试",//标题
                Body = "测试支付",
                ProductCode = "QUICK_MSECURITY_PAY",

            };
            request.SetBizModel(aliPayRequest);

            AlipayTradeWapPayResponse response = AliPayConfigs.client.SdkExecute(request);

            if (response.IsError == true)
            {
                MessageBox.Show("唤起支付宝二维码失败,请联系开发人员");
                this.Close();
            }
            else
            {
                string payaddress = AliPayConfigs.serverUrl + "?" + response.Body;
                QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(payaddress, QRCodeGenerator.ECCLevel.L);
                QRCode qrcode = new QRCode(qrCodeData);
                pictureBox1.Image = qrcode.GetGraphic(5, Color.Black, Color.White, null, 15, 6, false);
            }

        }

为了方便童鞋学习我放两张关于代码的截图
AliPayConfigs类的内容
窗体的事件和方法
欢迎童鞋们相互沟通的和学习

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Net蚂蚁代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值