Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
yii2_fecshop
提交
1618f38e
Y
yii2_fecshop
项目概览
OpenDocCN
/
yii2_fecshop
通知
18
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
yii2_fecshop
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1618f38e
编写于
7月 18, 2017
作者:
T
Terry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加注释和调整支付宝支付
上级
3ff89b91
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
47 addition
and
38 deletion
+47
-38
app/apphtml5/modules/Payment/controllers/alipay/StandardController.php
...modules/Payment/controllers/alipay/StandardController.php
+10
-5
app/apphtml5/modules/Payment/controllers/paypal/StandardController.php
...modules/Payment/controllers/paypal/StandardController.php
+13
-6
services/payment/Alipay.php
services/payment/Alipay.php
+24
-27
未找到文件。
app/apphtml5/modules/Payment/controllers/alipay/StandardController.php
浏览文件 @
1618f38e
...
...
@@ -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'
);
...
...
app/apphtml5/modules/Payment/controllers/paypal/StandardController.php
浏览文件 @
1618f38e
...
...
@@ -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
();
...
...
services/payment/Alipay.php
浏览文件 @
1618f38e
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录