用户登录

在结算页面上,用户选择使用微信支付 .. 按了支付按钮以后,会把用户带到这个感谢页面 .. 在这个页面上可以显示一个支付用的二维码 .. 生成这个支付二维码需要先去请求微信支付的统一下单接口 .. 请求这个接口需要先准备一些数据 ..

先打开支付方法类 .. 在类的构造方法里面,导入一个 php 文件 .. 位置是 WC_WXPAY .. includes .. wxpay-sdk .. lib 下面的 WxPay.Api.php ..

再找到之前我们添加的这个 native_pay 方法 .. 这个方法会影响刚才看到的感谢页面上显示的内容 ..

在这个方法里,添加一个 $input .. 使用微信支付 SDK 的统一下单接口需要提供一个配置,还有订单相关的数据 .. 这个订单相关的数据可以再单独去创建一个方法生成 .. 用一下 $this .. pre_pay .. 把订单交给它 .. 还需要一个交易类型 .. 扫码支付的交易类型是 NATIVE .

在类里面再去添加需要的这个方法 .. 方法的名字叫 pre_pay .. 接收两个参数 .. 一个是 $order .. 还有一个 $trade_type ..

方法里面,添加一个 $out_trade_no .. 它的值是外部交易号,一般它的值就可以是我们的订单号 .. 不过这里可以做点特别的处理 .. 判断一下 $this ..sandbox ,如果插件启动了沙箱功能 .. 这个外部交易号里面可以加上一个 sandbox 前缀 .. 后面再加上 $order .. get_id ..它会返回订单号 .. 没启用的话,就让外部交易号等于订单号 ..

然后是 $body .. 它的值是交易的标题 .. 先用 get_bloginfo .. 得到网站的 name ,就是网站的名字 .. 后面再加上一个冒号,井号 .. 再加上 $out_trade_no ..

再添加一个 $total_fee ,它的值可以是需要支付的金额 .. 这里也可以做点特别处理 .. 判断一下插件是不是启用了 sandbox .. 如果是的话,可以把订单金额等于 1,就是 1 分钱 .. 没启用的话,订单金额就是 $order .. get_total .. 再乘以 100 .. 因为微信支付的金额单位是 分 ..

下面是一个 $notify_url ,它的值是接收微信支付通知用的地址 .. 这个地址接口在后面我们再去创建一个 .. 先随便设置一个地址 .. https://w-store.ninghao.net

再去准备一下统一下单接口需要的数据对象 .. 添加一个 $input .. 新建一个 WxPayUnifiedOrder .. 先用一下 $input 上的 SetTrade_type 设置一下交易类型 .. 类型是 $trade_type ..

用一下 $input .. SetBody .. 订单的内容 .. 它的值是上面定义好的这个 $body .. 可以再用一下 $input .. SetAttach .. 添加一个附加数据 .. 也可以是 $body ..

再用 $input .. SetOut_trade_no .. 设置一下外部交易号 .. 它应该是 $out_trade_no ..

下面再用 $input .. SetTotal_fee .. 把订单金额告诉它 .. $input .. SetNotify_url .. 支付通知的地址 .. 是上面定义的 $notify_url ..

还需要 Set 一下 Product_id .. 它的值可以是 $out_trade_no ..

最后再 return 一下这个 $input 对象 ..

在 native_pay 这个方法里面 .. 可以把得到的这个 $input 输出到日志里检查一下 .. WC_Gateway_Wxpay .. log .. 输出 $input .. 级别是 debug .. 第三个参数设置成 true ..

刷新一下这个使用微信支付支付方法的订单感谢页面 .. 再去看一下日志 .. 在 uploads .. wc-logs .. wxpay .. 这里显示的就是一个 input 对象 .. 它是请求统一下单接口的时候需要的数据 ..

微信支付统一下单:准备数据《 电商网站案例:微信扫码支付 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点