惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
博客园 - Franky
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
N
News and Events Feed by Topic
I
Intezer
C
Check Point Blog
V
Visual Studio Blog
T
Tenable Blog
博客园 - 司徒正美
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
PCI Perspectives
PCI Perspectives
H
Help Net Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Cloudflare Blog
SecWiki News
SecWiki News
Vercel News
Vercel News
爱范儿
爱范儿
Recent Announcements
Recent Announcements
Spread Privacy
Spread Privacy
T
Threatpost
Last Week in AI
Last Week in AI
V
V2EX
O
OpenAI News
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
腾讯CDC
Forbes - Security
Forbes - Security
Microsoft Security Blog
Microsoft Security Blog
AI
AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
F
Full Disclosure
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Palo Alto Networks Blog

博客园 - 幽冥狂_七

vue2 中把页面导出pdf Nuxt 文档 gird 布局合并了行和列 原位置不动 SemanticKernel Stable diffusion语法 Cosyvoice本地部署指令文档 CSS实现点击翻转效果 读取.net core配置文件appsetting.json内容 chromedriver版本 Sql Server触发器调用exe控制台程序 秒杀的简单例子 Vue3 Slot—插槽全家桶使用详解 转载一篇文章:专升本这场荒唐的闹剧终于结束了 单行文本过多、多文本过多出现省略号或小点点 .NET 程序员的调试神器-Dumpify vue3中使用swiper的完整版教程 highchart x轴第一个日期有省略号 highchart柱状图添加最小高度 Windows11专业版KMS命令激活(不需要激活工具) 微信小程序配置自动更新,微信小程序自动升级
记录.net8支付宝手机网页应用的过程
幽冥狂_七 · 2024-07-09 · via 博客园 - 幽冥狂_七

1、使用 开发文档(V3版) 

https://opendocs.alipay.com/open-v3/05w4kr?pathHash=8fb996ac

2、.net版本的sdk

https://opendocs.alipay.com/open-v3/065bsc

3、通过命令安装

不要看这个 https://www.nuget.org/packages/AlipaySDKNet.OpenAPI

NuGet Gallery | AlipaySDKNet.Standard 4.9.182

#不可用 命令:dotnet add package AlipaySDKNet.OpenAPI --version 2.4.0

命令:

dotnet add package AlipaySDKNet.Standard --version 4.9.182

可用:

不可用:

4、现在新版本的生成密钥工具默认支持java的,非java的需要自己转一下,坑啊(重要!!

      密钥工具下载 - 支付宝文档中心 (alipay.com)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意:使用密钥工具生成的私钥要转一下才能用(格式转换),其他的证书什么的都不要动。

如果你感觉很乱,不要慌我也感觉很乱,经过不断摸索后来终于发现了  手机网站证书版本的 完整demo

 public string AliPayInfo3()
 {

     string directoryPath = Environment.CurrentDirectory;

     /** 支付宝网关 **/
     String ALIPAY_GATEWAY = "https://openapi.alipay.com/gateway.do";

     /** 应用id,如何获取请参考:https://opensupport.alipay.com/support/helpcenter/190/201602493024 **/
     String APP_ID = "202166666666415";

     /** 应用私钥,密钥格式为pkcs1,如何获取私钥请参考:https://opensupport.alipay.com/support/helpcenter/207/201602469554  **/
     String PRIVATE_KEY = "MIIEpAIBAAKCAQ 不可能放出来的==";

     /** 设置证书相关参数 **/
     CertParams certParams = new CertParams();
      

     /** 应用公钥证书路径,下载后保存位置的绝对路径  **/
     certParams.AppCertPath = directoryPath + "/wwwroot/alipayCert/appCertPublicKey_2021004156672664.crt";

     /** 支付宝公钥证书路径,下载后保存位置的绝对路径 **/
     certParams.AlipayPublicCertPath = directoryPath + "/wwwroot/alipayCert/alipayCertPublicKey_RSA2.crt";

     /** 支付宝根证书路径,下载后保存位置的绝对路径 **/
     certParams.RootCertPath = directoryPath + "/wwwroot/alipayCert/alipayRootCert.crt";

     /**初始化 **/
     IAopClient client = new DefaultAopClient(ALIPAY_GATEWAY, APP_ID, PRIVATE_KEY, "json", "1.0", "RSA2", "utf-8", "false", certParams);

     /** 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.wap.pay(手机网站支付接口) **/
     AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();

     request.BizContent = "{" +
         /** 商户订单号,商户自定义,需保证在商户端不重复,如:20200612000001 **/
         "\"out_trade_no\":\"20200612000001\"," +

         /** 销售产品码,固定值:QUICK_WAP_WAY **/
         "\"product_code\":\"QUICK_WAP_WAY\"," +

         /** 订单标题 **/
         "\"subject\":\"订单标题\"," +

         /** 订单金额,精确到小数点后两位 **/
         "\"total_amount\":0.01," +

         /** 业务扩展参数 **/
         //"\"extend_params\":{" + 
         /** 系统商编号,填写服务商的PID用于获取返佣,返佣参数传值前提:传值账号需要签约返佣协议,用于isv商户。 **/
         //"\"sys_service_provider_id\":\"20885***560335\"," + 

         /** 花呗分期参数传值前提:必须有该接口花呗收款准入条件,且需签约花呗分期 **/
         /** 指定花呗分期可选期数,只支持3/6/12期,还款期数越长手续费越高 **/
         //"\"hb_fq_num\":\"3\"," +

         /** 指定花呗分期手续费承担方式,手续费可以由用户全承担(该值为0),也可以商户全承担(该值为100),但不可以共同承担,即不可取0和100外的其他值 **/
         //"\"hb_fq_seller_percent\":\"100\"" +
         //"}," +

         /** 订单描述 **/
         "\"body\":\"订单描述\"" +
     "}";


     /**注:支付结果以异步通知为准,不能以同步返回为准,因为如果实际支付成功,但因为外力因素,如断网、断电等导致页面没有跳转,则无法接收到同步通知;**/
     /** 支付完成的跳转地址,用于用户视觉感知支付已成功,传值外网可以访问的地址,如果同步未跳转可参考该文档进行确认:https://opensupport.alipay.com/support/helpcenter/193/201602474937 **/
     request.SetReturnUrl("");

     /** 异步通知地址,以http或者https开头的,商户外网可以post访问的异步地址,用于接收支付宝返回的支付结果,如果未收到该通知可参考该文档进行确认:https://opensupport.alipay.com/support/helpcenter/193/201602475759 **/
     request.SetNotifyUrl("");

     /** 调用SDK生成form表单 **/
     AlipayTradeWapPayResponse response = client.pageExecute(request);

     /** 调用SDK生成支付链接,可在浏览器打开链接进入支付页面 **/
     //AlipayTradeWapPayResponse response = client.pageExecute(request,"","","GET");

     /**第三方调用(服务商模式),传值app_auth_token后,会收款至授权token对应商家账号,如何获传值app_auth_token请参考文档:https://opensupport.alipay.com/support/helpcenter/79/201602494631 **/
     //AlipayTradeWapPayResponse response = client.pageExecute(request,"","传入获取到的app_auth_token值","GET")

     /** 获取接口调用结果,如果调用失败,可根据返回错误信息到该文档寻找排查方案:https://opensupport.alipay.com/support/helpcenter/93 **/
     Console.WriteLine(response.Body);

     return response.Body;
 }

到这里就差不多了,会输出一个from表单。