设为首页 收藏本站
查看: 1625|回复: 0

[经验分享] 欧飞手机充值接口php源代码v0.1

[复制链接]

尚未签到

发表于 2015-8-24 11:26:28 | 显示全部楼层 |阅读模式
  最近需要在公司网站上做个手机充值功能,联系了好几个提供手机充值服务接口的商家最后选择了欧飞数卡,写了个欧飞的手机直充接口,可以支持全国移动,联通和电信手机的直充花费,现在公布我的代码给大家参考,希望可以帮助到有同样需求的朋友,也希望大家帮我挑下问题.
  参考文档:OFCARD系统http接口协议(V5.3)
  
  手机直充接口代码如下:(请参考代码注释进行修改)


<?php
/*
  * 欧飞接口v4.0服务控制
  * 参考:OFCARD系统http接口协议(V5.3)
  * 版本 :0.1
  * 作者:http://www.heui.org
  * 日期:20110219
  */

class ofcard_service {

     var$gateway ;           //手机直充网关地址
var$param ;             //查询参数

     /**
      * 从配置文件及入口文件中初始化变量
      * @param string $cardnum 话费面值
      * @param string $order_id 订单号
      * @param string $game_userid 手机号
      * @param string $userid SP编码
      * @param string $userpws SP接入密码
      * @param string $version 欧飞接口版本(固定值为:4.0)
      * @todo 配置文件数组化
      */
     function ofcard_service( $cardnum,$order_id,$game_userid,$userid,$userpws,$version ) {

         $this->gateway ='http://esales1.ofcard.com:8088/onlineorder.do ' ;

         $this->param =array ();
         $this->param[ 'userid' ] =$userid ;
         $this->param[ 'userpws' ] =md5( $userpws );
         //$this->param['cardid'] = '140101';
$this->param[ 'cardid' ] =$this->get_cardid( $game_userid );
         $this->param[ 'cardnum' ] =$cardnum/50;
         $this->param[ 'sporder_id' ] =$order_id ;
         $this->param[ 'sporder_time' ] =date ( 'YmdHis' );
         $this->param[ 'game_userid' ] =$game_userid ;
         $keystr='OFCARD' ;
         $this->param[ 'md5_str' ] =strtoupper ( md5(
                 $this->param[ 'userid' ].
                 $this->param[ 'userpws' ].
                 $this->param[ 'cardid' ].
                 $this->param[ 'cardnum' ].
                 $this->param[ 'sporder_id' ].
                 $this->param[ 'sporder_time' ].
                 $game_userid.$keystr ) );
         $this->param[ 'version' ] =$version ;
     }

     /**
      * 进行充值,使用snoopy提交
      * @param Snoopy $snoopy
      * @param ezSQL_mysql $db
      * @param string $order_id
      * @return 充值结果
      * @todo snoopy 集成
      */
     function recharge( $snoopy,$db,$order_id ) {
         $snoopy->submit( $this->gateway,$this->param);
     //下面数据库操作属于商家逻辑
$sql="UPDATE `recharge` SET `is_recharge` = ".$this->get_xml_value( "game_state",$snoopy->results) .", `ofcard_trade_id` = '".
             $this->get_xml_value( "orderid",$snoopy->results) ."', `purchase_price` = '".
             $this->get_xml_value( "ordercash",$snoopy->results) .
             "' WHERE `order_id` = ".$order_id ;
         $db->query( $sql );
         return$this->get_xml_value( "game_state",$snoopy->results);
     }

     /**
      * xml数据简单解析
      * @param  string $name
      * @param   string $xml
      * @return  string $ret
      */
     function get_xml_value( $name,$xml )
     {
         $ret='' ;
         preg_match( "|<".$name.">(.*)</".$name.">|U",$xml,$ret );
         return$ret [1];
     }

     /**
      *
      * 获取充值状态
      * http://202.102.53.141:83/api/query.do?userid=xxxxx&spbillid=spxxxxxx
      * @param string $userid SP编码
      * @param string $spbillid 商户系统订单号
      * @return 充值状态
      */
     function get_is_recharge( $userid,$spbillid ){
         $status_url="http://202.102.53.141:83/api/query.do?userid= ".$userid."&spbillid=".$spbillid ;
         returnfile_get_contents ( $status_url );
     }

     /**
      *
      * 获取账户余额
      * @param string $userid
      * @param string $userpws
      * @param string $version
      * @return 账户余额
      */
     function get_leftcredit( $userid,$userpws,$version )
     {
         $url="http://esales1.ofcard.com:8088/queryuserinfo.do?userid= ".$userid."&userpws=".md5( $userpws ) ."&version=".$version ;
         return self::get_xml_value( "ret_leftcredit",file_get_contents ( $url ));
     }

     /**
      * 是否可以充值(未进行余额判断)
      * @param string $phoneno
      * @param string $price
      * @param string $userid
      * @return bool 是否可以充值
      */
     function is_recharge( $phoneno,$price,$userid ) {
         $url="http://esales1.ofcard.com:8088/telcheck.do?phoneno= ".$phoneno."&price=".$price."&userid=".$userid ;
         $ret=split( '#',file_get_contents ( $url ));
         return (1==$ret [0]);
     }

     /**
      *
      * 所需提货商品的编码
      * (现全国移动联通快充直充编码为且仅为140101,电信手机编码为且仅为18)
      * @param string $phoneno 手机号码
      * @todo 常量加入配置文件
      */
     function get_cardid( $phoneno ) {
         $num=substr ( $phoneno,0,3);
         $ChinaMobile=array (134,135,147,147,136,137,138,139,150,151,152,182,157,158,159,187,188);
         $ChinaUnicom=array (130,131,132,155,156,145,185,186);
         $ChinaTelecom=array (133,153,180,189);

         if (in_array( $num,$ChinaMobile ) ||in_array( $num,$ChinaUnicom )) {
             return'140101' ;
         }

         if (in_array( $num,$ChinaTelecom )) {
             return'18' ;
         }
     }
}  手机直充接口使用如下:


$ofcard=new ofcard_service( $original_price,$dingdan,$mobile,$userid,$userpws,$version );

$ofcard->recharge( $snoopy,$db,$dingdan );  代码更新请留意:欧飞手机充值源代码

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103447-1-1.html 上篇帖子: 升级PHP到5.3.3的过程及注意事项 下篇帖子: php语法分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表