提交订单的时候,会使用支付方法类里的 process_payment 这个方法来处理 .. 用户如果使用支付宝支付 .. 处理支付请求用的就是 WC_Gateway_Alipay 这个类里的 process_payment 方法 .. 它应该返回一个跳转地址 .. 把用户带到支付宝支付页面去支付 ..
我们得根据支付宝的要求去生成这个支付链接,链接里需要带一些特定的数据,比如订单号,订阅金额,还需要根据带的数据生成一个签名,支付宝收到支付请求以后,会使用我们提供的应用的公钥去验证一下这个签名 .. 没有问题才会让用户进行支付 ..
先去做点准备工作 .. 首先在这个支付方法类的构造方法里面 .. 往类的实例上添加几个属性 .. 添加一个 $this .. app_id .. 它的值可以在 app_id 这个配置选项字段里获取到 .. this .. get_option .. app_id .. 复制一份 .. 还需要一个 alipay_public_key .. 它是支付宝提供的公钥 ..
再添加一个 merchant_private_key .. 它的值可以在 merchant_private_key 这个配置选项里得到 ..
这样以后需要这些数据的时候,可以直接在这个支付方法类的实例上直接获取到 ..
生成支付链接的功能可以一个类里面 .. 先把这个类包含进来 .. include once .. WC_ALIPAY 加上 /includes .. 类所在文件的名字是 class-wc-gateway-alipay-request.php ..
这里先添加一个 $alipay_request .. 新建一个实例 .. WC_Gateway_Alipay_Request .. 一会儿再去创建这个类 .. 把 $this 交给它 .. 这个 $this 就是支付方法类的实例 ..
下面再添加一个 $request_url .. 它应该是支付链接地址 .. 这个地址可以使用 $alipay_request 上的 get_request_url 这个方法返回 .. 先假设 WC_Gateway_Alipay_Request 这个类上面有这个方法 ..
把订单交给这个方法 .. 这样在这个方法里面可以根据这个订单去生成并且返回一个支付链接 ...
这样这个 process_payment 返回的数组里面 .. redirect 它的值就可以是 $request_url ..