PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/b2b/plugins/payment/pay.99bill.php

http://phpfor.googlecode.com/
PHP | 171 lines | 149 code | 6 blank | 16 comment | 9 complexity | ac7a0c161777e0f00881941e178296be MD5 | raw file
  1. <?php
  2. require('paymentPlugin.php');
  3. class pay_99bill extends paymentPlugin{
  4. var $name = '??????';//??????
  5. var $logo = '99BILL';
  6. var $version = 20070902;
  7. var $charset = 'utf8';
  8. var $applyUrl = '';
  9. //var $submitUrl = 'https://www.99bill.com/webapp/receiveMerchantInfoAction.do';
  10. var $submitUrl = 'https://www.99bill.com/gateway/recvMerchantInfoAction.htm';
  11. var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##???????
  12. var $supportCurrency = array("CNY"=>"1");
  13. var $supportArea = array("AREA_CNY");
  14. var $desc = '??????????????????????EMAIL???????????????????????27???????????????????????????????';
  15. var $intro = '??????????????????????EMAIL???????????????????????27???????????????????????????????';
  16. var $orderby = 7;
  17. function toSubmit($payment){
  18. $merId = $this->getConf($payment['M_OrderId'], 'member_id');
  19. $ikey = $this->getConf($payment['M_OrderId'], 'PrivateKey');//????????99BILL????????
  20. $payment['M_Amount']=ceil($payment['M_Amount'] * 100);
  21. $orderTime = date('YmdHis',$payment['M_Time']?$payment['M_Time']:time());
  22. $return['inputCharset']="1";
  23. $return['bgUrl'] = $this->callbackUrl;
  24. $return['version'] = "v2.0";
  25. $return['language']="1";
  26. $return['signType']="1";
  27. $return['merchantAcctId'] = $merId;
  28. $return['payerName']=$payment['P_Name'];
  29. $return['payerContactType']="1";//?????????.???????????????
  30. $return['payerContact']=$payment['P_Email'];//???????
  31. $return['orderId']= $payment['M_OrderId'];
  32. $return['orderAmount'] = $payment['M_Amount'];
  33. $return['orderTime'] = $orderTime;
  34. // ???? 2009-10-09 13:23 wubin
  35. if(is_array($payment['M_OrderNO'])) {
  36. $return['productName'] = $payment['M_OrderId'];
  37. } else {
  38. $return['productName'] = $payment['M_OrderNO'];
  39. }
  40. $return['productNum'] = "1";
  41. $return['productId'] = "";
  42. $return['productDesc'] = $payment['M_Remark'];
  43. $return['ext1']= "";
  44. $return['ext2'] = "";
  45. $return['payType'] = "00";
  46. $return['redoFlag'] = 1;//???????????
  47. $return['pid'] = "";//??ID
  48. foreach($return as $k=>$v){
  49. if ($v)
  50. $str.=$k."=".$v."&";
  51. }
  52. $signMsg=strtoupper(md5(substr($str,0,strlen($str)-1)."&key=".$ikey));
  53. $return['signMsg']=$signMsg;
  54. return $return;
  55. }
  56. function callback($in,&$paymentId,&$money,&$message,&$tradeno){
  57. $system = &$GLOBALS['system'];
  58. $url = $system->mkUrl('paycenter',$act='result');
  59. $merchantAcctId=trim($in['merchantAcctId']);
  60. $version=trim($in['version']);
  61. $language=trim($in['language']);
  62. $signType=trim($in['signType']);
  63. $payType=trim($in['payType']);
  64. $orderId=trim($in['orderId']);
  65. $orderTime=trim($in['orderTime']);
  66. $bankId = trim($in['bankId']);
  67. //????????
  68. ///?????????????????
  69. ///??2 ???0.02?
  70. $orderAmount=trim($in['orderAmount']);
  71. $dealId=trim($in['dealId']); //????????????
  72. $bankDealId=trim($in['bankDealId']); //????????????????????????????????
  73. $dealTime=trim($in['dealTime']);
  74. //????????
  75. ///????
  76. ///?? 2 ???0.02?
  77. $payAmount=trim($in['payAmount']);
  78. //???????
  79. ///????
  80. ///?? 2 ???0.02?
  81. $fee=trim($in['fee']);
  82. //??????
  83. ///10?? ??; 11?? ??
  84. ///00?? ???????????????????;01?? ???????????????????
  85. $payResult=trim($in['payResult']);
  86. $errCode=trim($in['errCode']);
  87. $signMsg=trim($in['signMsg']); //???????
  88. $key=$this->getConf($orderId,'PrivateKey');
  89. //???????????????
  90. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"merchantAcctId",$merchantAcctId);
  91. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"version",$version);
  92. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"language",$language);
  93. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"signType",$signType);
  94. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"payType",$payType);
  95. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"bankId",$bankId);
  96. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"orderId",$orderId);
  97. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"orderTime",$orderTime);
  98. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"orderAmount",$orderAmount);
  99. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"dealId",$dealId);
  100. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"bankDealId",$bankDealId);
  101. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"dealTime",$dealTime);
  102. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"payAmount",$payAmount);
  103. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"fee",$fee);
  104. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"ext1",$ext1);
  105. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"ext2",$ext2);
  106. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"payResult",$payResult);
  107. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"errCode",$errCode);
  108. $merchantSignMsgVal=$this->appendParam($merchantSignMsgVal,"key",$key);
  109. $merchantSignMsg= md5($merchantSignMsgVal);
  110. $paymentId=$orderId;
  111. $money = $payAmount/100;
  112. $tradeno = $dealId;
  113. $system = &$GLOBALS['system'];
  114. $sUrl = $system->base_url();
  115. $url = $system->mkUrl('paycenter',$act='result');
  116. ///???????????
  117. if(strtoupper($signMsg) == strtoupper($merchantSignMsg)){
  118. switch($payResult){
  119. case "10":
  120. $rtnOk=1;
  121. $rtnUrl=$sUrl.$url."?payment_id=".$orderId;
  122. echo "<result>".$rtnOk."</result><redirecturl>".$rtnUrl."</redirecturl>";
  123. return PAY_SUCCESS;
  124. break;
  125. default:
  126. $rtnOk=1;
  127. $rtnUrl=$sUrl.$url."?payment_id=".$orderId;
  128. echo "<result>".$rtnOk."</result><redirecturl>".$rtnUrl."</redirecturl>";
  129. return PAY_FAIL;
  130. break;
  131. }
  132. }else{
  133. $message="???????";
  134. $rtnOk=1;
  135. $rtnUrl=$sUrl.$url."?payment_id=".$orderId;
  136. echo "<result>".$rtnOk."</result><redirecturl>".$rtnUrl."</redirecturl>";
  137. return PAY_ERROR;
  138. }
  139. }
  140. function getfields(){
  141. return array(
  142. 'member_id'=>array(
  143. 'label'=>'???',
  144. 'type'=>'string'
  145. ),
  146. 'PrivateKey'=>array(
  147. 'label'=>'??',
  148. 'type'=>'string'
  149. )
  150. );
  151. }
  152. function appendParam($returnStr,$paramId,$paramValue){
  153. if($returnStr != ""){
  154. if($paramValue != ""){
  155. $returnStr.="&".$paramId."=".$paramValue;
  156. }
  157. }else{
  158. If($paramValue!=""){
  159. $returnStr=$paramId."=".$paramValue;
  160. }
  161. }
  162. return $returnStr;
  163. }
  164. }
  165. ?>