使用系统为magento1.9,在快捷支付的时候,正常情况下是先提交PayPal,付款之后跳转到网站然后会到一个review的页面,选择运输方式和付运费,接着就会生成订单。为了减少流程,少一步,二次开发的时候就优先把运费和运输方式传递过去,这样返回的时候就不需要再次选择确认。
但这样同样存在一个问题,就是很多时候运费是和地址关联的,不同的国家不同地址运输规则不一致导致运费不同。所以在快捷支付之前需要预先选择国家计算运费,这样根据不同的收货地址传递不同的运费到PayPal,然后返回的时候直接生成订单。
但是这样处理之后依旧会有两种场景,一是选择的国家和PayPal回传回来的收货地址一致的时候,这种情况就是正常执行,传递的运输方式有效,返回之后直接生成订单。二是选择的国家和PayPal回传的不一致,这种情况下会导致传递过去的运输方式失效,依旧需要到review页面,重新选择运费,补充之后再次计算并付款。之前一直以为第二种情况也可以生成订单,然后在发货的时候需要二次人工核验,现在才明白,是存在这样一个验证机制在,保证你的运输规则一定有效。