提交 1618f38e 编写于 作者: T Terry

添加注释和调整支付宝支付

上级 3ff89b91
......@@ -20,7 +20,10 @@ class StandardController extends AppfrontController
{
public $enableCsrfValidation = false;
/**
* 在网站下单页面,选择支付宝支付方式后,
* 跳转到支付宝支付页面前准备的部分。
*/
public function actionStart()
{
//$AopSdkFile = Yii::getAlias('@fecshop/lib/alipay/AopSdk.php');
......@@ -29,8 +32,9 @@ class StandardController extends AppfrontController
return Yii::$service->payment->alipay->start();
}
// 2.Review 닒paypal횅훰빈럿쀼
/**
* 从支付宝支付成功后,跳转返回 fec-shop 的部分
*/
public function actionReview()
{
Yii::$service->payment->alipay->review();
......@@ -40,8 +44,9 @@ class StandardController extends AppfrontController
// echo Yii::$service->payment->alipay->review($trade_no,$out_trade_no);
//}
}
/**
* IPN,支付宝消息接收部分
*/
public function actionIpn()
{
\Yii::info('alipay ipn begin', 'fecshop_debug');
......
......@@ -19,19 +19,24 @@ use Yii;
class StandardController extends AppfrontController
{
public $enableCsrfValidation = true;
/**
* 1.start部分,跳转到paypal前的部分
*/
public function actionStart()
{
return $this->getBlock()->startExpress();
}
// 2.Review 从paypal确认后返回
/**
* 2.Review 从paypal确认后返回的部分
*/
public function actionReview()
{
$this->getBlock('placeorder')->getLastData();
}
/**
* IPN,paypal消息接收部分
*/
public function actionIpn()
{
\Yii::info('paypal ipn begin', 'fecshop_debug');
......@@ -47,7 +52,9 @@ class StandardController extends AppfrontController
//Yii::$service->payment->paypal->receiveIpn($post);
}
}
/**
* paypal 取消后的部分。
*/
public function actionCancel()
{
$innerTransaction = Yii::$app->db->beginTransaction();
......
......@@ -50,14 +50,18 @@ class Alipay extends Service
const TRADE_SUCCESS = 'TRADE_SUCCESS';
//交易结束,不可退款
const TRADE_FINISHED = 'TRADE_FINISHED';
/**
* 引入 支付宝支付的SDK文件。
*/
public function init()
{
parent::init();
$AopSdkFile = Yii::getAlias('@fecshop/lib/alipay/AopSdk.php');
require($AopSdkFile);
}
/**
* 初始化 $this->_AopClient
*/
protected function initParam(){
if(!$this->_AopClient){
$this->_AopClient = new \AopClient;
......@@ -69,27 +73,14 @@ class Alipay extends Service
$this->_AopClient->charset = $this->charset;
$this->_AopClient->signType = $this->signType;
$this->_AopClient->alipayrsaPublicKey= $this->alipayrsaPublicKey;
//$appName = Yii::$service->helper->getAppName();
//$_alipayRequest
//echo $this->alipayrsaPublicKey;exit;
//echo $this->rsaPrivateKey;exit;
/*
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify
$request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
$request->bizContent = "{" +
" \"primary_industry_name\":\"IT科技/IT软件与服务\"," +
" \"primary_industry_code\":\"10001/20102\"," +
" \"secondary_industry_code\":\"10001/20102\"," +
" \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +
" }";
$response= $c->execute($request);
*/
}
}
/**
* @property $out_trade_no | String ,[支付宝传递过来的]fecshop站内订单号
* @property $total_amount | String ,[支付宝传递过来的]fecshop站内订单金额(CNY)
* @property $seller_id | String ,[支付宝传递过来的]商家UID
* @property $auth_app_id | String ,[支付宝传递过来的]商家appId
* 验证订单数据是否正确,需要满足下面的条件:
* 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号
* 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额)
* 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
......@@ -141,22 +132,18 @@ class Alipay extends Service
*/
protected function actionReview(){
$this->initParam();
$trade_no = Yii::$app->request->get('trade_no');
$out_trade_no = Yii::$app->request->get('out_trade_no');
$total_amount = Yii::$app->request->get('total_amount');
$seller_id = Yii::$app->request->get('seller_id');
$auth_app_id = Yii::$app->request->get('auth_app_id');
//验证订单的合法性
if(!$this->validateReviewOrder($out_trade_no,$total_amount,$seller_id,$auth_app_id)){
return false;
}
//total_amount
//echo $this->charset;exit;
$this->_AopClient->postCharset = $this->charset;
$this->_alipayRequest = new \AlipayTradeQueryRequest ();
$this->_alipayRequest = new \AlipayTradeQueryRequest();
$bizContent = json_encode([
'out_trade_no' => $out_trade_no,
'trade_no' => $trade_no,
......@@ -182,11 +169,14 @@ class Alipay extends Service
}
/**
* 支付宝的消息接收IPN,执行的函数,接收的消息用来更改订单状态。
* 您开启log后,可以在@app/runtime/fecshop_logs
* 文件夹下执行:tail -f fecshop_debug.log , 来查看log输出。
*/
public function receiveIpn(){
Yii::info('alipay service receiveIpn():begin init param', 'fecshop_debug');
$this->initParam();
Yii::info('alipay service receiveIpn():begin rsaCheck', 'fecshop_debug');
// 验签
$checkV2Status = $this->_AopClient->rsaCheckV1($_POST, '' ,$this->signType);
Yii::info('alipay service receiveIpn():rsacheck end', 'fecshop_debug');
if($checkV2Status){
......@@ -197,6 +187,13 @@ class Alipay extends Service
$seller_id = Yii::$app->request->post('seller_id');
$auth_app_id = Yii::$app->request->post('app_id');
$trade_status = Yii::$app->request->post('trade_status');
Yii::info('alipay service receiveIpn(): [ trade_no: ]'.$trade_no, 'fecshop_debug');
Yii::info('alipay service receiveIpn(): [ out_trade_no: ]'.$out_trade_no, 'fecshop_debug');
Yii::info('alipay service receiveIpn(): [ total_amount: ]'.$total_amount, 'fecshop_debug');
Yii::info('alipay service receiveIpn(): [ seller_id: ]'.$seller_id, 'fecshop_debug');
Yii::info('alipay service receiveIpn(): [ auth_app_id: ]'.$auth_app_id, 'fecshop_debug');
Yii::info('alipay service receiveIpn(): [ trade_status: ]'.$trade_status, 'fecshop_debug');
//验证订单的合法性
if(!$this->validateReviewOrder($out_trade_no,$total_amount,$seller_id,$auth_app_id)){
Yii::info('alipay service receiveIpn(): validate order fail', 'fecshop_debug');
......@@ -221,7 +218,7 @@ class Alipay extends Service
/**
* @property $increment_id | String 订单号
* @property $sendEmail | boolean 是否发送邮件
* 订单支付成功后,需要更改订单支付状态
* 订单支付成功后,需要更改订单支付状态等一系列的处理。
*/
protected function paymentSuccess($increment_id,$trade_no,$sendEmail = true)
{
......@@ -249,7 +246,7 @@ class Alipay extends Service
/**
* 根据订单,将内容提交给支付宝。跳转到支付宝支付页面。
*
* 在下单页面点击place order按钮,跳转到支付宝的时候,执行该函数。
*/
public function start(){
// 初始化参数
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册