如何使用支付宝进行付款和退款

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunshineBlog/article/details/83352329

注意:在写代码之前记得添加支付宝示例demo里面的AopSdk.dll文件到项目里,并且在项目里引用它

using AlipayDemo;
using Aop.Api;
using Aop.Api.Domain;
using Aop.Api.Request;
using Aop.Api.Response;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;

namespace WebApplication1.Controllers
{
    public class AlipayController : Controller
    {
        // GET: Alipay
        public ActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// 付款
        /// </summary>
        /// <param name="coll">表单集合</param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Index(FormCollection coll)
        {
            double totalAmount = Convert.ToDouble(coll["TotalAmount"]);
            //实例化默认的DefaultAopClient
            DefaultAopClient aop = new DefaultAopClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.private_key, "json", "1.0", AlipayConfig.sign_type, AlipayConfig.public_key, AlipayConfig.charset);//AlipayConfig.charset可写可不写,默认为UTF-8
            // 组装业务参数model
            AlipayTradePagePayModel model = new AlipayTradePagePayModel();
            //商品描述
            model.Body = "喜欢小花花";
            //订单名称
            model.Subject = "小花花是女孩子";
            //转账金额(精确到小数点两位)
            model.TotalAmount = totalAmount.ToString();
            //商品唯一编号(订单号)
            model.OutTradeNo = Guid.NewGuid().ToString().Replace("-", "").ToLower();
            //支付类型(电脑网站支付的类型)
            model.ProductCode = "FAST_INSTANT_TRADE_PAY";

            //支付宝请求
            AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
            // 设置异步通知接收地址   支付成功后的跳转页面
            request.SetNotifyUrl("http://localhost:57812/Alipay/Success");
            //封装支付宝模型到请求对象中
            request.SetBizModel(model);
            //设置同步回调地址
            request.SetReturnUrl("");

            // 将业务model载入到request 支付宝响应
            AlipayTradePagePayResponse response = null;
            response = aop.pageExecute(request, null, "post");
       
            Response.Write(response.Body);
            return View();
        }


        public ActionResult Success()
        {
            return View();
        }
        /// <summary>
        /// 退款
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Refund(FormCollection coll)
        {
            DefaultAopClient aop = new DefaultAopClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.private_key, "json", "1.0", AlipayConfig.sign_type, AlipayConfig.public_key, AlipayConfig.charset);//AlipayConfig.charset可写可不写,默认为UTF-8
            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            //订单支付时传入的商户订单号,不能和 trade_no同时为空。
            model.OutTradeNo = coll["OutTradeNo"];
            // 支付宝交易号,和商户订单号不能同时为空   订单号
            model.TradeNo = coll["TradeNo"];
            //需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
            model.RefundAmount = coll["RefundAmount"];
            //	退款的原因说明(可选)
            model.RefundReason = coll["RefundReason"];
            // 退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
            model.OutRequestNo = "";

            //支付宝请求
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
            request.SetBizModel(model);

            AlipayTradeRefundResponse response = aop.Execute(request);
            //  Response.Write(response.Body);
            if (response.Msg == "Success" && response.Code == "10000")
            {
                Response.Write("<h2>退款成功</h2>");
            }
            else
            {
                Response.Write("<h2>退款失败</h2>");
            }

            return View();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace AlipayDemo
{
    public class AlipayConfig
    {
        /// <summary>
        /// 应用id,我的appid
        /// </summary>
        public static string app_id = "";
        /// <summary>
        /// 支付宝网关
        /// </summary>
        public static string gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
        /// <summary>
        ///  商户私钥,您的原始格式RSA私钥
        /// </summary>
        public static string private_key = "";

        /// <summary>
        /// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。、
        /// </summary>
        public static string public_key = "";
        /// <summary>
        /// 签名方式
        /// </summary>
        public static string sign_type = "RSA2";
        /// <summary>
        /// 编码格式
        /// </summary>
        public static string charset = "utf-8";

    }
}

@{
    ViewBag.Title = "Index";
}
    <form method="post">
        <input type="text" name="TotalAmount" />
        <input type="submit" value="付款" />
    </form>




@{
    ViewBag.Title = "Success";
}
<div>
    <h1>支付成功!</h1>
</div>
<div class="clearfix"></div>
<form method="post" action="/Alipay/Refund">
    商户号:<input type="text" name="OutTradeNo"  /><br /><br />
    订单号:<input type="text" name="TradeNo"  /><br /><br />
    总金额:<input type="text" name="RefundAmount"  /><br /><br />
    退款原因: <textarea name="RefundReason"></textarea><br /><br />
    <input type="submit" value="退款" />
</form>

猜你喜欢

转载自blog.csdn.net/SunshineBlog/article/details/83352329