ECShop网店系统技术交流论坛's Archiver

xiaochong0302 发表于 2009-11-10 22:00

【原创】给支付宝接口增加收货地址等参数,支付页不需再次填写地址

[i=s] 本帖最后由 xiaochong0302 于 2009-11-11 09:50 编辑 [/i]

适用范围:适用于中介担保支付(2.7版本)

官方的支付宝接口里没有挂地址,收货人,邮编等参数,从而到了支付页面还要填写一遍地址,收货人,比较的麻烦

增加地址,收货人参数后就不再重复劳动了。

修改以下地方:

1.flow.php

找到
/* 插入支付日志 */
$order['log_id'] = insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER);

在其后加入:
/* 取得收货区域(国家/省份/城市等)*/
$order['buyer_region'] = get_buyer_region($new_order_id);

在flow.php文件底部加入如下函数:

/**
* 取得收货地址区域名  2009-11-10
* @param $order_id 订单号
* @return string
*/
function get_buyer_region($order_id){
    /* 取得区域名 */
    $sql = "SELECT concat(IFNULL(c.region_name, ''),IFNULL(p.region_name, ''), " .
                    " IFNULL(t.region_name, ''), IFNULL(d.region_name, '')) AS region " .
                "FROM " . $GLOBALS['ecs']->table('order_info') . " AS o " .
                    "LEFT JOIN " . $GLOBALS['ecs']->table('region') . " AS c ON o.country = c.region_id " .
                    "LEFT JOIN " . $GLOBALS['ecs']->table('region') . " AS p ON o.province = p.region_id " .
                    "LEFT JOIN " . $GLOBALS['ecs']->table('region') . " AS t ON o.city = t.region_id " .
                    "LEFT JOIN " . $GLOBALS['ecs']->table('region') . " AS d ON o.district = d.region_id " .
                "WHERE o.order_id = '$order_id'";
    return $GLOBALS['db']->getOne($sql);
}

2.includes\modules\payment\alipy.php

找到 'seller_email'      => $payment['alipay_account'],

在其后增加如下配置:
/* 收货人,地址信息*/
'receive_name'         => $order['consignee'],
'receive_address'    => $order['buyer_region'].$order['address'],
'receive_zip'    => $order['zipcode'],
ps:地址是urldecode过的

官方原版的支付宝地址如下:

[url=https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8&agent=C4335319945672464113&logistics_fee=0&logistics_payment=BUYER_PAY&logistics_type=EXPRESS&notify_url=http://127.0.0.1/ecshop/respond.php?code=alipay&out_trade_no=200911105213010&partner=2088002692045431&payment_type=1&price=16.00&quantity=1&return_url=http://127.0.0.1/ecshop/respond.php?code=alipay&seller_email=xiaochong0302@hotmail.com&service=trade_create_by_buyer&subject=2009111052130&sign=8894ebd13e248d043f90a6e0c41b6a68&sign_type=MD5]https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8&agent=C4335319945672464113&logistics_fee=0&logistics_payment=BUYER_PAY&logistics_type=EXPRESS&notify_url=http://127.0.0.1/ecshop/respond.php?code=alipay&out_trade_no=200911105213010&partner=2088002692045431&payment_type=1&price=16.00&quantity=1&return_url=http://127.0.0.1/ecshop/respond.php?code=alipay&seller_email=xiaochong0302@hotmail.com&service=trade_create_by_buyer&subject=2009111052130&sign=8894ebd13e248d043f90a6e0c41b6a68&sign_type=MD5[/url]

支付宝的地址就变成如下:

[url=https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8&agent=C4335319945672464113&logistics_fee=0&logistics_payment=BUYER_PAY&logistics_type=EXPRESS&notify_url=http://127.0.0.1/ecshop/respond.php?code=alipay&out_trade_no=200911105213010&partner=2088002692045431&payment_type=1&price=16.00&quantity=1&receive_address=]https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8&agent=C4335319945672464113&logistics_fee=0&logistics_payment=BUYER_PAY&logistics_type=EXPRESS&notify_url=http://127.0.0.1/ecshop/respond.php?code=alipay&out_trade_no=200911105213010&partner=2088002692045431&payment_type=1&price=16.00&quantity=1&receive_address=[/url]中国广东深圳南山区竹子林1050号&receive_name=侯琳琳&receive_zip=8126743&return_url=http://127.0.0.1/ecshop/respond.php?code=alipay&seller_email=xiaochong0302@hotmail.com&service=trade_create_by_buyer&subject=2009111052130&sign=8894ebd13e248d043f90a6e0c41b6a68&sign_type=MD5

演示见(需要注册才能测试购买,最好是自己网站测试)
酷瓜内衣商城:[url=http://www.koogua.com]http://www.koogua.com[/url]

137147530 发表于 2009-11-10 22:16

此贴要顶,我也去试试,不知2.62版本行不行

137147530 发表于 2009-11-10 22:50

[i=s] 本帖最后由 137147530 于 2009-11-10 22:54 编辑 [/i]

请问是不是像京东商场一样,选择用支付宝账号登录

[attach]30135[/attach],

然后转到支付宝登录界面,登录成功后自动调用 收货人信息

[attach]30137[/attach]

大图:

[attach]30136[/attach]

verve 发表于 2009-11-11 01:37

感谢楼主的分享,确实方便很多.

xiaochong0302 发表于 2009-11-11 09:36

3楼的,那个支付宝会员直接登录是要接口的,小站就不要想了,好像条件蛮高的

这个只是普通的1.5%收费的接口修改。

layen 发表于 2009-12-6 18:23

经测试,2.6.2 完全可用,谢谢楼主了!
为了增加传递手机及电话,我在 alipay.php里追加了如下代码:
        'receive_mobile'    => $order['mobile'],
            'receive_tel'    => $order['tel'],

但发现只有手机号码能正常传过去,电话号码就没有,不知何解呢?

layen 发表于 2009-12-15 10:40

用注册用户登录后购买发现错误,无法支付。但非登录用户却没有问题。不知道什么原因?

错误提示如下:

调试错误,请回到请求来源地,重新发起请求。

错误代码 ILLEGAL_SIGN
说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误。

troyhaul 发表于 2010-1-30 19:34

跟楼上同样错误,接口都是系统集成的,没有做过修改

yigegeman 发表于 2010-2-10 15:10

建议官方程序采用

coolstar 发表于 2010-3-15 13:03

这样改完之后,会员充值时就会报错了哦

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.