DEDECMS与支付宝接口问题

来源:常见问题 2014-03-04

DEDECMS与支付宝接口问题  2009-11-16 22:12:24|  分类: 默认分类 |  标签: |字号大
中
小 订阅 
DEDECMS跟支付宝接口集成很简单,如果没有bug的话,而问题是总少不了要出这样那样的问题。

先拿自己遇到的问题来说。

在DEDECMS系统上设置好了商家ID、密钥、支付宝邮箱之后,如果一切bug都不存在的话,那么即可以顺利实现支付宝充值。可是系统立马给了我一个下马威,呵呵。

首先就来了一个ILLEGAL_ARGUMENT错误。

经过分析post出去的url地址,发现商家ID、密钥、支付宝邮箱都加载错误。经过分析应该是数据加载错误。于是分析data目录下的sys_pay.cache.php文件:

$payment_select = array(0 => “tenpay”,2 => “alipay”,3 => “cbpayment”,4 => “yeepay”);
$payment_userid = array(0 => “********“,1 => “”,2 => “”,3 => “”,4 => “”);
$payment_key = array(0 => “*********“,1 => “”,2 => “”,3 => “”,4 => “”);
$payment_curpay = array(0 => ‘CNY’,1 => ‘CNY’,2 => ‘CNY’,3 => ‘CNY’,4 => ‘CNY’);
$payment_exp = array(0 => “0.01″,1 => “0.00″,2 => “0.01″,3 => “0.01″,4 => “0.00″);
$payment_email = array(0 => “*******@*****.com“,1 => “webmaster@admin.com”,2 => “webmaster@admin.com”,3 => “webmaster@admin.com”,4 => “webmaster@admin.com“);

如红色字所示,这是应该传递的三个直接跟支付宝相关的数据,而他们在数组中的位置为0,也就是array[0]位置。

再来看支付宝接口下的alipay_config.php文件



如上红色字所示,而他的位置为array[2],所以加载数据必定错误。(我这是只有支付宝接口的情况,其他情况照此分析即可),将上面的2改为0,数据加载问题解决。

但是,支付宝接口还是不成功。这次提示的错误为:ILLEGAL_LOGISTICS_FORMAT

查支付宝文档,这是由于物流相关问题造成。

经过再次查看url,分析后发现url中缺少了一个参数叫“logistics_fee”。怎么办呢?原来还有一个支付宝的配置文件,在member/inc/下的config_pay_alipay.php。打开文件:

“service” => “trade_create_by_buyer“, //交易类型,必填实物交易=trade_create_by_buyer(需要填写物流)
“partner” => $partner,            //合作商户号
“return_url” => $return_url,  //同步返回
“notify_url” => $notify_url,  //异步返回
“_input_charset” => $_input_charset,          //字符集,默认为GBK
“subject” => $ptype,                          //商品名称,必填
“body” => $pname,                             //商品描述,必填
“out_trade_no” => $buyid,                     //商品外部交易号,必填,每次测试都须修改
“logistics_fee” => 0.00,                      //物流配送费用
“logistics_payment”=>’BUYER_PAY’,             // 物流配送费用付款方式:SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)
“logistics_type”=>’EXPRESS’,                  // 物流配送方式:POST(平邮)、EMS(EMS)、EXPRESS(其他快递)

这里交易类型为实物交易,trade_create_by_buyer,下面三个红色字部分就是物流信息部分,而不显示的就是logistics_fee” => 0.00。

解决办法:只要将后面的0.00加上”号,问题就解决了,也就是改成logistics_fee” => ‘0.00′。

当然我在调试过程中还会有其他不同的支付宝错误信息提示,但DEDECMS中的问题也就这样两个。






dede支付宝接口问题解决  2009-11-16 21:32:09|  分类: 默认分类 |  标签: |字号大
中
小 订阅 
错误代码ILLEGAL_PARTNER
更新PARTNER值和安全校检码。可能是PARTNER值和安全校检不对应或无效。
或者是你的PARTNER没有开通该服务,例如你用的是虚拟交易的而你开通的只是实物交易.
申请实物商品交易服务和申请虚拟商品交易服务,必须审核通过

错误代码 HAS_NO_PRIVILEGE 
说明使用服务和签约的接口类型不一 致、服务权限关闭或者合同过期。
1、请登录您签约的支付宝账号——>商家服务板块查询您的接口服务类型和合同生效时间。确认好服务名称、合同生效时间、合作者身份ID和校验码。
2、检查您使用的接口中是service参数名称、PartnerID是否是自己的签约ID
常用接口服务参数名称如下:
快速付款(即时到账接口): service="create_direct_pay_by_user" 
标准实物双接口(标准双接口): service="trade_create_by_buyer"
纯担保交易接口(担保接口): service="create_partner_trade_by_buyer"

错误代码 TRADE_DATE_MATCH_ERROR 
含义: 交易数据不匹配
产生原因:
1、已经创建过的订单(在支付宝交易管理中可以查到此交易),买家二次从卖家的网站中的会员中心找到订单,再次提交,但是提交的订单内容和之前的不匹配。[简单的说,就是同一个订单号码,提交了2次,但是第二次和
第一次创建的数据不同]
2、 由于编码问题, 您传递给subject 和body的参数值是乱码,或者含有非法字符。

错误代码 SELLER_NOT_EXIST 
含义:您的账号不存在
解决办法:
更换您的email后,在您的网站支付宝接口中, 更改seller_email这个参数为您现在最新的支付宝账号就可以了。