五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 銀聯(lián)在線支付ASP代碼不支持64位系統(tǒng)的解決辦法

銀聯(lián)在線支付ASP代碼不支持64位系統(tǒng)的解決辦法

文章來源:365jz.com     點擊數(shù):497    更新時間:2011-06-18 12:08   參與評論

最近更換了公司的服務(wù)器,系統(tǒng)從原來的32位2003換成了64位2008R2。網(wǎng)站提供在線支付功能(用ASP開發(fā)的),結(jié)果銀聯(lián)在線支付(Chinapay)模塊不能使用了。后來咨詢Chinapay,他們給的答案是,ASP需要調(diào)用的DLL文件只支持32操作系統(tǒng),不支持64位,如果要在64位上使用,只能用.NET方式......

要是把整個支付模塊都換成.NET,不是馬上能做好的,畢竟還有快錢、支付寶等等。后來和同事商量一下,Chinapay ASP模塊其實只有簽名模塊不能運行,其余的程序其實都是正常的。那么,把這一塊功能單獨用.NET web services來做,然后在ASP里面調(diào)用,這樣不是解決了嗎。

部分ASP代碼如下:

'256字節(jié)長的ASCII碼,為此次交易提交關(guān)鍵數(shù)據(jù)的數(shù)字簽名,必填
'
===============================就是這一塊有問題=============================
'
Set NPC = Server.CreateObject("CPNPC.NPC")
'
ChkValue=NPC.signData(MerId,MerId & OrdId & TransAmt & CuryId & TransDate & TransType & Priv1)
'
===============================就是這一塊有問題=============================

'把上面有問題的部分替換成調(diào)用.net web services
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
strWebserviceURL
="http://xxx.com/Service/Chinapay.asmx/GetChkValue"
tmp
="MerId="&MerId&"&OrdId="&OrdId&"&TransAmt="&TransAmt&"&CuryId="&CuryId&"&TransDate="&TransDate&"&TransType="&TransType&"&Priv1="&Priv1
objHTTP.Open
"POST", strWebserviceURL, False
objHTTP.SetRequestHeader
"Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(tmp)
bOK
= xmlDOC.load(objHTTP.responseXML)
if objHTTP.Status=200 then
xmlStr
= xmlDOC.xml
xmlStr
= Replace(xmlStr,"&lt;","<",1,-1,1)
xmlStr
= Replace(xmlStr,"&gt;",">",1,-1,1)
ChkValue
= xmlDOC.documentElement.childNodes.item(0).text
else
Response.Write
"數(shù)據(jù)校驗失敗,請重試。錯誤代碼:" & objHTTP.StatusText
Response.End()
end if

web服務(wù)Chinapay.cs部分代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
///Chinapay 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
//若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。
// [System.Web.Script.Services.ScriptService]
public class Chinapay : System.Web.Services.WebService {

public Chinapay () {

//如果使用設(shè)計的組件,請取消注釋以下行
//InitializeComponent();

}

[WebMethod]
public string GetChkValue(string MerId, string OrdId, string TransAmt, string CuryId, string TransDate, string TransType, string Priv1)
{

string ChkValue = String.Empty;
string plain = String.Empty;

//測試是否有值
plain = MerId + OrdId + TransAmt + CuryId + TransDate + TransType + Priv1;
try
{
ChkValue
= ChinapaySignData.sign(MerId, plain);
if (ChkValue == null || ChkValue.Length != 256)
{
return "error";
}
}
catch
{
return "error";
}
return ChkValue;
}

}

這樣處理后,頁面果然正常運行了,而且返回的數(shù)據(jù)一切正常。說起來,上面其實就是使用ASP來調(diào)用.NET的web services。當(dāng)然,以上代碼還沒有認(rèn)真處理,寫出來希望對大家有點幫助。

新手,正在學(xué)習(xí).NET,共勉!

如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答?。?點擊進(jìn)入論壇

發(fā)表評論 (497人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號