支付寶的介面呼叫很不方便,剛做好乙個封裝,實現了虛擬交易和實物交易。
解決方案中有三個專案以及ndoc生成的文件,簡單的序列圖:commonalipay,封裝的支付寶介面。
testali,asp.net的測試專案
testcommonalipay,nunit的測試專案。
呼叫方法:
1、引入commonalipay.dll
2、實現支付寶服務介面的方法呼叫方式:
alipayap= new alipay();
string key = "";//填寫自己的key
string partner = "";//填寫自己的partner
standardgoodsbp= new standardgoods("trade_create_by_buyer", partner, key, "md5", "卡2", guid.newguid().tostring(), 2.551m, 1, "[email protected]", "[email protected]"
", bp, this);上面是通用的呼叫方式。
下面是只支援虛擬貨物的方式:
string key = "";//填寫自己的key
string partner = "";//填寫自己的partner
alipay ap = new alipay();
digitalgoods bp = new digitalgoods("create_digital_goods_trade_p", partner, key, "md5", "卡2", guid.newguid().tostring(), 2.551m, 1, "[email protected]", "[email protected]");
", bp, this);3、實現支付寶通知介面方法的呼叫(支援虛擬和實物):
protected void page_load(object sender, eventargs e)
void ap_waitbuyerpay(object sender, notifyeventargs e)
private void ap_waitsellersendgoods(object sender, notifyeventargs e)
支付寶的交易狀態都被定義成了類似名稱的事件。
部分源**解析:
1、解析forms集合到notifyeventargs類,因為後面此類的資料要用來做md5sign,所以所有值型別,不能存在初始值,如:int的0等。因此用nullable范型。
private notifyeventargs parsenotify(namevaluecollection nv, object obj)
else if (pi.propertytype == typeof(int?))
else if (pi.propertytype == typeof(decimal?))
else if (pi.propertytype == typeof(datetime?))
else if (pi.propertytype == typeof(bool))
else}}
return (notifyeventargs)obj;
}2、從型別中獲取排序後的引數
/**
/// 獲取排序後的引數
///
///
///
private sortedlistgetparam(object obj)
sortedlist.add(pi.name.tolower(), pi.getvalue(obj, null).tostring());}}
return sortedlist;
}3、從sortedlist中產生引數
支付寶介面
解決方案中有三個專案以及ndoc生成的文件,簡單的序列圖 commonalipay,封裝的支付寶介面。testali,asp.net的測試專案 testcommonalipay,nunit的測試專案。呼叫方法 1 引入commonalipay.dll 2 實現支付寶服務介面的方法呼叫方式 alipa...
支付寶介面
解決方案中有三個專案以及ndoc生成的文件,簡單的序列圖 commonalipay,封裝的支付寶介面。testali,asp.net的測試專案 testcommonalipay,nunit的測試專案。呼叫方法 1 引入commonalipay.dll 2 實現支付寶服務介面的方法呼叫方式 alipa...
支付寶介面
支付寶外部服務介面url 協議引數 與業務無關的引數 http引數簽名機制 簽名結構 email email partner 合作商id號 service 服務引數 input charset 字元編碼 注意1,沒有值的引數無需傳遞,也沒有必要附加到簽名資料中.2,簽名時將字元轉化成位元組流的時制定...