根据商品信息和价格生成支付宝支付的二维码
2019年夏,张渔歌仄伏于家中。越明年,疫情依旧,渔歌隧研究支付宝支付。其中心酸不言表,属予作文以记之。
一、准备工作
1、支付宝开发平台https://open.alipay.com/。需要进行企业级的账号,需要注册主要是营业执照和法人手机。
注册地址:https://certifyweb.alipay.com/certify/reg/guide#/ 注册成功后登陆
2、支付宝商家其实就是支付宝。https://www.alipay.com/ 这个也得是企业用户。
3、支付宝开放平台开发助手,主要是生成公钥和秘94A5
4、电脑端支付demo,下载地址:SDK & Demo 获取 | 网页&移动应用
提供三种语言java net php。目前python还不支持。
二、操作流程
1、登陆支付宝开放平台,进入控制台。找到网页/移动应用,点击创建网页/移动应用。
创建完成后如下图。
应用创建完成后需要配置才可以,应用创建后会分配一个appID,在以后的开发中会使用。
2、配置创建的应用。点击应用会进入到应用的详细页面
2.1应用详情
该页面不需要配置,创建应用的时候已经设定完成
2.2开发设置
该页面是个关键页面,需要配置1处,配置的时候需使用“支付宝开放平台开发助手”
我用的是net所以用的是非java
将生成的公钥配置到开发设置【接口加签方式(密钥/证书):】中即可。其他配置根据自己服务器和软件要求进行相应的配置就可以。
2.3 产量绑定
该页面是核心页面需要配置应用的各项能力,支付宝提供了几十种。我们这里使用电脑网站支付。
选电脑网站支付然后点击确定,这时候在产品绑定页面显示未开通。
点击去开通,这时候跳转至支付宝平台。每个支付的开通不大一样,我这里是电脑网站支付。
网站备案要注意与企业法人的关系而且网站备案的身份信息要准确。
提交后大概1个多小时就审核完毕。审核通过后产品绑定页面也显示已开通。
到这里核心配置就完成了,其实一点也不难,这就是传说中的
会了不难,难了不会~
我研究了进1个月才搞定,当然我仅仅是隔三差五的研究一下 ,也踩了不少的坑这里分享一下。
- 支付宝要是企业级的个人的不行
- 注册支付宝的时候个人的和企业的要分清
- 企业法人也可以注册支付宝但是个人的与企业的要分清
- 网页网站上生成产品二维码是电脑端支付,电脑端与手机端支付及其类似一定要分
三、实战
1、咱们先看看支付宝提供的demo
https://opendocs.alipay.com/open/270/106291
我们下载NET的。alipay.trade.page.pay-DoNet-UTF-8.zip这个文件解压后使用vs2022不能运行,我就自己新建了个项目运行结果看一下。
得引用aopsdk.dll。引用完成后就把配置文件配置一下就可以了。我这里是BaseUI.cs类。内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace AliPayMobile
{
public class BaseUI : System.Web.UI.Page
{
// 应用ID,您的APPID
public static string app_id = "";
// 支付宝网关沙箱使用网关:https://openapi.alipaydev.com/gateway.do
// 正式环境使用网关:https://openapi.alipay.com/gateway.do
public static string gatewayUrl = "https://openapi.alipay.com/gateway.do";
// 商户私钥,您的原始格式RSA私钥
public static string private_key = "2021003N3/hKFEJpOaexLRsSDKliLUw9vRSE2SnC4xdNHGLcNlY05VwIDAQABAoIBAHsUo3GY6N45jLFoyse/v52Z7tokpKDJSk+VJEEA6lQAaDyDte2UUQpVYIMeYdPUIGdY3YGnk1e283KAJZKnnOhxv8obI9iKmJXi6cYgwbrmVQRk/yxVR2NWpXzN9FjRnvmWYqUe7EzAI3qJqVc1bSG9DOQSgPargakmPw7i3iZREtr++c+GpsZojTQT/2i6qCutDNcLjf+04ODIeG7GnUWScCX9mI41gmW7HnsUl4ak0+csPeUZRKhUP6Byj4v1UYOV0HIVuMS4+4d19GOnijCOIvO6BHVUY1J9+IrochDlmH35ObXDNGjrKKVuvj20XPgx74QH2lBSKUnVw5uadoECgYEAxzFNOkeEU/D+OSazHT7d5alMMSVO9bNQVSEEuZ72friHKJoPAPDWNmbdXCgeA51A0H4SeSaeo3NaBmC/otGaFRVStmy+pwJhamGVTZC4aGfs79dsVqbTPN1vL0Oh55jSj8flBGxTc0YfDNTF12g0ROouubAvsRPJIN8GcCnxrOcCgYEAuqCGnE9k+FUoZWA0UHytLaOrz5lbPTl2GWl76CKuzulB+EtOBL/FyFY1mzKLz3bKUVNOL63plSB4HhW9PbCnIVct/bXKWTt3wHdLAQYlx88q7sQghxv8//Q2/jMsnswGjv5YLbBoVSKo9SR8GoWVV3ZA9rjbtAU7fbctjq9TkhECgYEAq3O6P4GzWvVCPTscTP4BzV5toJe2YTIY4U1sXcF/9g8q9z2z0GF8YJMl0d8OBppiYZNCn1kojxQI1xiLmr/DWoZiDXeImwQniYO5GWyJ7gQWI1NPgz5Q8EDBJPOX9lrKUswCSk5bfgtLSqYSLJka9H6F/Xqzcj3PjyWoyv6vcN0CgYEAsykV8QsbEHeYDzI7JqV6Dx1X/DTp7S2znZOxWtmo3YP6S+XnIRIFSlzQm4v7wg/1C/ugTI91dS81gRQ3lvh2icBKq4yQk/dN8BvVikcfj+DnA06PN4V77S/Cd2gjRtLw3Od5OWtnzYs3jhcXeNKS2uLwXKp8aCa5xOdMOfVAkjECgYBi097XwqqHzxZoaCxmknxsHTAoQlH4MCd7A70UFbLhtxaRSfWJO/qEJZ9+SoHlhuel0WOVe+Ag19VdZyRAaXFMJcUEM1zR2NrMF3e3jDNdqR+aZjEXAMuy2W0t/WixosRDVFmMX8Ld67O82T4tfUw2hNomHLHGrqwwns0ybfRDNw==";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static string alipay_public_key = "2021003Xcfvj+DXaZ+4qTxRC6j7oPNJdlNQTYokz010j9CB21ZXavHsHAWrttNQrIqR/un+MsihjrDiQIDAQAB";
// 签名方式
public static string sign_type = "RSA2";
// 编码格式
public static string charset = "UTF-8";
}
}
配置项写自己的就可以了。wappay.aspx这个页面是demo的页面原样抄袭就行。
有图有真相。
2、实践到项目
我的网站地址:亚丁号
实际实现地址:分享116个PHP源码,总有一款适合你
其实需要注意的就是回调地址,其他的和demo中一样。
第一步、引入dll
第二步、编程配置文件
第三步、编写业务文件
DefaultAopClient client = new DefaultAopClient(gatewayUrl, app_id, private_key, "json", "1.0", sign_type, alipay_public_key, charset, false);
//return Content(ARTICLE_CODE);
OrderinfoDataAccess order = new OrderinfoDataAccess();
string total_amount = articleViewModel.Article.ARTICLE_HID_PRICE.ToString();
string transaction_no = order.GenerateOrderCode( ARTICLE_CODE);
string subject = articleViewModel.Article.ARTICLE_TITLE;
// 组装业务参数model
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.Body = subject; 商品描述
model.Subject = subject;
model.TotalAmount = total_amount;
model.OutTradeNo = transaction_no;
model.ProductCode = "FAST_INSTANT_TRADE_PAY";
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
// 设置同步回调地址
request.SetReturnUrl("http://192.168.3.170:9103/pay/alireturn");
// 设置异步通知接收地址
request.SetNotifyUrl("");
// 将业务model载入到request
request.SetBizModel(model);
AlipayTradePagePayResponse response = null;
try
{
response = client.pageExecute(request, null, "post");
//Response.Write(response.Body);
//return Content(response.Body);
ViewData["PaymentBody"] = response.Body;
return View();
}
catch (Exception exp)
{
throw exp;
}
到此全部结束。谢谢大家!送老铁一首打油诗
学习知识费力气,
收集整理更不易。
知识付费甚欢喜,
为咱码农谋福利。