全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 21132|回复: 40

[已解决] 不求人.自已做好WHMCS的ALIPAY接口.

[复制链接]
发表于 2010-1-15 01:47:03 | 显示全部楼层 |阅读模式
财务系统的建立需求....已经逼不及待了.

幸好自己用了WHMCS已经快二年了(每月15刀..汗死.早知买终身的)
随便找了家翻译效果好点的现成系统...复制出中文语言文件...

4.1.2的WHMCS+中文已经产生了...

本来也想懒动手的了.找了几家提供支付宝接口的...要么是半夜不在线..要么是天价...还TMD要使用ioncode加密....我P...

于是自己看了看WHMCS的接口DEV...还有ALIPAY的...
发觉其实很简单的啊...

花了不超过1小时的时间...
基本的东西已经出来了...

三个文件 .
一个是发送接口.
一个是即时返回接口.
一个是后台同步接口.

EASY JOB...

可惜没有测试环境..
在网上搜了半天...想要个免费的商家接口..结果都找不到.

后来比较了下..一年6W的交易额..干脆就花600元买个算了...
(保6W交易额...不收手续费...就算是申请到免费的接口..也要2%的交易费.60000*0.02=====1200元了)


终于等了一天..接口生效了...
开始测试...

刚开始时...有错误...
再修正...

哈哈.
现在全能用了.

有下载了....请到下面下载.
http://blog.vpsoffer.com/post/3/

[ 本帖最后由 vpsoffer.com 于 2010-1-15 14:50 编辑 ]
发表于 2010-1-15 01:54:33 | 显示全部楼层
支付宝就有API下载,整合也不是难事.
发表于 2010-1-15 02:05:47 | 显示全部楼层
我顶!
发表于 2010-1-15 08:41:27 | 显示全部楼层
自己动手  支持下
发表于 2010-1-15 09:28:38 | 显示全部楼层
这个强大了。
发表于 2010-1-15 09:48:56 | 显示全部楼层

自己动手 丰衣足食
发表于 2010-1-15 11:00:02 | 显示全部楼层
我还是不懂怎么弄,急需现成的

强烈希望alipay出对应whmcs的解决方案。
发表于 2010-1-15 11:06:05 | 显示全部楼层

回复 7# 的帖子

很简单的,几个文件里填下申请接口的key。
然后在支付成功后将充值成功的金额和写入数据库。
 楼主| 发表于 2010-1-15 13:50:20 | 显示全部楼层
