我已将PayPal付款解决方案集成到自定义Web电子商务应用程序中。
自18年8月下旬以来,此功能一直按预期运行。
因此,在我的控制器中,用户点击/单击“立即付款”并选择了PayPal支付网关后,该代码即可获取当前用户的购物车内容并像这样发送:
$cartrow = $shop->getCartContent(); //Get the cart content
$query = array();
$query['notify_url'] = SITEURL.'/gateways/paypal/ipn.php';
$query['cmd'] = '_cart';
$query['upload'] = '1';
$query['business'] = 'BUSINESS EMAIL HERE';
$query['image_url'] = SITEURL.'/'.THEME.'/assets/images/logo-paypal-head.png';
$query['return'] = SITEURL.'/order/payment-complete/';
$query['cancel_return'] = SITEURL.'/order/payment-failed/';
$query['currency_code'] = 'EUR';
$query['custom'] = 'STS_'.$user->usr_sesid; //Used for IPN identification
$query['rm'] = '2';
$query['shipping_1'] = $shipping_cost;
$x = 0;
foreach ($cartrow as $crow):
$x++;
$query['item_name_'.$x] = cleanItOut($crow->pr_title);
$query['item_number_'.$x] = $crow->pr_id;
$query['quantity_'.$x] = $crow->total;
$query['amount_'.$x] = $crow->price / $crow->total;
endforeach;
$query_string = http_build_query($query);
$pp_url = 'https://www.paypal.com/cgi-bin/webscr?' . $query_string;
$json['status'] = 'success';
$json['pp_url'] = $pp_url;
print json_encode($json);
请注意:
$query['shipping_1'] = $shipping_cost;
这是在应用程序中之前计算的统一费率。
欧盟国家/地区:6欧元
对于欧盟和美国以外的欧洲国家/地区:9欧元
世界其他地区:14欧元
自9月以来的问题是,贝宝(PayPal)的购买明细中的第一个产品价格等于产品价格+运费。总金额是正确的。
因此,如果购物车是这样的:
产品#1:10欧元
产品#2:15欧元
总计:25 EUR
运送:6欧元
总计:31 EUR
向购买者的购买详细信息最终在PayPal中变为:
产品1:16欧元
产品#2:15欧元
金额:25欧元
运费:6欧元
购买总额:31 EUR
当尝试将shipping_1
设置为shipping
时,在PayPal Checkout中,运送设置为零。
我得到shipping_1
已连接到item_name_1
,item_number_1
,quantity_1
和amount_1
值,但是在PayPal集成的“购物车上载”选项中不能使用运输变量。
See PayPal shipping in Individual items variables of documentation.
另外根据PayPal documentation of shopping cart with Cart Upload option shipping_1
是将送货发送到PayPal的正确方法,但是您必须将item_name_1
和amount_1
用作其中所有内容的一项购物车。
我最后尝试做的事情是对购物车中的所有物品进行计数,并将shipping_1
变量移动到foreach循环中,如下所示:
foreach ($cartrow as $crow):
$x++;
$query['shipping_x'] = $shipping_cost / $crow->total_products;
$query['item_name_'.$x] = cleanItOut($crow->pr_title);
$query['item_number_'.$x] = $crow->pr_id;
$query['quantity_'.$x] = $crow->total;
$query['amount_'.$x] = $crow->price / $crow->total;
endforeach;
通过这种方式,运输在产品之间平均分配,但仍然不是最佳解决方案,因为用户/买方不会看到之前在其购物车中显示的价格。
我想念什么吗?
有没有记载的变量或我不知道的“ hack”?
亲切的问候。