ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#支付宝支付

2022-06-09 14:01:59  阅读:222  来源: 互联网

标签:sArray 支付宝 string 商户 c# System 支付 using


1、进入支付宝去申请appid和密钥 https://open.alipay.com/platform/home.htm 支付宝开放平台

2、下载sdk根据自己是啥开发语言下载啥 

3、开始写代码

    后台请求参数和方式

    

 

 

/// <summary>         /// 支付宝支付         /// </summary>         /// <param name="model"></param>         /// <param name="configPath"></param>         /// <returns></returns>         public  string Alipay(HttpContext context)         {             string OrderNumber = "" ;//订单号,此单号必须唯一             string app_id = ""; //"你的app_id";             string merchant_private_key = "";//"支付宝私钥";             string alipay_public_key = "";// "支付宝公钥";             string timeout_express = "30m";//订单有效时间(分钟)             string postUrl = "https://openapi.alipay.com/gateway.do";//这个地址都是固定的             string sign_type = "RSA2";//加签方式 有两种RSA和RSA2 我这里使用的RSA2(支付宝推荐的)             string version = "1.0";//固定值 不用改             string format = "json";//固定值             string Amount = "0.01";//订单金额             string method = "alipay.trade.wap.pay";//调用接口 固定值 不用改             IAopClient client = new DefaultAopClient(postUrl, app_id, merchant_private_key, format, version, sign_type, alipay_public_key, "UTF-8", false);             AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();             request.SetNotifyUrl("Notify_url.aspx");//外网能访问的后台回调地址             request.SetReturnUrl("Return_url.aspx");//外网能访问的前台回调地址             request.BizContent = "{" +             "    \"body\":\"对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。\"," +             "    \"subject\":\"商品描述\"," +             "    \"out_trade_no\":\"" + OrderNumber + "\"," +   //商家唯一订单,填写你项目里生成的唯一订单号             "    \"timeout_express\":\"" + timeout_express + "\"," +             "    \"total_amount\":" + Amount + "," +             "    \"product_code\":\"" + method + "\"" +             "  }";             AlipayTradeWapPayResponse response = client.pageExecute(request);             string form = response.Body.Substring(0, response.Body.IndexOf("<script>"));             return form;         }

 //

  同步回调地址

 

using Aop.Api.Util;

 

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;   public partial class Return_url : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         /* 实际验证过程建议商户添加以下校验。         1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,         2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),         3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)         4、验证app_id是否为该商户本身。         */         // 应用ID,您的APPID         string app_id = "";           // 支付宝网关         string gatewayUrl = "";           // 商户私钥,您的原始格式RSA私钥         string private_key = "";           // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。         string alipay_public_key = "";           // 签名方式         string sign_type = "RSA2";           // 编码格式         string charset = "UTF-8";         Dictionary<string, string> sArray = GetRequestGet();         if (sArray.Count != 0)         {             bool flag = AlipaySignature.RSACheckV1(sArray, alipay_public_key, charset, sign_type, false);             if (flag)             {                 Response.Write("同步验证通过");             }             else             {                 Response.Write("同步验证失败");             }         }     }       public Dictionary<string, string> GetRequestGet()     {         int i = 0;         Dictionary<string, string> sArray = new Dictionary<string, string>();         NameValueCollection coll;         //coll = Request.Form;         coll = Request.QueryString;         String[] requestItem = coll.AllKeys;         for (i = 0; i < requestItem.Length; i++)         {             sArray.Add(requestItem[i], Request.QueryString[requestItem[i]]);         }         return sArray;       } }

 

 

支付完成异步通知接收地址 

using Aop.Api.Util;

 

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;   public partial class Notify_url : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         /* 实际验证过程建议商户添加以下校验。         1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,         2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),         3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)         4、验证app_id是否为该商户本身。         */           // 应用ID,您的APPID         string app_id = "";       // 支付宝网关    string gatewayUrl = "";       // 商户私钥,您的原始格式RSA私钥    string private_key = "";       // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。    string alipay_public_key = "";       // 签名方式      string sign_type = "RSA2";       // 编码格式      string charset = "UTF-8";         Dictionary<string, string> sArray = GetRequestPost();         if (sArray.Count != 0)         {             bool flag = AlipaySignature.RSACheckV1(sArray, alipay_public_key, charset, sign_type, false);             if (flag)             {                 //交易状态                 //判断该笔订单是否在商户网站中已经做过处理                 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序                 //请务必判断请求时的total_amount与通知时获取的total_fee为一致的                 //如果有做过处理,不执行商户的业务程序                   //注意:                 //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知                 string trade_status = Request.Form["trade_status"];                   Response.Write("success");             }             else             {                 Response.Write("fail");             }         }     }       public Dictionary<string, string> GetRequestPost()     {         int i = 0;         Dictionary<string, string> sArray = new Dictionary<string, string>();         NameValueCollection coll;         //coll = Request.Form;         coll = Request.Form;         String[] requestItem = coll.AllKeys;         for (i = 0; i < requestItem.Length; i++)         {             sArray.Add(requestItem[i], Request.Form[requestItem[i]]);         }         return sArray;       } }

 

 

   页面上的请求方式(这里为了方便写的非常简单)

<head runat="server">  <meta name="viewport" content="width=device-width" />     <script src="Scripts/jquery-1.7.1.js"></script> </head> <body>     <form id="form1" runat="server">     <div>         <asp:Button ID="Button1" runat="server" Text="支付啊" OnClick="Button1_Click" />     </div>         <div id="formDiv" style="display:none;">             </div>     </div>           <script type="text/javascript">               $(function(){                   $("#Button1").click(function () {                       $.ajax({                           url: "Handler1.ashx",  //页面上是到一般处理程序中处理的                           data: {"action": "Alipay" },                           type: "POST",                           cache: false,                           async: true,                           success: function (data) {                               alert(data);                               if (data != "") {                                   $("#formDiv").append(data);                                   $("#alipaysubmit").submit(); //返回的是form表单 直接提交就可以了.                               }                           }                       });                                         });                   });               });     </script>     </form> </body>

 

 

原文链接  https://www.cnblogs.com/superMay/p/9474214.html

标签:sArray,支付宝,string,商户,c#,System,支付,using
来源: https://www.cnblogs.com/ccccccWH/p/16359065.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有