贴出来给大家见识见识!呵呵。。
该文件位于 api\alipayapi.php
<?php
/*********************/
/* */
/* Version : 5.1.0 */
/* Author : RM */
/* Comment : 071223 */
/* */
/*********************/
function credit_payurl( $price, $orderid )
{
global $bbname;
global $discuz_userss;
global $language;
global $boardurl;
global $extcredits;
global $creditstrans;
global $onlineip;
global $ec_ratio;
global $ec_account;
global $timestamp;
global $authkey;
global $charset;
$args = array(
"subject" => $bbname." - ".$discuz_userss." - ".$language['credit_payment'],
"body" => $language['credit_forum_payment']." ".$extcredits[$creditstrans]['title']." ".intval( $price * $ec_ratio )." ".$extcredits[$creditstrans]['unit']." (".$onlineip.")",
"service" => "create_digital_goods_trade_p",
"partner" => DISCUZ_PARTNER,
"notify_url" => $boardurl."api/alipaynotify.php",
"show_url" => $boardurl,
"_input_charset" => $charset,
"out_trade_no" => $orderid,
"price" => $price,
"quantity" => 1,
"seller_email" => $ec_account
);
if ( DISCUZ_DIRECTPAY )
{
$args['service'] = "create_direct_pay_by_user";
$args['payment_type'] = "1";
}
ksort( $args );
$urlstr = $sign = "";
foreach ( $args as $key => $val )
{
if ( $val != "" )
{
$sign .= "&".$key."=".$val;
}
$urlstr .= $key."=".rawurlencode( $val )."&";
}
$sign = substr( $sign, 1 );
$sign = md5( $sign.DISCUZ_SECURITYCODE );
return "http://www.alipay.com/redir.do?id=307&site=allbbs&target=".rawurlencode( "https://www.alipay.com/cooperate/gateway.do?".$urlstr."sign=".$sign."&sign_type=MD5" );
}
function trade_payurl( $pay, $trade, $tradelog )
{
global $boardurl;
global $authkey;
global $charset;
$args = array(
"service" => "trade_create_by_buyer",
"partner" => DISCUZ_PARTNER,
"notify_url" => $boardurl."api/tradenotify.php",
"show_url" => $boardurl."viewthread.php?do=tradeinfo&tid=".$tradelog['tid']."&pid=".$tradelog['pid'],
"_input_charset" => $charset,
"subject" => $trade['subject'],
"body" => $trade['subject'],
"out_trade_no" => $tradelog['orderid'],
"price" => $tradelog['baseprice'],
"quantity" => $tradelog['number'],
"logistics_type" => $pay['logistics_type'],
"logistics_fee" => $tradelog['transportfee'],
"logistics_payment" => $pay['transport'],
"payment_type" => $trade['itemtype'],
"seller_email" => $trade['account']
);
if ( DISCUZ_COMMISION )
{
$args += array(
"commision_fee" => $pay['commision'],
"commision_id" => DISCUZ_PARTNER
);
}
if ( $pay['logistics_type'] == "VIRTUAL" )
{
$args['service'] = "create_digital_goods_trade_p";
}
ksort( $args );
$urlstr = $sign = "";
foreach ( $args as $key => $val )
{
if ( $val != "" )
{
$sign .= "&".$key."=".$val;
}
$urlstr .= $key."=".rawurlencode( $val )."&";
}
$sign = substr( $sign, 1 );
$sign = md5( $sign.DISCUZ_SECURITYCODE );
return "http://www.alipay.com/redir.do?id=307&site=allbbs&target=".rawurlencode( "https://www.alipay.com/cooperate/gateway.do?".$urlstr."sign=".$sign."&sign_type=MD5" );
}
function trade_typestatus( $method, $status = -1 )
{
switch ( $method )
{
case "buytrades" :
$methodvalue = array( 1, 5, 11, 12 );
break;
case "selltrades" :
$methodvalue = array( 2, 4, 10, 13 );
break;
case "successtrades" :
$methodvalue = array( 7 );
break;
case "tradingtrades" :
$methodvalue = array( 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16 );
break;
case "closedtrades" :
$methodvalue = array( 8, 17 );
break;
case "refundsuccess" :
$methodvalue = array( 17 );
break;
case "refundtrades" :
$methodvalue = array( 14, 15, 16, 17, 18 );
break;
case "unstarttrades" :
$methodvalue = array( 0 );
break;
case "eccredittrades" :
$methodvalue = array( 7, 17 );
}
return $status != 0 - 1 ? in_array( $status, $methodvalue ) : implode( "','", $methodvalue );
}
function trade_getstatus( $key, $method = 2 )
{
global $language;
$status[1] = array( "WAIT_BUYER_PAY" => 1, "WAIT_SELLER_CONFIRM_TRADE" => 2, "WAIT_SYS_CONFIRM_PAY" => 3, "WAIT_SELLER_SEND_GOODS" => 4, "WAIT_BUYER_CONFIRM_GOODS" => 5, "WAIT_SYS_PAY_SELLER" => 6, "TRADE_FINISHED" => 7, "TRADE_CLOSED" => 8, "WAIT_SELLER_AGREE" => 10, "SELLER_REFUSE_BUYER" => 11, "WAIT_BUYER_RETURN_GOODS" => 12, "WAIT_SELLER_CONFIRM_GOODS" => 13, "WAIT_ALIPAY_REFUND" => 14, "ALIPAY_CHECK" => 15, "OVERED_REFUND" => 16, "REFUND_SUCCESS" => 17, "REFUND_CLOSED" => 18 );
$status[2] = array(
0 => $language['trade_unstart'],
1 => $language['trade_waitbuyerpay'],
2 => $language['trade_waitsellerconfirm'],
3 => $language['trade_sysconfirmpay'],
4 => $language['trade_waitsellersend'],
5 => $language['trade_waitbuyerconfirm'],
6 => $language['trade_syspayseller'],
7 => $language['trade_finished'],
8 => $language['trade_closed'],
10 => $language['trade_waitselleragree'],
11 => $language['trade_sellerrefusebuyer'],
12 => $language['trade_waitbuyerreturn'],
13 => $language['trade_waitsellerconfirmgoods'],
14 => $language['trade_waitalipayrefund'],
15 => $language['trade_alipaycheck'],
16 => $language['trade_overedrefund'],
17 => $language['trade_refundsuccess'],
18 => $language['trade_refundclosed']
);
return $method == 0 - 1 ? $status[2] : $status[$method][$key];
}
function trade_offline( $tradelog, $returndlang = 1 )
{
global $discuz_uid;
global $language;
global $trade_message;
$tmp = $return = array( );
if ( $discuz_uid == $tradelog['buyerid'] )
{
$data = array(
0 => array( 4, 8 ),
1 => array( 4, 8 ),
8 => array( 1, 4 ),
5 => array( 7, 10 ),
11 => array( 10, 7 ),
12 => array( 13 )
);
$tmp = $data[$tradelog['status']];
}
else if ( $discuz_uid == $tradelog['sellerid'] )
{
$data = array(
0 => array( 1, 8 ),
8 => array( 1 ),
4 => array( 5 ),
10 => array( 12, 11 ),
13 => array( 17 )
);
$tmp = $data[$tradelog['status']];
}
if ( $returndlang )
{
$i = 0;
$count = count( $tmp );
for ( ; $i < $count; ++$i )
{
$return[$tmp[$i]] = $language["trade_offline_".$tmp[$i]];
$trade_message .= isset( $language["trade_message_".$tmp[$i]] ) ? $language["trade_message_".$tmp[$i]]."<br />" : "";
}
return $return;
}
else
{
return $tmp;
}
}
function trade_setprice( $data, &$price, &$pay, &$transportfee )
{
if ( $data['transport'] == 1 )
{
$pay['transport'] = "SELLER_PAY";
}
else if ( $data['transport'] == 2 )
{
$pay['transport'] = "BUYER_PAY";
}
else if ( $data['transport'] == 3 )
{
$pay['logistics_type'] = "VIRTUAL";
}
else
{
$pay['transport'] = "BUYER_PAY_AFTER_RECEIVE";
}
if ( $data['transport'] != 3 )
{
if ( $data['fee'] == 1 )
{
$pay['logistics_type'] = "POST";
$pay['logistics_fee'] = $data['trade']['ordinaryfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['ordinaryfee'];
$transportfee = $data['trade']['ordinaryfee'];
}
}
else if ( $data['fee'] == 2 )
{
$pay['logistics_type'] = "EMS";
$pay['logistics_fee'] = $data['trade']['emsfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['emsfee'];
$transportfee = $data['trade']['emsfee'];
}
}
else
{
$pay['logistics_type'] = "EXPRESS";
$pay['logistics_fee'] = $data['trade']['expressfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['expressfee'];
$transportfee = $data['trade']['expressfee'];
}
}
}
}
function trade_create( $trade )
{
global $tablepre;
global $db;
global $allowposttrade;
global $mintradeprice;
global $maxtradeprice;
global $timestamp;
extract( $trade );
$special = 2;
$expiration = $item_expiration ? strtotime( $item_expiration ) : 0;
$closed = 0 < $expiration && strtotime( $item_expiration ) < $timestamp ? 1 : $closed;
$item_price = floatval( $item_price );
switch ( $transport )
{
case "seller" :
$item_transport = 1;
break;
case "buyer" :
$item_transport = 2;
break;
case "virtual" :
$item_transport = 3;
break;
case "logistics" :
$item_transport = 4;
}
$seller = dhtmlspecialchars( $seller );
$item_name = dhtmlspecialchars( $item_name );
$item_locus = dhtmlspecialchars( $item_locus );
$item_number = intval( $item_number );
$item_quality = intval( $item_quality );
$item_transport = intval( $item_transport );
$postage_mail = intval( $postage_mail );
$postage_express = intval( $postage_express );
$postage_ems = intval( $postage_ems );
$item_type = intval( $item_type );
$typeid = intval( $typeid );
$item_costprice = floatval( $item_costprice );
if ( empty( $pid ) )
{
$pid = $db->result( $db->query( "SELECT pid FROM {$tablepre}posts WHERE tid='{$tid}' AND first='1' LIMIT 1" ), 0 );
}
$db->query( "INSERT INTO {$tablepre}trades (tid, pid, typeid, sellerid, seller, account, subject, price, amount, quality, locus, transport, ordinaryfee, expressfee, emsfee, itemtype, dateline, expiration, lastupdate, totalitems, tradesum, closed, costprice, aid)\r\n\t\tVALUES ('{$tid}', '{$pid}', '{$typeid}', '{$discuz_uid}', '{$author}', '{$seller}', '{$item_name}', '{$item_price}', '{$item_number}', '{$item_quality}', '{$item_locus}', '{$item_transport}', '{$postage_mail}', '{$postage_express}', '{$postage_ems}', '{$item_type}', '{$timestamp}', '{$expiration}', '{$timestamp}', '0', '0', '{$closed}', '{$item_costprice}', '{$aid}')" );
}
if ( !defined( "IN_DISCUZ" ) )
{
exit( "Access Denied" );
}
define( "DISCUZ_PARTNER", "2088002052150939" );
define( "DISCUZ_SECURITYCODE", "gh0bis45h89m5mwcoe85us4qrwispes0" );
define( "DISCUZ_COMMISION", 0 );
define( "DISCUZ_DIRECTPAY", 1 );
define( "STATUS_SELLER_SEND", 4 );
define( "STATUS_WAIT_BUYER", 5 );
define( "STATUS_TRADE_SUCCESS", 7 );
define( "STATUS_REFUND_CLOSE", 17 );
?>
该文件位于 api\alipayapi.php
<?php
/*********************/
/* */
/* Version : 5.1.0 */
/* Author : RM */
/* Comment : 071223 */
/* */
/*********************/
function credit_payurl( $price, $orderid )
{
global $bbname;
global $discuz_userss;
global $language;
global $boardurl;
global $extcredits;
global $creditstrans;
global $onlineip;
global $ec_ratio;
global $ec_account;
global $timestamp;
global $authkey;
global $charset;
$args = array(
"subject" => $bbname." - ".$discuz_userss." - ".$language['credit_payment'],
"body" => $language['credit_forum_payment']." ".$extcredits[$creditstrans]['title']." ".intval( $price * $ec_ratio )." ".$extcredits[$creditstrans]['unit']." (".$onlineip.")",
"service" => "create_digital_goods_trade_p",
"partner" => DISCUZ_PARTNER,
"notify_url" => $boardurl."api/alipaynotify.php",
"show_url" => $boardurl,
"_input_charset" => $charset,
"out_trade_no" => $orderid,
"price" => $price,
"quantity" => 1,
"seller_email" => $ec_account
);
if ( DISCUZ_DIRECTPAY )
{
$args['service'] = "create_direct_pay_by_user";
$args['payment_type'] = "1";
}
ksort( $args );
$urlstr = $sign = "";
foreach ( $args as $key => $val )
{
if ( $val != "" )
{
$sign .= "&".$key."=".$val;
}
$urlstr .= $key."=".rawurlencode( $val )."&";
}
$sign = substr( $sign, 1 );
$sign = md5( $sign.DISCUZ_SECURITYCODE );
return "http://www.alipay.com/redir.do?id=307&site=allbbs&target=".rawurlencode( "https://www.alipay.com/cooperate/gateway.do?".$urlstr."sign=".$sign."&sign_type=MD5" );
}
function trade_payurl( $pay, $trade, $tradelog )
{
global $boardurl;
global $authkey;
global $charset;
$args = array(
"service" => "trade_create_by_buyer",
"partner" => DISCUZ_PARTNER,
"notify_url" => $boardurl."api/tradenotify.php",
"show_url" => $boardurl."viewthread.php?do=tradeinfo&tid=".$tradelog['tid']."&pid=".$tradelog['pid'],
"_input_charset" => $charset,
"subject" => $trade['subject'],
"body" => $trade['subject'],
"out_trade_no" => $tradelog['orderid'],
"price" => $tradelog['baseprice'],
"quantity" => $tradelog['number'],
"logistics_type" => $pay['logistics_type'],
"logistics_fee" => $tradelog['transportfee'],
"logistics_payment" => $pay['transport'],
"payment_type" => $trade['itemtype'],
"seller_email" => $trade['account']
);
if ( DISCUZ_COMMISION )
{
$args += array(
"commision_fee" => $pay['commision'],
"commision_id" => DISCUZ_PARTNER
);
}
if ( $pay['logistics_type'] == "VIRTUAL" )
{
$args['service'] = "create_digital_goods_trade_p";
}
ksort( $args );
$urlstr = $sign = "";
foreach ( $args as $key => $val )
{
if ( $val != "" )
{
$sign .= "&".$key."=".$val;
}
$urlstr .= $key."=".rawurlencode( $val )."&";
}
$sign = substr( $sign, 1 );
$sign = md5( $sign.DISCUZ_SECURITYCODE );
return "http://www.alipay.com/redir.do?id=307&site=allbbs&target=".rawurlencode( "https://www.alipay.com/cooperate/gateway.do?".$urlstr."sign=".$sign."&sign_type=MD5" );
}
function trade_typestatus( $method, $status = -1 )
{
switch ( $method )
{
case "buytrades" :
$methodvalue = array( 1, 5, 11, 12 );
break;
case "selltrades" :
$methodvalue = array( 2, 4, 10, 13 );
break;
case "successtrades" :
$methodvalue = array( 7 );
break;
case "tradingtrades" :
$methodvalue = array( 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16 );
break;
case "closedtrades" :
$methodvalue = array( 8, 17 );
break;
case "refundsuccess" :
$methodvalue = array( 17 );
break;
case "refundtrades" :
$methodvalue = array( 14, 15, 16, 17, 18 );
break;
case "unstarttrades" :
$methodvalue = array( 0 );
break;
case "eccredittrades" :
$methodvalue = array( 7, 17 );
}
return $status != 0 - 1 ? in_array( $status, $methodvalue ) : implode( "','", $methodvalue );
}
function trade_getstatus( $key, $method = 2 )
{
global $language;
$status[1] = array( "WAIT_BUYER_PAY" => 1, "WAIT_SELLER_CONFIRM_TRADE" => 2, "WAIT_SYS_CONFIRM_PAY" => 3, "WAIT_SELLER_SEND_GOODS" => 4, "WAIT_BUYER_CONFIRM_GOODS" => 5, "WAIT_SYS_PAY_SELLER" => 6, "TRADE_FINISHED" => 7, "TRADE_CLOSED" => 8, "WAIT_SELLER_AGREE" => 10, "SELLER_REFUSE_BUYER" => 11, "WAIT_BUYER_RETURN_GOODS" => 12, "WAIT_SELLER_CONFIRM_GOODS" => 13, "WAIT_ALIPAY_REFUND" => 14, "ALIPAY_CHECK" => 15, "OVERED_REFUND" => 16, "REFUND_SUCCESS" => 17, "REFUND_CLOSED" => 18 );
$status[2] = array(
0 => $language['trade_unstart'],
1 => $language['trade_waitbuyerpay'],
2 => $language['trade_waitsellerconfirm'],
3 => $language['trade_sysconfirmpay'],
4 => $language['trade_waitsellersend'],
5 => $language['trade_waitbuyerconfirm'],
6 => $language['trade_syspayseller'],
7 => $language['trade_finished'],
8 => $language['trade_closed'],
10 => $language['trade_waitselleragree'],
11 => $language['trade_sellerrefusebuyer'],
12 => $language['trade_waitbuyerreturn'],
13 => $language['trade_waitsellerconfirmgoods'],
14 => $language['trade_waitalipayrefund'],
15 => $language['trade_alipaycheck'],
16 => $language['trade_overedrefund'],
17 => $language['trade_refundsuccess'],
18 => $language['trade_refundclosed']
);
return $method == 0 - 1 ? $status[2] : $status[$method][$key];
}
function trade_offline( $tradelog, $returndlang = 1 )
{
global $discuz_uid;
global $language;
global $trade_message;
$tmp = $return = array( );
if ( $discuz_uid == $tradelog['buyerid'] )
{
$data = array(
0 => array( 4, 8 ),
1 => array( 4, 8 ),
8 => array( 1, 4 ),
5 => array( 7, 10 ),
11 => array( 10, 7 ),
12 => array( 13 )
);
$tmp = $data[$tradelog['status']];
}
else if ( $discuz_uid == $tradelog['sellerid'] )
{
$data = array(
0 => array( 1, 8 ),
8 => array( 1 ),
4 => array( 5 ),
10 => array( 12, 11 ),
13 => array( 17 )
);
$tmp = $data[$tradelog['status']];
}
if ( $returndlang )
{
$i = 0;
$count = count( $tmp );
for ( ; $i < $count; ++$i )
{
$return[$tmp[$i]] = $language["trade_offline_".$tmp[$i]];
$trade_message .= isset( $language["trade_message_".$tmp[$i]] ) ? $language["trade_message_".$tmp[$i]]."<br />" : "";
}
return $return;
}
else
{
return $tmp;
}
}
function trade_setprice( $data, &$price, &$pay, &$transportfee )
{
if ( $data['transport'] == 1 )
{
$pay['transport'] = "SELLER_PAY";
}
else if ( $data['transport'] == 2 )
{
$pay['transport'] = "BUYER_PAY";
}
else if ( $data['transport'] == 3 )
{
$pay['logistics_type'] = "VIRTUAL";
}
else
{
$pay['transport'] = "BUYER_PAY_AFTER_RECEIVE";
}
if ( $data['transport'] != 3 )
{
if ( $data['fee'] == 1 )
{
$pay['logistics_type'] = "POST";
$pay['logistics_fee'] = $data['trade']['ordinaryfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['ordinaryfee'];
$transportfee = $data['trade']['ordinaryfee'];
}
}
else if ( $data['fee'] == 2 )
{
$pay['logistics_type'] = "EMS";
$pay['logistics_fee'] = $data['trade']['emsfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['emsfee'];
$transportfee = $data['trade']['emsfee'];
}
}
else
{
$pay['logistics_type'] = "EXPRESS";
$pay['logistics_fee'] = $data['trade']['expressfee'];
if ( $data['transport'] == 2 )
{
$price = $price + $data['trade']['expressfee'];
$transportfee = $data['trade']['expressfee'];
}
}
}
}
function trade_create( $trade )
{
global $tablepre;
global $db;
global $allowposttrade;
global $mintradeprice;
global $maxtradeprice;
global $timestamp;
extract( $trade );
$special = 2;
$expiration = $item_expiration ? strtotime( $item_expiration ) : 0;
$closed = 0 < $expiration && strtotime( $item_expiration ) < $timestamp ? 1 : $closed;
$item_price = floatval( $item_price );
switch ( $transport )
{
case "seller" :
$item_transport = 1;
break;
case "buyer" :
$item_transport = 2;
break;
case "virtual" :
$item_transport = 3;
break;
case "logistics" :
$item_transport = 4;
}
$seller = dhtmlspecialchars( $seller );
$item_name = dhtmlspecialchars( $item_name );
$item_locus = dhtmlspecialchars( $item_locus );
$item_number = intval( $item_number );
$item_quality = intval( $item_quality );
$item_transport = intval( $item_transport );
$postage_mail = intval( $postage_mail );
$postage_express = intval( $postage_express );
$postage_ems = intval( $postage_ems );
$item_type = intval( $item_type );
$typeid = intval( $typeid );
$item_costprice = floatval( $item_costprice );
if ( empty( $pid ) )
{
$pid = $db->result( $db->query( "SELECT pid FROM {$tablepre}posts WHERE tid='{$tid}' AND first='1' LIMIT 1" ), 0 );
}
$db->query( "INSERT INTO {$tablepre}trades (tid, pid, typeid, sellerid, seller, account, subject, price, amount, quality, locus, transport, ordinaryfee, expressfee, emsfee, itemtype, dateline, expiration, lastupdate, totalitems, tradesum, closed, costprice, aid)\r\n\t\tVALUES ('{$tid}', '{$pid}', '{$typeid}', '{$discuz_uid}', '{$author}', '{$seller}', '{$item_name}', '{$item_price}', '{$item_number}', '{$item_quality}', '{$item_locus}', '{$item_transport}', '{$postage_mail}', '{$postage_express}', '{$postage_ems}', '{$item_type}', '{$timestamp}', '{$expiration}', '{$timestamp}', '0', '0', '{$closed}', '{$item_costprice}', '{$aid}')" );
}
if ( !defined( "IN_DISCUZ" ) )
{
exit( "Access Denied" );
}
define( "DISCUZ_PARTNER", "2088002052150939" );
define( "DISCUZ_SECURITYCODE", "gh0bis45h89m5mwcoe85us4qrwispes0" );
define( "DISCUZ_COMMISION", 0 );
define( "DISCUZ_DIRECTPAY", 1 );
define( "STATUS_SELLER_SEND", 4 );
define( "STATUS_WAIT_BUYER", 5 );
define( "STATUS_TRADE_SUCCESS", 7 );
define( "STATUS_REFUND_CLOSE", 17 );
?>
