class
NetPayAction
extends
BaseAction{
public
function
_initialize() {
header(
"Content-type:text/html;charset=utf-8"
);
vendor('Netpay.util.common',
""
,
".php"
);
vendor('Netpay.util.SecssUtil',
""
,
".class.php"
);
vendor('Netpay.util.Settings_INI',
""
,
".php"
);
vendor('Netpay.util.Settings',
""
,
".php"
);
$this
->securityPropFile=
$_SERVER
['DOCUMENT_ROOT'] .
"/ThinkPHP/Extend/Vendor/Netpay/config/security.properties"
;
$this
->b2cPaySend = __APP__.
"/Index/NetPay/b2cPaySend"
;
$this
->b2cRefundSend = __APP__.
"/Index/NetPay/b2cRefundSend"
;
$this
->b2cQuerySend = __APP__.
"/Index/NetPay/b2cQuerySend"
;
$this
->;MerBgUrl = __APP__.
"/Index/NetPay/MerBgUrl"
;
$this
->MerPageUrl = __APP__.
"/Index/NetPay/MerPageUrl"
;
}
public
function
index()
{
$paramArray
=
array
(
'MerId' => '商户号',
'MerOrderNo' => '0000001944663232',
'OrderAmt' => '1',
'TranDate' => '20151219',
'TranTime' =>'171248',
'TranType' => '0001',
'BusiType' =>'0001',
'Version' => '20140728',
'CurryNo' => 'CNY',
'AccessType' =>; '0',
'CommodityMsg' => '测试商品1号',
'MerPageUrl' =>
$this
->MerBgUrl,
'MerBgUrl' =>
$this
->MerPageUrl,
'MerResv' => 'MerResv',
);
if
(
count
(
$paramArray
) >0) {
$dispatchUrl
=
$this
->b2cPaySend;
$transResvedJson
=
array
();
$cardInfoJson
=
array
();
$sendMap
=
array
();
foreach
(
$paramArray
as
$key
=>
$value
) {
if
(isEmpty(
$value
)) {
continue
;
}
if
(startWith(
$key
,
"trans_"
)) {
$key
=
substr
(
$key
,
strlen
(
"trans_"
));
$transResvedJson
[
$key
] =
$value
;
}
else
if
(startWith(
$key
,
"card_"
)) {
$key
=
substr
(
$key
,
strlen
(
"card_"
));
$cardInfoJson
[
$key
] =
$value
;
}
else
{
$sendMap
[
$key
] =
$value
;
}
}
$transResvedStr
= null;
$cardResvedStr
= null;
if
(
count
(
$transResvedJson
) >0) {
$transResvedStr
= json_encode(
$transResvedJson
);
}
if
(
count
(
$cardInfoJson
) > 0) {
$cardResvedStr
= json_encode(
$cardInfoJson
);
}
$secssUtil
=
new
SecssUtil();
if
(! isEmpty(
$transResvedStr
)) {
$transResvedStr
=
$secssUtil
->decryptData(
$transResvedStr
);
$sendMap
[
"TranReserved"
] =
$transResvedStr
;
}
if
(! isEmpty(
$cardResvedStr
)) {
$cardResvedStr
=
$secssUtil
->decryptData(
$cardResvedStr
);
$sendMap
[
"card_"
] =
$cardResvedStr
;
}
$securityPropFile
=
$this
>securityPropFile;
$secssUtil
->init(
$securityPropFile
);
$secssUtil
->sign(
$sendMap
);
$sendMap
[
"Signature"
] =
$secssUtil
->getSign();
$_SESSION
=
$sendMap
;
header(
"Location:"
.
$dispatchUrl
);
}
}
public
function
b2cPaySend(){
layout(false);
$settings
=
new
Settings_INI();
$settings
->oad(
$this
->securityPropFile);
$pay_url
=
"https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0"
;
$html
=
"<form name='payment' action='{$pay_url}' method='POST' target='_blank'>;"
;
$params
=
"TranReserved;MerId;MerOrderNo;OrderAmt;CurryNo;TranDate;SplitMethod;BusiType;MerPageUrl;MerBgUrl;SplitType;MerSplitMsg;PayTimeOut;MerResv;Version;BankInstNo;CommodityMsg;Signature;AccessType;AcqCode;OrderExpiryTime;TranType;RemoteAddr;Referred;TranTime;TimeStamp;CardTranData"
;
foreach
(
$_SESSION
as
$k
=>
$v
) {
if
(
strstr
(
$params
,
$k
)) {
$html
.=
"<input type='hidden' name = '"
.
$k
.
"' value ='"
.
$v
.
"'/>"
;
}
}
$html
.=
"<nput type='button' type='hidden' value='提交订单' >"
;
$html
.=
"<;/from>"
;
$this
->html =
$html
;
$this
->display();
}
public
function
pgReturn(){
if
(
$_POST
) {
if
(
count
(
$_POST
) > 0) {
$secssUtil
=
new
SecssUtil();
$securityPropFile
=
$this
>securityPropFile;
$secssUtil
->init(
$securityPropFile
);
$text
=
array
();
foreach
(
$_POST
as
$key
=>
$value
){
$text
[
$key
] = urldecode(
$value
);
}
if
(
$secssUtil
->verify(
$text
)) {
$_SESSION
[
"VERIFY_KEY"
] =
"success"
;
}
else
{
$_SESSION
[
"VERIFY_KEY"
] =
"fail"
;
}
}
}
}
}