位置:application/index/common.php
關鍵性函數文件:
```
<?php
// +----------------------------------------------------------------------
// | NewThink [ Think More,Think Better! ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2018 http://www.newthink.cc All rights reserved.
// +----------------------------------------------------------------------
// | 版權所有:山西創泰網絡科技有限公司
// +----------------------------------------------------------------------
// | Author: 子彈兄 Date:2017-09-18 Time:12:35
// +----------------------------------------------------------------------
//生成唯一訂單號
function build_order_no(){
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}
/**
* 支付寶 電腦網站支付
* @auhor hongweizhiyuan
* @param $out_trade_no 商戶訂單號
* @param $subject 訂單名稱
* @param $total_amount 訂單金額
* @param $body 商品描述
* @example alipayPagepay('201791711599526','商品標題','0.01','商品描述');
*/
function alipayPagepay($out_trade_no,$subject,$total_amount,$body)
{
//step1:獲取配置
import('AlipayTradePagePay.pagepay.service.AlipayTradeService',EXTEND_PATH,'.php');// 加載交易服務類
$config=config('alipay');
$aop=new AlipayTradeService($config);
//step2:加載表單,構造參數
import('AlipayTradePagePay.pagepay.buildermodel.AlipayTradePagePayContentBuilder',EXTEND_PATH,'.php'); // 支付寶電腦網站支付
$payRequestBuilder = new AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
//step3:創建支付
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
//輸出表單
var_dump($response);
}
/**
* 支付寶 電腦網站 交易查詢
* @param $WIDTQout_trade_no 商戶訂單號,商戶網站訂單系統中唯一訂單號(請二選一設置)
* @param $WIDTQtrade_no 支付寶交易號(請二選一設置)
*/
function alipayQuery($WIDTQout_trade_no,$WIDTQtrade_no)
{
//step1:獲取配置
import('AlipayTradePagePay.pagepay.service.AlipayTradeService',EXTEND_PATH,'.php');// 加載交易服務類
$config=config('alipay');
$aop = new AlipayTradeService($config);
//step2:加載表單,構造參數
import('AlipayTradePagePay.pagepay.buildermodel.AlipayTradeQueryContentBuilder',EXTEND_PATH,'.php'); // 支付寶電腦網站支付查詢接口
$RequestBuilder = new AlipayTradeQueryContentBuilder();
$RequestBuilder->setOutTradeNo($WIDTQout_trade_no);
$RequestBuilder->setTradeNo($WIDTQtrade_no);
/**
* alipay.trade.query (統一收單線下交易查詢)
* @param $builder 業務參數,使用buildmodel中的對象生成。
* @return $response 支付寶返回的信息
*/
$response = $aop->Query($RequestBuilder);
var_dump($response);
}
/**
* 支付寶 電腦網站 退款
* @param $out_trade_no 商戶訂單號,商戶網站訂單系統中唯一訂單號(請二選一設置)
* @param $trade_no 支付寶交易號(請二選一設置)
* @param $refund_amount 需要退款的金額,該金額不能大于訂單金額,必填
* @param $refund_reason 退款的原因說明
* @param $out_request_no 標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此參數必傳
*/
function alipayRefund($out_trade_no,$trade_no,$refund_amount,$refund_reason,$out_request_no)
{
//step1:獲取配置
import('AlipayTradePagePay.pagepay.service.AlipayTradeService',EXTEND_PATH,'.php');// 加載交易服務類
$config=config('alipay');
$aop = new AlipayTradeService($config);
//step2:加載表單,構造參數
import('AlipayTradePagePay.pagepay.buildermodel.AlipayTradeRefundContentBuilder',EXTEND_PATH,'.php'); // 支付寶電腦網站支付退款接口
$RequestBuilder=new AlipayTradeRefundContentBuilder();
$RequestBuilder->setOutTradeNo($out_trade_no);
$RequestBuilder->setTradeNo($trade_no);
$RequestBuilder->setRefundAmount($refund_amount);
$RequestBuilder->setOutRequestNo($out_request_no);
$RequestBuilder->setRefundReason($refund_reason);
/**
* alipay.trade.refund (統一收單交易退款接口)
* @param $builder 業務參數,使用buildmodel中的對象生成。
* @return $response 支付寶返回的信息
*/
$response = $aop->Refund($RequestBuilder);
var_dump($response);;
}
/**
* 支付寶 電腦網站 退款查詢
* @param $out_trade_no 商戶訂單號,商戶網站訂單系統中唯一訂單號(請二選一設置)
* @param $trade_no 支付寶交易號(請二選一設置)
* @param $out_request_no 請求退款接口時,傳入的退款請求號,如果在退款請求時未傳入,則該值為創建交易時的外部交易號,必填
*/
function alipayRefundQuery($out_trade_no,$trade_no,$out_request_no)
{
//step1:獲取配置
import('AlipayTradePagePay.pagepay.service.AlipayTradeService',EXTEND_PATH,'.php');// 加載交易服務類
$config=config('alipay');
$aop = new AlipayTradeService($config);
//step2:加載表單,構造參數
import('AlipayTradePagePay.pagepay.buildermodel.AlipayTradeFastpayRefundQueryContentBuilder',EXTEND_PATH,'.php'); // 支付寶電腦網站 統一收單交易退款查詢
$RequestBuilder=new AlipayTradeFastpayRefundQueryContentBuilder();
$RequestBuilder->setOutTradeNo($out_trade_no);
$RequestBuilder->setTradeNo($trade_no);
$RequestBuilder->setOutRequestNo($out_request_no);
/**
* 退款查詢 alipay.trade.fastpay.refund.query (統一收單交易退款查詢)
* @param $builder 業務參數,使用buildmodel中的對象生成。
* @return $response 支付寶返回的信息
*/
$response = $aop->refundQuery($RequestBuilder);
var_dump($response);
}
/**
* 支付寶 電腦網站 交易關閉
* @param $out_trade_no 商戶訂單號,商戶網站訂單系統中唯一訂單號(請二選一設置)
* @param $trade_no 支付寶交易號(請二選一設置)
*/
function alipayClose($out_trade_no,$trade_no)
{
//step1:獲取配置
import('AlipayTradePagePay.pagepay.service.AlipayTradeService',EXTEND_PATH,'.php');// 加載交易服務類
$config=C('ALIPAY_CONFIG');
$aop = new AlipayTradeService($config);
//step2:加載表單,構造參數
import('AlipayTradePagePay.pagepay.buildermodel.AlipayTradeCloseContentBuilder',EXTEND_PATH,'.php'); // 支付寶電腦網站 統一收單交易關閉接口
$RequestBuilder=new AlipayTradeCloseContentBuilder();
$RequestBuilder->setOutTradeNo($out_trade_no);
$RequestBuilder->setTradeNo($trade_no);
/**
* alipay.trade.close (統一收單交易關閉接口)
* @param $builder 業務參數,使用buildmodel中的對象生成。
* @return $response 支付寶返回的信息
*/
$response = $aop->Close($RequestBuilder);
var_dump($response);
}
```