用户是在移动端的浏览器上请求使用微信支付,我们可以把交易类型切换成 MWEB .. 就是使用微信的 H5 支付 ..
在这个支付方法类里面 .. 可以添加一个方法返回具体的交易类型 .. 方法的名字是 get_trade_type .. 里面添加一个 $is_mobile .. 它的值用一下 WordPress 提供的 wp_is_mobile 这个函数 .. 如果设备是移动设备,它的值就会是 true ..
判断一下 .. 如果是移动设备 .. 我们让这个方法 return MWEB .. 表示要使用 H5 支付 .. 不是移动设备,可以返回 NATIVE .. 就是扫码支付 ...
再去修改一下 process_payment 方法 .. 添加一个 $trade_type .. 这的值用一下 $this .. get_trade_type ..
下面再用一个 switch .. $trade_type .. 添加一种情况 .. 如果交易类型是 NATIVE .. 这个 $redirect_url 的值就是 $this .. get_return_url 返回的结果 ..
再添加一种情况 .. 如果交易类型是 MWEB .. 把这个 $redirect_url 的值设置成 $this .. mobile_web_pay 这个方法返回的地址 .. 把订单交给这个方法 ..
下面去定义一下这个方法 .. 方法的名字是 mobile_web_pay .. 接收一个 $order 参数 .. 方法里面先添加一个 $input .. 用一下 $this .. pre_pay .. 它需要 $order .. 还有交易类型 .. 这个类型应该是 MWEB ..
再添加一个 $result .. 用一下 WxPayApi 上的 unifiedOrder .. 它需要 config .. $this .. config .. 还需要 $input ..
交易类型如果是 MWEB .. 请求统一下单接口返回来的数据里面,会包含一个 mweb_url .. 把用户重定向到这个地址上就会打开支付用的中间页 .. 它会调起微信手机客户端的支付功能 ..
这个地址里面可以再设置一个返回地址 .. 添加一个 $return_url .. 用一下 $this ... get_return_url .. 把 $order 交给它 ..
下面重新再组织一下要返回的支付地址 .. $mweb_with_redirect .. 它的值是 $mweb_url ... 后面加上一个 redirect_url 参数 .. 参数的值就是支付完成以后重定向到的地址 .. 这个地址要用 urlencode 处理一下 .. 处理的就是 $return_url ..
最后再返回这个 $mweb_with_redirect ...