如何使用支付寶進行付款和退款
阿新 • • 發佈:2018-12-13
注意:在寫程式碼之前記得新增支付寶示例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>