欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用Delphi Xe8 開(kāi)發(fā)微信功能

接上一篇,這次是微信支付商戶(hù)平臺的退款查詢(xún)功能。此功能與訂單查詢(xún)功能代碼幾乎完全相同,只是接口網(wǎng)址稍有區別。

   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109
unit weixinapi;

interface
uses IdHTTP,//indy HttpClient
//使用RealThinClientSDK_v628中的rtcInfo的Utf8Decode函數來(lái)消除中文亂碼問(wèn)題,
//System中自帶的Utf8Decode有問(wèn)題
rtcInfo,
IWNativeXml,//NativeXML
System.Classes,//FileStream
System.Variants,//使用隨機數初始化函數Randomize
System.SysUtils,Xml.XMLDoc,Data.Win.ADODB,//使用XMLDocument、AdoConnection、AdoQuery
//不同版本的SSL會(huì )使idHTTP需要使用到IOHandler參數
IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
function weixinapi_downloadbill(bill_date:string): string;
function weixinapi_orderquery(out_trade_no:string):string;
function weixinapi_refundquery(out_trade_no:string):string;
function MD5_encrypt(str_TEMP:string):string;
const api_id='你的公眾賬號ID';//你的公眾賬號ID
mch_id='你的商戶(hù)號';//你的商戶(hù)號
api_key='你的API密鑰';//你的API密鑰
refundquery_url='https://api.mch.weixin.qq.com/pay/refundquery';//查詢(xún)退款網(wǎng)址

implementation

//微信商戶(hù)對賬功能-查詢(xún)退款詳情
//out_trade_no是需要查詢(xún)的商戶(hù)訂單號,也可以使用微信訂單號來(lái)查詢(xún)
function weixinapi_refundquery(out_trade_no:string):string;
var xmldd:TNativeXml;
fsparams:TFileStream;
idhttp_bill:TIdHTTP;
//Nativexml中沒(méi)有發(fā)現如何賦值已有的xml,只好重新加入系統自帶的xml
sRe_XML:TXMLDocument;
stringA:string;
stringTEMP:string;
nonce_str:string;
sign:string;
sResponse:string;
iohandssl:TIdSSLIOHandlerSocketOpenSSL;
begin
Randomize;
nonce_str:=IntToStr(Random(1000000));//得到隨機數nonce_str
stringA:='appid='+api_id+'&mch_id='+mch_id+'&nonce_str='+nonce_str+'&out_trade_no='+
out_trade_no;
stringTEMP:=stringA+'&key='+api_key;
sign:=MD5_encrypt(stringTEMP);//使用MD5加密函數對stringTEMP進(jìn)行加密,得到sign簽名
try
//創(chuàng )建通過(guò)idhttp POST 的xml文件
xmldd:=TNativeXml.CreateName('xml');
xmldd.EncodingString:='utf-8';
xmldd.XmlFormat:=xfReadable;
xmldd.Root.WriteString('appid',api_id);
xmldd.Root.WriteString('mch_id',mch_id);
xmldd.Root.WriteString('nonce_str',nonce_str);
xmldd.Root.WriteString('out_trade_no',out_trade_no);
xmldd.Root.WriteString('sign',sign);
xmldd.SaveToFile('weixin_refund_'+out_trade_no+'.xml');
except
on e: Exception do
Result:=e.Message;
end;
//根據創(chuàng )建的xml文件創(chuàng )建fsparams文件流,
//試驗過(guò)多種格式的post內容,string、TStrings、標準xml文件,
//最后發(fā)現使用TFileStream POST過(guò)去的內容
//微信接口才識別為xml格式,其他格式都會(huì )報XML Format Error等錯誤
fsparams:=TFileStream.Create('.\weixin_refund_'+out_trade_no+'.xml',fmOpenRead or fmShareDenyWrite);
try
sRe_XML:=TXMLDocument.Create(nil);
//對于不同版本的SSL庫需要加上TIdSSLIOHandlerSocketOpenSSL,
//不然會(huì )報IOHandler value is not valid錯誤
iohandssl:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idhttp_bill:=tIdHTTP.Create();
idhttp_bill.Request.ContentType:='text/xml';
idhttp_bill.Request.CharSet:='UTF-8';
idhttp_bill.IOHandler:=iohandssl;
//使用的UTF8Decode函數是rtcInfo里面的,不是system里面的,system中的還是會(huì )亂碼
sRe_XML.XML.Text:=Utf8Decode(idhttp_bill.Post(refundquery_url,fsparams));
sRe_XML.XML.SaveToFile('weixin_refundquery_'+out_trade_no+'.xml');
Result:=sRe_XML.XML.Text;//返回從微信接口收到的數據
FreeAndNil(fsparams);
FreeAndNil(idhttp_bill);
FreeAndNil(sre_XML);
except
on e: Exception do
Result:=e.Message;
end;
end;

//MD5加密,試過(guò)多種方法包括 SQLServer、MD5單元來(lái)進(jìn)行MD5加密,卻都得不到正確的MD5加密值,
//無(wú)奈使用了mysql的MD5函數來(lái)進(jìn)行,有更好更簡(jiǎn)潔的方法嗎
function MD5_encrypt(str_TEMP:string):string;
var adoc_md5:TADOConnection;
adoq_md5:TADOQuery;
begin
try
adoc_md5:=TADOConnection.Create(nil);
adoc_md5.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=my;';
adoc_md5.LoginPrompt:=False;
adoc_md5.Connected;
adoq_md5:=TADOQuery.Create(nil);
adoq_md5.Connection:=adoc_md5;
adoq_md5.SQL.Text:='select upper(md5('''+str_TEMP+''')) as sign_str';
adoq_md5.Open;
Result:=adoq_md5.FieldByName('sign_str').AsString;
finally
FreeAndNil(adoc_md5);
FreeAndNil(adoq_md5);
end;
end;
end.
來(lái)自CODE的代碼片
weixinapi_refundquery.pas

0
0
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
微信要逆天??!突然新增這么多功能!
從Delphi 7升級到Delphi XE
delphi XE10 安卓開(kāi)發(fā)環(huán)境配置2
微信突然新增這么多逆天功能,你造嗎?
delphi XE2 回到古老的 delphi7 桌面方法。。。
Delphi XE 11.1下創(chuàng )建簽名文件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久