ThinkPHP5.0整合支付寶掃碼支付(PC端)
阿新 • • 發佈:2018-12-05
搞完了微信搞支付寶~~~
還是先下載支付寶電腦網站支付demo,目錄結構如下:
把demo資料夾放到tp5的 vendor 資料夾下面,重新命名為alipay:
配置 config.php 的支付引數,去螞蟻金服商家中心找,或者使用沙箱測試環境。注意簽名方式要和私鑰、公鑰的簽名方式相同。
<?php $config = array ( //APPID。 'app_id' => "xxx", //商戶私鑰 'merchant_private_key' => "xxx", //非同步通知地址 'notify_url' => "https://www.oyhdo.com/alipay/alinotify", //同步跳轉 'return_url' => "https://www.oyhdo.com/alipay/alinotify", //編碼格式 'charset' => "UTF-8", //簽名方式 'sign_type'=>'RSA2', //支付寶閘道器 (我使用的沙箱環境) 'gatewayUrl' => "https://openapi.alipaydev.com/gateway.do", //'gatewayUrl' => "https://openapi.alipay.com/gateway.do", //支付寶公鑰,檢視地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。 'alipay_public_key' => "xxx", );
設定 log.txt 許可權為777,以便記錄日誌。
Alipay.php控制器:
<?php namespace app\index\controller; use think\Controller; class Alipay extends Controller { public function index(){ header("Content-type:text/html;charset=utf-8"); $total_amount = input('post.total_amount'); if($total_amount){ //引入支付寶支付 require_once VENDOR_PATH.'/alipay/config.php'; require_once VENDOR_PATH.'/alipay/pagepay/service/AlipayTradeService.php'; require_once VENDOR_PATH.'/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php'; //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 $out_trade_no = input('post.out_trade_no'); //訂單名稱,必填 $subject = input('post.goods_name'); //付款金額,必填 $total_amount = $total_amount; //商品描述,可空 $body = input('post.goods_body'); //構造引數 $payRequestBuilder = new \AlipayTradePagePayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setOutTradeNo($out_trade_no); //電腦網站支付請求 $aop = new \AlipayTradeService($config); $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']); //輸出表單 var_dump($response); }else{ $out_trade_no = 'ALPAY'.date('YmdHis'); //訂單號 $goods_name = '線上支付'; //商品名稱 $goods_body = 'test'; //商品描述 $this->assign('out_trade_no',$out_trade_no); $this->assign('goods_name',$goods_name); $this->assign('goods_body',$goods_body); return view(); } } }
前臺測試頁面:
<!DOCTYPE html> <html> <head> <title>alipay_test</title> </head> <body> <form name=alipayment action="{:url('Alipay/index')}" method="post" target="_blank"> 商戶訂單號:<input type="text" name="out_trade_no" value="{$out_trade_no}" /><br/> 訂單名稱:<input type="text" name="goods_name" value="{$goods_name}"/><br/> 付款金額:<input type="text" name="total_amount" /><br/> 商品描述:<input type="text" name="goods_body" value="{$goods_body}"/><br/> <button type="submit">付 款</button> </form> </body> </html>
掃碼支付:
支付成功: