www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/payment/pay.gwpay.php
<?php require('paymentPlugin.php'); class pay_gwpay extends paymentPlugin{ var $name = 'Green World Payment';//Green World Payment var $logo = 'GWPAY'; var $version = 20070902; var $charset = 'big5'; var $submitUrl = 'https://www.twv.com.tw/openpay/pay.php'; var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##需要完善的地方 var $supportCurrency = array("TWD"=>"TWD"); var $supportArea = array("AREA_TWD"); var $orderby = 36; var $cur_trading = true; //支持真实的外币交易 function toSubmit($payment){ if ($this->getConf('system.shoplang') == "en_US") $this->submitUrl = "https://gwpay.com.tw/form_Sc_to5e.php"; else $this->submitUrl = "https://gwpay.com.tw/form_Sc_to5.php"; $merId = $this->getConf($payment["M_OrderId"], 'member_id'); $ikey = $this->getConf($payment["M_OrderId"], 'PrivateKey'); $payment["M_Amount"] = Floor($payment["M_Amount"]);//$order->M_Amount = Floor($order->M_Amount); $return['act'] = "auth"; $return['client'] = $merId; $return['od_sob'] = $payment["M_OrderId"];//$order->M_OrderId; $return['amount'] = $payment["M_Amount"];//$order->M_Amount; $return['email'] = $payment["R_Email"];//$order->R_Email; $return['roturl'] = $this->callbackUrl; return $return; } function callback($in,&$paymentId,&$money,&$message){ $gwsr = $in["gwsr"]; $payid = $in["od_sob"]; $amount = $in["amount"]; $succ = $in["succ"]; $process_time = $in["process_time"]; $process_date = $in["process_date"]; $response_code = $in["response_code"]; $msg = $in["response_msg"]; $od_hoho = $in["od_hoho"]; $auth_code = $in["auth_code"]; $eci = $in["eci"]; $paymentId = $payid; $money = $amount; $loginName = $this->getConf($payid, 'PrivateKey'); //============= recheck flow ======================= $s = $in['gwsr']; $s .= $in['response_code']; $s .= $in['process_time']; $s .= $in['amount']; $s .= $in['od_sob']; $s .= $in['auth_code']; $ret=$this->isRightPacket($loginName, $s, $in['inspect']); //验证 if($ret == true){ switch ($succ){ //成功支付 case "1": return PAY_SUCCESS; break; //支付失败 case "0": $message = '支付失败,请立即与商店管理员联系'; return PAY_FAILED; break; } }else{ $message = '签名认证失败,请立即与商店管理员联系'; return PAY_ERROR; } #mt_srand((double)microtime()*1000000); #$randval = mt_rand(10000000,99999999); #$signstr = substr(hexdec(md5($tmp_orderno.$state.mktime().$randval)), 0, 10); #$Order->updateOrderSign($tmp_orderno, $signstr); } function getfields(){ return array( 'member_id'=>array( 'label'=>'客户号', 'type'=>'string' ), 'PrivateKey'=>array( 'label'=>'私钥', 'type'=>'string' ) ); } function isRightPacket($loginName,$s,$insp) { $s1 = md5($s); $s2 = md5($loginName); $s3 = md5($s1 ^ $s2); if($insp == $s3) return true; return false; } } ?>