【原创】给支付宝接口增加收货地址等参数,支付页不需再次填写地址
[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¬ify_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¬ify_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¬ify_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¬ify_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] 此贴要顶,我也去试试,不知2.62版本行不行 [i=s] 本帖最后由 137147530 于 2009-11-10 22:54 编辑 [/i]
请问是不是像京东商场一样,选择用支付宝账号登录
[attach]30135[/attach],
然后转到支付宝登录界面,登录成功后自动调用 收货人信息
[attach]30137[/attach]
大图:
[attach]30136[/attach] 感谢楼主的分享,确实方便很多. 3楼的,那个支付宝会员直接登录是要接口的,小站就不要想了,好像条件蛮高的
这个只是普通的1.5%收费的接口修改。 经测试,2.6.2 完全可用,谢谢楼主了!
为了增加传递手机及电话,我在 alipay.php里追加了如下代码:
'receive_mobile' => $order['mobile'],
'receive_tel' => $order['tel'],
但发现只有手机号码能正常传过去,电话号码就没有,不知何解呢? 用注册用户登录后购买发现错误,无法支付。但非登录用户却没有问题。不知道什么原因?
错误提示如下:
调试错误,请回到请求来源地,重新发起请求。
错误代码 ILLEGAL_SIGN
说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误。 跟楼上同样错误,接口都是系统集成的,没有做过修改 建议官方程序采用 这样改完之后,会员充值时就会报错了哦
页:
[1]
