我的情况: 织梦dedecms系统只集成了支付宝。其他情况可能会有不同的及我国,呵呵,这里只把我遇到的问题进行分享。 在织梦dedecms系统上设置好了商家ID、密钥、支付宝邮箱之后,理论上应该是直接可以用了,但是我还是遇到了问题 。 首先就来了一个ILLEGAL_A
我的情况:
织梦dedecms系统只集成了支付宝。其他情况可能会有不同的及我国,呵呵,这里只把我遇到的问题进行
分享。
在
织梦dedecms系统上设置好了商家ID、密钥、支付宝邮箱之后,理论上应该是直接可以用了,但是我还是遇到了问题 。
首先就来了
一个ILLEGAL_ARGUMENT
错误。
经过分析post出去的
URL地址,发现商家ID、密钥、支付宝邮箱都加载
错误。经过分析应该是数据加载
错误。于是分析data目录下的sys_pay.cache.
PHP文件:
$pa
yment_
SELEct = array(0 => “tenpay”,2 => “alipay”,3 => “cbpa
yment”,4 => “yeepay”
);
$pa
yment_userid = array(0 => “
********“,1 => “”,2 => “”,3 => “”,4 => “”
);
$pa
yment_curpay = array(0 => ‘CNY’,1 => ‘CNY’,2 => ‘CNY’,3 => ‘CNY’,4 => ‘CNY’
);
$pa
yment_exp = array(0 => “0.01″,1 => “0.00″,2 => “0.01″,3 => “0.01″,4 => “0.00″
);
$pa
yment_email = array(0 => “[url=mailto:
*******@a.com%22,1]
*******@
*****.com“,1[/url] => “[url=mailto:webmaster@admin.com%22,2]webmaster@admin.com”,2[/url] => “[url=mailto:webmaster@admin.com%22,3]webmaster@admin.com”,3[/url] => “[url=mailto:webmaster@admin.com%22,4]webmaster@admin.com”,4[/url] => “[url=mailto:“webmaster@admin.com]webmaster@admin.com[/url]“
);
如红色字所示,这是应该传递的三个直接跟支付宝相关的数据,而他们
在数组中的位置为0,也就是array
[0]位置。
$partner = $pa
yment_userid[2];
$seller_email = $pa
yment_email[2];//卖家邮箱
$_input_charset = $cfg_soft_lang; //字符编码格式 目前
支持 GBK 或 utf-8
$sign_type = “MD5″; //加密方式 系统
默认(不要
修改)
$notify_url = $cfg_basehost.”/member/paycenter/alipay/notify_ur
l.PHP”;// 异步返回地址 需要填写完整的路径
$return_url = $cfg_basehost.”/member/paycenter/alipay/return_ur
l.PHP”; //同步返回地址 需要填写完整大额路径
$show_url = “” //你网站商品的展示地址,可以为空
?>
如上红色字所示,而他的位置为
array[2],所以加载数据必定
错误。(我这是只有支付宝接口的情况,其他情况照此分析即可),将上面的2改为0,数据加载
问题解决。
但是,支付宝接口还是不成功。这次
提示的
错误为:ILLEGAL_LOGISTICS_FORMAT
查支付宝文档,这是由于物流相关问题造成。
“
service” => “
Trade_create_by_buyer“,//交易类型,必填实物交易=
Trade_create_by_buyer(需要填写物流)
“partner” => $partner, //合作商户号
“return_url” => $return_url, //同步返回
“notify_url” => $notify_url, //异步返回
“_input_charset” => $_input_charset, //字符集,
默认为GBK
“sub
ject” => $ptype,
//商品
名称,必填
“body” => $pname,
//商品描述,必填
“out_
Trade_no” => $buyid,
//商品外部交易号,必填,每次测试都须
修改
“logistics_fee” => 0.00,
//物流配送费用
“logistics_pa
yment”=>’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′。
logistics_fee => 0.00 应该被
PHP认为是个空值了。
开始的时候logistics_fee
默认是没有的,后来可能弄上去了。
谢谢楼主提出该问题。