全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 2972|回复: 16
打印 上一主题 下一主题

Bendy的whmcs alipay接口多货币问题修正

[复制链接]
跳转到指定楼层
1#
发表于 2015-5-29 13:02:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
废话:
两种货币以上情况,如USD为主CNY为辅,
当账户以USD货币为主而使用CNY结算,
支付后返回入库的货币没有计算货币汇率。

案例:
1USD账单支付6.2CNY,入库为6.2USD。

正题:
那么问题来了 如何修正?



2#
发表于 2015-5-29 13:19:19 来自手机 | 只看该作者
只用一种货币
3#
发表于 2015-5-29 13:52:54 | 只看该作者
本帖最后由 onepeople 于 2015-5-29 13:53 编辑

1111.png (32.06 KB, 下载次数: 0)
http://zlkb.net/373.html
4#
发表于 2015-5-29 14:17:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
5#
发表于 2015-5-29 15:35:34 来自手机 | 只看该作者
我这里有修复好的,稍后发上来哈
6#
 楼主| 发表于 2015-5-29 15:39:47 | 只看该作者
catding 发表于 2015-5-29 15:35
我这里有修复好的,稍后发上来哈

大爱啊

7#
发表于 2015-5-29 15:42:18 | 只看该作者
来了。
把alipay_callback.php最后的改为这个就可以了。

  1. $gatewaymodule = "alipay"; # Enter your gateway module name here replacing template
  2. $GATEWAY = getGatewayVariables($gatewaymodule);
  3. if (!$GATEWAY["type"]) die("Module Not Activated"); # Checks gateway module is active before accepting callback

  4. $_input_charset  = "utf-8";   //字符编码格式 目前支持 GBK 或 utf-8
  5. $sign_type       = "MD5";     //加密方式 系统默认(不要修改)
  6. $transport       = "https";   //访问模式,你可以根据自己的服务器是否支持ssl访问而选择http以及https访问模式(系统默认,不要修改)
  7. $gatewayPID = $GATEWAY['partnerID'];
  8. $gatewaySELLER_EMAIL = $GATEWAY['seller_email'];
  9. $gatewaySECURITY_CODE = $GATEWAY['security_code'];
  10. $alipay = new alipay_notify($gatewayPID,$gatewaySECURITY_CODE,$sign_type,$_input_charset,$transport);
  11. $verify_result = $alipay->notify_verify();
  12. if(!$verify_result) {
  13.         logTransaction($GATEWAY["name"],$_POST,"Unsuccessful");
  14.         exit;
  15. }
  16. # Get Returned Variables
  17. $status = $_POST['trade_status'];    //获取支付宝传递过来的交易状态
  18. $invoiceid = $_POST['out_trade_no']; //获取支付宝传递过来的订单号
  19. $transid = $_POST['trade_no'];       //获取支付宝传递过来的交易号
  20. $amount = $_POST['total_fee'];       //获取支付宝传递过来的总价格
  21. $fee = 0;
  22. if($status == 'TRADE_FINISHED' || $status == 'TRADE_SUCCESS') {
  23.        
  24.         $paidcurrency = "CNY";
  25.         $result = select_query( 'tblcurrencies', '', array( 'code' => $paidcurrency ));
  26.         $data = mysql_fetch_array($result);
  27.         $paidcurrencyid = $data['id'];
  28.        
  29.         $result = select_query( 'tblinvoices', '', array( 'id' => $invoiceid ) );
  30.         $data = mysql_fetch_array( $result );
  31.         $userid = $data['userid'];
  32.         $currency = getCurrency( $userid );
  33.        
  34.         if ($paidcurrencyid != $currency['id']) {
  35.                 $amount = convertCurrency( $amount, $paidcurrencyid, $currency['id'] );
  36.                 $fee = convertCurrency( $fee, $paidcurrencyid, $currency['id'] );
  37.                 }
  38.                        
  39.         $invoiceid = checkCbInvoiceID($invoiceid,$GATEWAY["name"]); # Checks invoice ID is a valid invoice number or ends processing
  40.         checkCbTransID($transid); # Checks transaction number isn't already in the database and ends processing if it does
  41.         addInvoicePayment($invoiceid,$transid,$amount,$fee,$gatewaymodule);
  42.         logTransaction($GATEWAY["name"],$_POST,"Successful");
  43.         echo "success";
  44. }
  45. else
  46.         echo "fail";
复制代码
8#
发表于 2015-5-29 15:43:48 | 只看该作者
我这个是Bendy老版本修改的。
如果是最新的那个多合一的版本的话
修改if($status == 'TRADE_FINISHED' || $status == 'TRADE_SUCCESS') 之后的内容即可。
9#
 楼主| 发表于 2015-5-29 16:12:13 | 只看该作者
catding 发表于 2015-5-29 15:43
我这个是Bendy老版本修改的。
如果是最新的那个多合一的版本的话
修改if($status == 'TRADE_FINISHED' || $ ...

骚年 能把refund这个function给写出来不  我看到alipay那边有提供范本。

有了这个简直跪舔了啊

  1. function alipay_refund($params) {

  2.     # Gateway Specific Variables
  3.         $gatewayusername = $params['username'];
  4.         $gatewaytestmode = $params['testmode'];

  5.     # Invoice Variables
  6.         $transid = $params['transid']; # Transaction ID of Original Payment
  7.         $amount = $params['amount']; # Format: ##.##
  8.     $currency = $params['currency']; # Currency Code

  9.     # Client Variables
  10.         $firstname = $params['clientdetails']['firstname'];
  11.         $lastname = $params['clientdetails']['lastname'];
  12.         $email = $params['clientdetails']['email'];
  13.         $address1 = $params['clientdetails']['address1'];
  14.         $address2 = $params['clientdetails']['address2'];
  15.         $city = $params['clientdetails']['city'];
  16.         $state = $params['clientdetails']['state'];
  17.         $postcode = $params['clientdetails']['postcode'];
  18.         $country = $params['clientdetails']['country'];
  19.         $phone = $params['clientdetails']['phonenumber'];

  20.         # Card Details
  21.         $cardtype = $params['cardtype'];
  22.         $cardnumber = $params['cardnum'];
  23.         $cardexpiry = $params['cardexp']; # Format: MMYY
  24.         $cardstart = $params['cardstart']; # Format: MMYY
  25.         $cardissuenum = $params['cardissuenum'];

  26.         # Perform Refund Here & Generate $results Array, eg:
  27.         $results = array();
  28.         $results["status"] = "success";
  29.     $results["transid"] = "12345";

  30.         # Return Results
  31.         if ($results["status"]=="success") {
  32.                 return array("status"=>"success","transid"=>$results["transid"],"rawdata"=>$results);
  33.         } elseif ($gatewayresult=="declined") {
  34.         return array("status"=>"declined","rawdata"=>$results);
  35.     } else {
  36.                 return array("status"=>"error","rawdata"=>$results);
  37.         }

  38. }
复制代码
10#
发表于 2015-5-29 17:16:28 来自手机 | 只看该作者
搞不了退款,他这个只是判断状态而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-2 18:54 , Processed in 0.384761 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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