发送接口
  1. <?php
  2. //$partner         = "";        //合作伙伴ID
  3. //$security_code   = "";        //安全检验码
  4. //$seller_email    = "";        //卖家支付宝帐户
  5. function alipay_config() {
  6.     $configarray = array(
  7.      "FriendlyName" => array("Type" => "System", "Value"=>"Alipay 支付宝接口"),
  8.      "seller_email" => array("FriendlyName" => "卖家支付宝帐户", "Type" => "text", "Size" => "32", ),
  9.      "partnerID" => array("FriendlyName" => "合作伙伴ID", "Type" => "text", "Size" => "16", ),
  10.      "security_code" => array("FriendlyName" => "安全检验码", "Type" => "text", "Size" => "32", ),
  11.      "testmode" => array("FriendlyName" => "测试模式", "Type" => "yesno", "Description" => "测试模式(暂时不可用)", ),
  12.     );
  13.         return $configarray;
  14. }

  15. function alipay_link($params) {


  16.         $_input_charset  = "utf-8";   //字符编码格式 目前支持 GBK 或 utf-8
  17.         $sign_type       = "MD5";     //加密方式 系统默认(不要修改)
  18.         $transport       = "https";   //访问模式,你可以根据自己的服务器是否支持ssl访问而选择http以及https访问模式(系统默认,不要修改)
  19.        
  20.         # Gateway Specific Variables
  21.         $gatewayPID = $params['partnerID'];
  22.         $gatewaySELLER_EMAIL = $params['seller_email'];
  23.         $gatewaySECURITY_CODE = $params['security_code'];
  24.         $TEST_MODE=$params['testmode'];

  25.         # Invoice Variables
  26.         $invoiceid = $params['invoiceid'];
  27.         $description = $params["description"];
  28.   $amount = $params['amount']; # Format: ##.##
  29.   $currency = $params['currency']; # Currency Code

  30.         # System Variables
  31.         $companyname = $params['companyname'];
  32.         $systemurl = $params['systemurl'];
  33.         $currency = $params['currency'];
  34.         $notify_url= $systemurl."/modules/gateways/callback/alipay.php";
  35.         $return_url= $systemurl;
  36.         $parameter = array(
  37.         "service"         => "create_direct_pay_by_user",  //交易类型
  38.         "partner"         => $gatewayPID,          //合作商户号
  39.         "return_url"      => $systemurl."/modules/gateways/callback/alipay_return.php",         //同步返回
  40.         "notify_url"      => $systemurl."/modules/gateways/callback/alipay_callback.php",       //异步返回
  41.         "_input_charset"  => $_input_charset,   //字符集,默认为GBK
  42.         "subject"         => "$companyname 订单",        //商品名称,必填
  43.         "body"            => $description,        //商品描述,必填
  44.         "out_trade_no"    => $invoiceid,      //商品外部交易号,必填(保证唯一性)
  45.         "total_fee"       => $amount,            //商品单价,必填(价格不能为0)
  46.         "payment_type"    => "1",               //默认为1,不需要修改
  47.         "show_url"        => $systemurl,         //商品相关网站
  48.         "seller_email"    => $gatewaySELLER_EMAIL      //卖家邮箱,必填
  49. );

  50.         $alipay = new alipay_service($parameter,$gatewaySECURITY_CODE,$sign_type);
  51.         $link=$alipay->create_url();
  52.         $img=$systemurl."/images/alipay.gif";                //这个图片要先存放好.
  53.         $code="<a href='$link'><img src='$img' alt='点击使用支付宝支付'></a>";
  54.         return $code;
  55. }


  56. class alipay_service {

  57.         var $gateway = "https://www.alipay.com/cooperate/gateway.do?";         //支付接口
  58.         var $parameter;       //全部需要传递的参数
  59.         var $security_code;   //安全校验码
  60.         var $mysign;          //签名

  61.         //构造支付宝外部服务接口控制
  62.         function alipay_service($parameter,$security_code,$sign_type = "MD5",$transport= "https") {
  63.                 $this->parameter      = $this->para_filter($parameter);
  64.                 $this->security_code  = $security_code;
  65.                 $this->sign_type      = $sign_type;
  66.                 $this->mysign         = '';
  67.                 $this->transport      = $transport;
  68.                 if($parameter['_input_charset'] == "")
  69.                 $this->parameter['_input_charset']='GBK';
  70.                 if($this->transport == "https") {
  71.                         $this->gateway = "https://www.alipay.com/cooperate/gateway.do?";
  72.                 } else $this->gateway = "http://www.alipay.com/cooperate/gateway.do?";
  73.                 $sort_array  = array();
  74.                 $arg         = "";
  75.                 $sort_array  = $this->arg_sort($this->parameter);
  76.                 while (list ($key, $val) = each ($sort_array)) {
  77.                         $arg.=$key."=".$this->charset_encode($val,$this->parameter['_input_charset'])."&";
  78.                 }
  79.                 $prestr = substr($arg,0,count($arg)-2);  //去掉最后一个问号
  80.                 $this->mysign = $this->sign($prestr.$this->security_code);
  81.         }

  82.         function create_url() {
  83.                 $url         = $this->gateway;
  84.                 $sort_array  = array();
  85.                 $arg         = "";
  86.                 $sort_array  = $this->arg_sort($this->parameter);
  87.                 while (list ($key, $val) = each ($sort_array)) {
  88.                         $arg.=$key."=".urlencode($this->charset_encode($val,$this->parameter['_input_charset']))."&";
  89.                 }
  90.                 $url.= $arg."sign=" .$this->mysign ."&sign_type=".$this->sign_type;
  91.                 return $url;
  92.         }

  93.         function arg_sort($array) {
  94.                 ksort($array);
  95.                 reset($array);
  96.                 return $array;
  97.         }

  98.         function sign($prestr) {
  99.                 $mysign = "";
  100.                 if($this->sign_type == 'MD5') {
  101.                         $mysign = md5($prestr);
  102.                 }elseif($this->sign_type =='DSA') {
  103.                         //DSA 签名方法待后续开发
  104.                         die("DSA 签名方法待后续开发,请先使用MD5签名方式");
  105.                 }else {
  106.                         die("支付宝暂不支持".$this->sign_type."类型的签名方式");
  107.                 }
  108.                 return $mysign;
  109.         }
  110.         function para_filter($parameter) { //除去数组中的空值和签名模式
  111.                 $para = array();
  112.                 while (list ($key, $val) = each ($parameter)) {
  113.                         if($key == "sign" || $key == "sign_type" || $val == "")continue;
  114.                         else        $para[$key] = $parameter[$key];
  115.                 }
  116.                 return $para;
  117.         }
  118.         //实现多种字符编码方式
  119.         function charset_encode($input,$_output_charset ,$_input_charset ="utf-8" ) {
  120.                 $output = "";
  121.                 if(!isset($_output_charset) )$_output_charset  = $this->parameter['_input_charset'];
  122.                 if($_input_charset == $_output_charset || $input ==null) {
  123.                         $output = $input;
  124.                 } elseif (function_exists("mb_convert_encoding")){
  125.                         $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
  126.                 } elseif(function_exists("iconv")) {
  127.                         $output = iconv($_input_charset,$_output_charset,$input);
  128.                 } else die("sorry, you have no libs support for charset change.");
  129.                 return $output;
  130.         }
  131. }

  132. ?>
复制代码

评分

参与人数 2威望 +45 收起 理由
cnx + 15 精品文章
cpuer + 30 感谢分享

查看全部评分

发表于 2010-1-15 13:53:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-12-14 09:37 , Processed in 0.085573 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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