使用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);
}
}
为了方便童鞋学习我放两张关于代码的截图
欢迎童鞋们相互沟通的和学习