服務(wù)熱線
153 8323 9821
最近剛做了個(gè)支付寶的接口,簡單給大家分享一下,支付寶有專門的客服,不懂就給你說,服務(wù)還是不錯(cuò)的,當(dāng)然人家是賺錢的1.2%的交易費(fèi)用啊
接口有4種,分別是雙標(biāo)準(zhǔn)接口,擔(dān)保接口,即時(shí)到帳接口,純網(wǎng)銀接口,前兩種是你支付寶個(gè)人就可以申請,后兩種需要企業(yè)級別的才可以
我這次給大家做的就是
/// 擔(dān)保交易的交易狀態(tài)變化順序是:等待買家付款→買家已付款,等待賣家發(fā)貨→賣家已發(fā)貨,等待買家收貨→買家已收貨,交易完成
/// 即時(shí)到帳的交易狀態(tài)變化順序是:等待買家付款→交易完成
其實(shí)我們做的部分不是很多,最重要的是讓支付寶返回的狀態(tài)和你的網(wǎng)站的訂單一致就可以,別人家付款了,你網(wǎng)站還沒更改
我的數(shù)據(jù)庫存了三個(gè)bool字段,pay(付款),sendto(發(fā)貨),success(成功),用支付寶返回的狀態(tài)(異步)里面寫sql語句,去更改就是了,插入訂單的時(shí)機(jī)在顧客填寫完訂單,并向支付寶提交的時(shí)候。
不廢話了,看代碼吧
去支付寶商家服務(wù)里面,下載相關(guān)的源代碼
我這里直說那些需要我們修改的
1.AlipayConfig.cs
//↓↓↓↓↓↓↓↓↓↓請?jiān)谶@里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,以2088開頭由16位純數(shù)字組成的字符串
partner = "你的pid";
//交易安全檢驗(yàn)碼,由數(shù)字和字母組成的32位字符串
key = "你的key";
//簽約支付寶賬號或賣家支付寶帳戶
seller_email = "你的支付寶賬號";
//你的頁面跳轉(zhuǎn)同步返回頁面文件路徑 要用 http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
return_url = "http://localhost:1336/return_url.aspx";
//你的服務(wù)器通知的頁面文件路徑 要用 http://格式的完整路徑,不允許加?id=123這類自定義參數(shù)
notify_url = "http://localhost:1336/notify_url.aspx";
//↑↑↑↑↑↑↑↑↑↑請?jiān)谶@里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
2,填寫訂單頁面,復(fù)制default.cs里面的代碼,并添加自己的插入語句,然后會跳轉(zhuǎn)到支付寶頁面
////////////////////////////////////////////請求參數(shù)////////////////////////////////////////////
//必填參數(shù)//
string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss");
//請與貴網(wǎng)站訂單系統(tǒng)中的唯一訂單號匹配
string subject = Session["title"].ToString();
//訂單名稱,顯示在支付寶收銀臺里的“商品名稱”里,顯示在支付寶的交易管理的“商品名稱”的列表里。
string body = txtbeizhu.Text;
//訂單描述、訂單詳細(xì)、訂單備注,顯示在支付寶收銀臺里的“商品描述”里
Session["body"] = txtbeizhu.Text;
Session["price"] = LiteralPrice.Text;
string price = "0.01"; //訂單總金額,顯示在支付寶收銀臺里的“商品單價(jià)”里
string logistics_fee = "0.00";
//物流費(fèi)用,即運(yùn)費(fèi)。
string logistics_type = "EXPRESS";
//物流類型,三個(gè)值可選:EXPRESS(快遞)、POST(平郵)、EMS(EMS)
string logistics_payment = "SELLER_PAY";
//物流支付方式,兩個(gè)值可選:SELLER_PAY(賣家承擔(dān)運(yùn)費(fèi))、BUYER_PAY(買家承擔(dān)運(yùn)費(fèi))
string quantity = "1";
//商品數(shù)量,建議默認(rèn)為1,不改變值,把一次交易看成是一次下訂單而非購買一件商品。
//選填參數(shù)//
//買家收貨信息(推薦作為必填)
//該功能作用在于買家已經(jīng)在商戶網(wǎng)站的下單流程中填過一次收貨信息,而不需要買家在支付寶的付款流程中再次填寫收貨信息。
//若要使用該功能,請至少保證receive_name、receive_address有值
//收貨信息格式請嚴(yán)格按照姓名、地址、郵編、電話、手機(jī)的格式填寫
string receive_name = txtname.Text;
//收貨人姓名,如:張三
Session["receive_name"] = receive_name;
//string receive_address = "收貨人地址";
//收貨人地址,如:XX省XXX市XXX區(qū)XXX路XXX小區(qū)XXX棟XXX單元XXX號
//string receive_zip = "123456";
//收貨人郵編,如:123456
//string receive_phone = "0571-81234567";
//收貨人電話號碼,如:0571-81234567
string receive_mobile = txtphone.Text;
//收貨人手機(jī)號碼,如:13312341234
Session["receive_mobile"] = receive_mobile;
string chengrencount = Literalchengren.Text;
string ertongcount = Literalertong.Text;
Session["chengrenertongcount"] = ertongcount + chengrencount;
//網(wǎng)站商品的展示地址,不允許加?id=123這類自定義參數(shù)
string show_url = "http://www.xxx.com/myorder.aspx";
//INSERT INTO Orders (TravelTitle, Counts, [Money], Linkman, Phone, [Describe], Pay, [Datetime]) VALUES ('天馬島', '2成人1兒童', '200', '張總', '15092877791', '全家', 0, #7/3/2012#);
string sql = string.Format("INSERT INTO Orders ([out_trade_no],[TravelTitle], [Counts], [Money], [Linkman], Phone, [Describe], [Datetime],[UserName],[type],[namecard]) values('" + out_trade_no + "','" + Session["title"].ToString() + "','" + Session["chengrenertongcount"].ToString() + "','" + Session["price"].ToString() + "','" + Session["receive_name"].ToString() + "','" + Session["receive_mobile"].ToString() + "','" + Session["body"].ToString() + "','" + DateTime.Now.ToString() + "','" + Session["shouji"] + "',1,'" + trresults + "')");
if (DataBase.ExecuteNonQuery(sql) > 0)
{
Response.Write("<script type='text/javascript'>alert('訂單生成成功,跳轉(zhuǎn)到支付寶頁面?。?;</script>");
//Response.Redirect("Traveljingdian.aspx?yy=" + InfoClassID + "");
}
else
{
Response.Write("<script type='text/javascript'>alert('訂單生成失?。。?;</script>");
}
////////////////////////////////////////////////////////////////////////////////////////////////
//把請求參數(shù)打包成數(shù)組
SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
sParaTemp.Add("body", body);
sParaTemp.Add("logistics_fee", logistics_fee);
sParaTemp.Add("logistics_payment", logistics_payment);
sParaTemp.Add("logistics_type", logistics_type);
sParaTemp.Add("out_trade_no", out_trade_no);
sParaTemp.Add("payment_type", "1");
sParaTemp.Add("price", price);
sParaTemp.Add("quantity", quantity);
//sParaTemp.Add("receive_address", receive_address);
sParaTemp.Add("receive_mobile", receive_mobile);
sParaTemp.Add("receive_name", receive_name);
//sParaTemp.Add("receive_phone", receive_phone);
//sParaTemp.Add("receive_zip", receive_zip);
sParaTemp.Add("show_url", show_url);
sParaTemp.Add("subject", subject);
//構(gòu)造標(biāo)準(zhǔn)雙接口表單提交HTML數(shù)據(jù),無需修改
Service ali = new Service();
string sHtmlText = ali.Trade_create_by_buyer(sParaTemp);
Response.Write(sHtmlText);
3,支付狀態(tài)返回,有同步return_url.