ThinkPHP框架下整合支付宝支付功能图文教程(2)

4).服务端SDK导入

将前面所下载的SDK放入自定义的位置,在此,我习惯放在如下的路径中,…\ThinkPHP\Library\Vendor\Alipay,特别提醒一点,对于各文件类的引用会依据代码框架而不同,需要自行确认。

5).支付接口实现

在请求唤醒支付宝支付的路径中进行接口代码的编辑

代码参考-手机端支付接口

提示

  • 通过实验发现,如果在电脑端进行此功能的支付测试,会报出如下的类似错误,个人认为源于手机和PC的内置配置不同
  • 对于手机网站支付需要在手机上测试,可自行配置虚拟域名手机访问即可,不要在此问题上花费不必要的时间
  • 因为本人就是在电脑有报错,手机端访问却能完美实现,从而走了验证签名的过程到最后却并非错在签名,当然也不排除你的操作过程签名一定是没问题的哦.

无效签名报错
手机支付参考截图

代码实现如下:
  /**
   * 支付宝支付post提交页面
   */
  public function alipay(){
    if (IS_POST){
      Vendor('Alipay.aop.AopClient');
      Vendor('Alipay.aop.request.AlipayTradeWapPayRequest');
      //$out_trade_no = I('post.order_sn');
      /*
       * $out_trade_no 为自己业务逻辑中要支付的订单号
       *   可从POST数据中提取,具体安全起见可自行加密操作 此处仅举例测试数据
       * $order_amount 为要进行支付的金额 注意要用小数转换
       *   例如:3.50,10.00
       * $aliConfig 获取支付宝配置数据
       */
      $out_trade_no = '2017M'.time();
      $body = '欢迎购买商品,愿您购物愉快';
      $subject = '你好';
      $order_amount = 9.00;
      $aliConfig = C('ALI_CONFIG');
      $aop = new \AopClient();
      $aop->gatewayUrl = $aliConfig['gatewayUrl'];
      $aop->appId = $aliConfig['appId'];
      $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey'];
      $aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey'];
      $aop->apiVersion = '1.0';
      $aop->postCharset='UTF-8';
      $aop->format='json';
      $aop->signType='RSA2';
      $request = new \AlipayTradeWapPayRequest ();
      $bizContent = "{" .
        "  \"body\":\"$body.\"," .
        "  \"subject\":\"$subject\"," .
        "  \"out_trade_no\":\"$out_trade_no\"," .
        "  \"timeout_express\":\"90m\"," .
        "  \"total_amount\":$order_amount," .
        "  \"product_code\":\"QUICK_WAP_WAY\"" .
        " }";
      $request->setBizContent($bizContent);
      $request->setNotifyUrl($aliConfig['notifyUrl']);
      $request->setReturnUrl($aliConfig['returnUrl']);
      $result = $aop->pageExecute ( $request);
      echo $result;
    }else{
      echo 'sorry,非法请求失败';
    }
  }
      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/6023.html