C#實(shí)現(xiàn)支付寶沙箱支付的項(xiàng)目實(shí)踐
一,準(zhǔn)備沙箱環(huán)境
1,登錄支付寶,進(jìn)入 應(yīng)用列表界面 https://openhome.alipay.com/dev/workspace
2,如下圖選擇進(jìn)入沙箱

進(jìn)入如下頁(yè)面:

1,這里的APPID很有用
2,在這里只測(cè)試網(wǎng)頁(yè)支付,用系統(tǒng)默認(rèn)的密鑰
3,查看公鑰有如下界面:

需要用到的是應(yīng)用私鑰(非JAVA)和支付寶公鑰
二,認(rèn)識(shí)官方提供的Demo示例
1,下載demo示例
進(jìn)入網(wǎng)頁(yè) https://opendocs.alipay.com/open/270/106291

下載.NET版的demo,如下:


App_Code下有Config.cs文件

關(guān)于參數(shù):
1,app_id 就填寫沙箱界面的APPID
2,需要將gatewayUrl 改為:https://openapi.alipaydev.com/gateway.do 這才是測(cè)試版本
3,商戶私鑰 復(fù)制沙箱界面系統(tǒng)默認(rèn)密鑰的 應(yīng)用私鑰
4,支付寶公鑰 復(fù)制沙箱界面的支付寶公鑰

- wappay里是具體的調(diào)用API接口
- wappay是發(fā)送調(diào)用支付接口
- close是關(guān)閉訂單接口
- query是查詢訂單接口
- refund是退款接口
三,編寫一個(gè)ASP.NET的程序
1,創(chuàng)建ASP.NET web項(xiàng)目
2,解決方案導(dǎo)入Demo示例中的AopSdk模塊,如下:

3,前臺(tái)代碼:
<table>
<tr>
<td>訂單名稱:</td>
<td>
<asp:TextBox ID="tbxOrderName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>訂單金額:</td>
<td>
<asp:TextBox ID="tbxOrderAmount" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>訂單描述:</td>
<td>
<asp:TextBox ID="tbxOrderDesc" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btn" runat="server" Text="支付" OnClick="btn_Click"/>
</td>
</tr>
</table>
4,后臺(tái)代碼:
// 應(yīng)用ID,您的APPID
public static string app_id = "20210******";
// 支付寶網(wǎng)關(guān)
public static string gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
// 商戶私鑰,您的原始格式RSA私鑰
public static string private_key = "MIIE******";
// 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對(duì)應(yīng)APPID下的支付寶公鑰。
public static string alipay_public_key = "MIIBI******";
// 簽名方式
public static string sign_type = "RSA2";
// 編碼格式
public static string charset = "UTF-8";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_Click(object sender, EventArgs e)
{
DefaultAopClient client = new DefaultAopClient(gatewayUrl, app_id, private_key, "json", "1.0", sign_type, alipay_public_key, charset, false);
// 外部訂單號(hào),商戶網(wǎng)站訂單系統(tǒng)中唯一的訂單號(hào)
string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");
// 訂單名稱
string subject = this.tbxOrderName.Text;
// 付款金額
string total_amout = this.tbxOrderAmount.Text;
// 商品描述
string body = this.tbxOrderDesc.Text;
// 支付中途退出返回商戶網(wǎng)站地址
string quit_url = "https://localhost:44334/PayFailed.aspx?tradeNo=" + out_trade_no;
// 支付成功返回商戶網(wǎng)站頁(yè)面
string return_url = "https://localhost:44334/PaySuccess.aspx?tradeNo=" + out_trade_no;
// 設(shè)置支付完成異步通知接收地址
string notify_url = "https://localhost:44334/Notify.aspx";
// 組裝業(yè)務(wù)參數(shù)model
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
model.Body = body;
model.Subject = subject;
model.TotalAmount = total_amout;
model.OutTradeNo = out_trade_no;
model.ProductCode = "QUICK_WAP_WAY";
model.QuitUrl = quit_url;
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
// 設(shè)置支付完成同步回調(diào)地址
request.SetReturnUrl(return_url);
// 設(shè)置支付完成異步通知接收地址
request.SetNotifyUrl(notify_url);
// 將業(yè)務(wù)model載入到request
request.SetBizModel(model);
AlipayTradeWapPayResponse response = null;
try
{
response = client.pageExecute(request, null, "post");
Response.Write(response.Body);
}
catch (Exception exp)
{
throw exp;
}
說(shuō)明:
1,這里的app_id等配置,就是來(lái)源于 Demo示例中的config.cs文件 需要從自己的支付寶沙箱中將相應(yīng)的值復(fù)制進(jìn)來(lái)
2,https://localhost:44334 這個(gè)地址和端口號(hào)是當(dāng)前自己的項(xiàng)目的端口號(hào)
3,分別建立PaySuccess.aspx PayFailed.aspx 兩個(gè)個(gè)窗體 分別用于支付成功和失敗的跳轉(zhuǎn)頁(yè)面
4,Notify.aspx用于支付成功的異步通知用,可以不加
四,開始測(cè)試

調(diào)用成功,則進(jìn)入如下界面

點(diǎn)擊繼續(xù)瀏覽器付款

點(diǎn)擊支付寶賬號(hào)登錄

注意!這里不是真實(shí)的支付寶賬號(hào),需要用沙箱環(huán)境的支付寶賬號(hào),在沙箱界面中找:





支付成功后,點(diǎn)擊右上角完成,則進(jìn)入代碼中設(shè)定的PaySuccess.aspx頁(yè)面,同時(shí)也將訂單編號(hào)等信息帶過(guò)去。

至此,模擬支付成功,更多相關(guān)C# 支付寶沙箱支付內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#和.NET生成和使用異步流的方法實(shí)現(xiàn)
異步流可以簡(jiǎn)化異步文件的讀取、寫入和處理,本文主要介紹了C#和.NET生成和使用異步流的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
通過(guò)App.xaml理解wpf中的Application類
這篇文章主要介紹了通過(guò)App.xaml理解wpf中的Application類,幫助大家更好的理解和學(xué)習(xí)使用c# wpf,感興趣的朋友可以了解下2021-04-04
C#學(xué)習(xí)筆記整理_變量等基礎(chǔ)語(yǔ)法(必看篇)
下面小編就為大家?guī)?lái)一篇C#學(xué)習(xí)筆記整理_變量等基礎(chǔ)語(yǔ)法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
C#通過(guò)接口與線程通信(捕獲線程狀態(tài))示例代碼
本文介紹C#通過(guò)接口與線程通信(捕獲線程狀態(tài)),并提供簡(jiǎn)單的示例代碼供參考2013-12-12

