Skip to content

Commit eea16dd

Browse files
支付调整
1 parent 8faefac commit eea16dd

File tree

24 files changed

+317
-520
lines changed

24 files changed

+317
-520
lines changed

app/appfront/modules/Payment/block/paypal/express/Placeorder.php

+14-14
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ public function getLastData()
7171
//echo 22;
7272
if ($genarateStatus) {
7373
// 得到当前的订单信息
74-
$doExpressCheckoutReturn = $this->doExpressCheckoutPayment($token);
75-
//echo $doExpressCheckoutReturn;exit;
74+
$doCheckoutReturn = $this->doCheckoutPayment($token);
75+
//echo $doCheckoutReturn;exit;
7676
//echo 333;
77-
if ($doExpressCheckoutReturn) {
77+
if ($doCheckoutReturn) {
7878
$increment_id = Yii::$service->order->getSessionIncrementId();
7979
$innerTransaction = Yii::$app->db->beginTransaction();
8080
try {
@@ -83,10 +83,10 @@ public function getLastData()
8383
$innerTransaction->rollBack();
8484
return false;
8585
}
86-
$ExpressOrderPayment = Yii::$service->payment->paypal->updateExpressOrderPayment($doExpressCheckoutReturn,$token);
86+
$orderPayment = Yii::$service->payment->paypal->updateOrderPayment($doCheckoutReturn,$token);
8787
// 如果支付成功,并把信息更新到了订单数据中,则进行下面的操作。
8888
//echo 444;
89-
if ($ExpressOrderPayment) {
89+
if ($orderPayment) {
9090
// 查看订单是否被多次支付,如果被多次支付,则回滚
9191

9292
// 支付成功后,在清空购物车数据。而不是在生成订单的时候。
@@ -118,7 +118,7 @@ public function getLastData()
118118
}
119119
// 如果订单支付过程中失败,将订单取消掉
120120
/* 2017-09-12修改,认为没有必要取消订单,如果取消掉,在支付页面就无法继续下单,因此注释掉下面的代码
121-
if (!$doExpressCheckoutReturn || !$ExpressOrderPayment) {
121+
if (!$doCheckoutReturn || !$orderPayment) {
122122
$innerTransaction = Yii::$app->db->beginTransaction();
123123
try {
124124
if(Yii::$service->order->cancel()){
@@ -146,19 +146,19 @@ public function getLastData()
146146
* @property $token | String
147147
* 通过paypal的api接口,进行支付下单
148148
*/
149-
public function doExpressCheckoutPayment($token)
149+
public function doCheckoutPayment($token)
150150
{
151151
$methodName_ = 'DoExpressCheckoutPayment';
152-
$nvpStr_ = Yii::$service->payment->paypal->getExpressCheckoutPaymentNvpStr($token);
152+
$nvpStr_ = Yii::$service->payment->paypal->getCheckoutPaymentNvpStr($token);
153153
//echo $nvpStr_;exit;
154-
$DoExpressCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
155-
//var_dump($DoExpressCheckoutReturn);
154+
$doCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
155+
//var_dump($doCheckoutReturn);
156156
//exit;
157-
if (strstr(strtolower($DoExpressCheckoutReturn['ACK']), 'success')) {
158-
return $DoExpressCheckoutReturn;
157+
if (strstr(strtolower($doCheckoutReturn['ACK']), 'success')) {
158+
return $doCheckoutReturn;
159159
} else {
160-
if ($DoExpressCheckoutReturn['ACK'] == 'Failure') {
161-
$message = $DoExpressCheckoutReturn['L_LONGMESSAGE0'];
160+
if ($doCheckoutReturn['ACK'] == 'Failure') {
161+
$message = $doCheckoutReturn['L_LONGMESSAGE0'];
162162
// 添加报错信息。
163163
//Message::error($message);
164164
Yii::$service->helper->errors->add($message);

app/appfront/modules/Payment/block/paypal/express/Review.php

+2-43
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,6 @@
1717
*/
1818
class Review
1919
{
20-
///public $_paypal_email;
21-
//public $_payer_id;
22-
//public $_payer_status;
23-
//public $_paypal_first_name;
24-
//public $_paypal_last_name;
25-
//public $_paypal_country_code;
26-
//public $_ship_to_name;
27-
//public $_ship_to_street;
28-
//public $_ship_to_street2;
29-
//public $_ship_to_city;
30-
//public $_ship_to_state;
31-
//public $_ship_to_zip;
32-
//public $_ship_to_country_code;
33-
//public $_ship_to_country_name;
34-
//public $_address_status;
35-
//public $_currency_code;
36-
37-
//public $_shipping_method;
38-
39-
//public $_symbols;
40-
41-
//protected $_address;
4220
protected $_payment_method;
4321
protected $_shipping_method;
4422
protected $_address_view_file;
@@ -424,8 +402,8 @@ public function getShippingArr($weight, $current_shipping_method, $country, $reg
424402

425403
public function expressReview()
426404
{
427-
$getToken = Yii::$service->payment->paypal->getExpressToken();
428-
$getPayerID = Yii::$service->payment->paypal->getExpressPayerID();
405+
$getToken = Yii::$service->payment->paypal->getToken();
406+
$getPayerID = Yii::$service->payment->paypal->getPayerID();
429407
if (!$getToken) {
430408
Yii::$service->page->message->AddError('paypal express token is empty');
431409

@@ -451,25 +429,6 @@ public function expressReview()
451429
*/
452430
public function setValue($getExpressCheckoutReturn)
453431
{
454-
//var_dump($getExpressCheckoutReturn);
455-
/*
456-
$this->_paypal_email = $GetExpressCheckoutReturn['EMAIL'];
457-
$this->_payer_id = $GetExpressCheckoutReturn['PAYERID'];
458-
$this->_payer_status = $GetExpressCheckoutReturn['PAYERSTATUS'];
459-
$this->_paypal_first_name = $GetExpressCheckoutReturn['FIRSTNAME'];
460-
$this->_paypal_last_name = $GetExpressCheckoutReturn['LASTNAME'];
461-
$this->_paypal_country_code = $GetExpressCheckoutReturn['COUNTRYCODE'];
462-
//$this->_ship_to_name = $GetExpressCheckoutReturn['SHIPTONAME'];
463-
$this->_ship_to_street = $GetExpressCheckoutReturn['SHIPTOSTREET'];
464-
$this->_ship_to_street2 = $GetExpressCheckoutReturn['SHIPTOSTREET2'];
465-
$this->_ship_to_city = $GetExpressCheckoutReturn['SHIPTOCITY'];
466-
$this->_ship_to_state = $GetExpressCheckoutReturn['SHIPTOSTATE'];
467-
$this->_ship_to_zip = $GetExpressCheckoutReturn['SHIPTOZIP'];
468-
$this->_ship_to_country_code = $GetExpressCheckoutReturn['SHIPTOCOUNTRYCODE'];
469-
$this->_ship_to_country_name = $GetExpressCheckoutReturn['SHIPTOCOUNTRYNAME'];
470-
$this->_address_status = $GetExpressCheckoutReturn['ADDRESSSTATUS'];
471-
$this->_currency_code = $GetExpressCheckoutReturn['CURRENCYCODE'];
472-
*/
473432
if ($getExpressCheckoutReturn['FIRSTNAME']) {
474433
$this->_address['first_name'] = $getExpressCheckoutReturn['FIRSTNAME'];
475434
}

app/appfront/modules/Payment/block/paypal/express/Start.php

+9-9
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Start
1919
{
2020

2121

22-
public function startExpress()
22+
public function startPayment()
2323
{
2424
$checkStatus = $this->checkStockQty();
2525
if(!$checkStatus){
@@ -28,22 +28,22 @@ public function startExpress()
2828
$methodName_ = 'SetExpressCheckout';
2929
$nvpStr_ = Yii::$service->payment->paypal->getExpressTokenNvpStr();
3030
//echo $nvpStr_;exit;
31-
$SetExpressCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
32-
//var_dump($SetExpressCheckoutReturn);
33-
if (strtolower($SetExpressCheckoutReturn['ACK']) == 'success') {
34-
$token = $SetExpressCheckoutReturn['TOKEN'];
31+
$checkoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
32+
//var_dump($checkoutReturn);
33+
if (strtolower($checkoutReturn['ACK']) == 'success') {
34+
$token = $checkoutReturn['TOKEN'];
3535
# 生成订单,订单中只有id,increment_id,token 三个字段有值。
3636
if($token){
3737
if(!Yii::$service->order->generatePPExpressOrder($token)){
3838
return false;
3939
}
40-
$redirectUrl = Yii::$service->payment->paypal->getSetExpressCheckoutUrl($token);
40+
$redirectUrl = Yii::$service->payment->paypal->getExpressCheckoutUrl($token);
4141
return Yii::$service->url->redirect($redirectUrl);
4242
}
43-
} elseif (strtolower($SetExpressCheckoutReturn['ACK']) == 'failure') {
44-
echo $SetExpressCheckoutReturn['L_LONGMESSAGE0'];
43+
} elseif (strtolower($checkoutReturn['ACK']) == 'failure') {
44+
echo $checkoutReturn['L_LONGMESSAGE0'];
4545
} else {
46-
var_dump($SetExpressCheckoutReturn);
46+
var_dump($checkoutReturn);
4747
}
4848
}
4949
// 检查购物车中产品的库存。此步只是初步检查,在快捷支付完成返回网站的时候,生成订单的时候,还要进一步检查产品库存,

app/appfront/modules/Payment/block/paypal/standard/Placeorder.php

+18-20
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,16 @@ public function getLastData()
3939
Yii::$service->helper->errors->add('token can not empty');
4040
return false;
4141
}
42-
43-
//echo '33'.'<br>';
44-
echo $token.'<br>';
42+
//echo $token.'<br>';
4543
// 得到当前的订单信息
46-
$doExpressCheckoutReturn = $this->doExpressCheckoutPayment($token);
47-
if ($doExpressCheckoutReturn) {
48-
//var_dump($doExpressCheckoutReturn);
49-
$ExpressOrderPayment = Yii::$service->payment->paypal->updateExpressOrderPayment($doExpressCheckoutReturn,$token);
44+
$doCheckoutReturn = $this->doCheckoutPayment($token);
45+
if ($doCheckoutReturn) {
46+
//var_dump($doCheckoutReturn);
47+
$orderPayment = Yii::$service->payment->paypal->updateOrderPayment($doCheckoutReturn,$token);
5048
// 如果支付成功,并把信息更新到了订单数据中,则进行下面的操作。
5149
//echo 444;
52-
//var_dump($ExpressOrderPayment);
53-
if ($ExpressOrderPayment) {
50+
//var_dump($orderPayment);
51+
if ($orderPayment) {
5452
//echo 55;
5553
// 支付成功后,在清空购物车数据。而不是在生成订单的时候。
5654
Yii::$service->cart->clearCartProductAndCoupon();
@@ -77,7 +75,7 @@ public function getLastData()
7775
Yii::$service->url->redirectByUrlKey('checkout/onepage');
7876
}
7977
// 如果订单支付过程中失败,将订单取消掉
80-
if (!$doExpressCheckoutReturn || !$ExpressOrderPayment) {
78+
if (!$doCheckoutReturn || !$orderPayment) {
8179
$innerTransaction = Yii::$app->db->beginTransaction();
8280
try {
8381
if(Yii::$service->order->cancel()){
@@ -97,21 +95,21 @@ public function getLastData()
9795
* @property $token | String
9896
* 通过paypal的api接口,进行支付下单
9997
*/
100-
public function doExpressCheckoutPayment($token)
98+
public function doCheckoutPayment($token)
10199
{
102100
$methodName_ = 'DoExpressCheckoutPayment';
103-
$nvpStr_ = Yii::$service->payment->paypal->getExpressCheckoutPaymentNvpStr($token);
101+
$nvpStr_ = Yii::$service->payment->paypal->getCheckoutPaymentNvpStr($token);
104102
//echo '<br/>nvpStr_:<br/>"'.$nvpStr_.'<br/><br/>';
105-
$DoExpressCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
106-
//echo '<br/>DoExpressCheckoutReturn <br/><br/>';
107-
//var_dump($DoExpressCheckoutReturn);
108-
//echo '<br/>DoExpressCheckoutReturn <br/><br/>';
103+
$doCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
104+
//echo '<br/>doCheckoutReturn <br/><br/>';
105+
//var_dump($doCheckoutReturn);
106+
//echo '<br/>doCheckoutReturn <br/><br/>';
109107
//exit;
110-
if (strstr(strtolower($DoExpressCheckoutReturn['ACK']), 'success')) {
111-
return $DoExpressCheckoutReturn;
108+
if (strstr(strtolower($doCheckoutReturn['ACK']), 'success')) {
109+
return $doCheckoutReturn;
112110
} else {
113-
if ($DoExpressCheckoutReturn['ACK'] == 'Failure') {
114-
$message = $DoExpressCheckoutReturn['L_LONGMESSAGE0'];
111+
if ($doCheckoutReturn['ACK'] == 'Failure') {
112+
$message = $doCheckoutReturn['L_LONGMESSAGE0'];
115113
// 添加报错信息。
116114
//Message::error($message);
117115
Yii::$service->helper->errors->add($message);

app/appfront/modules/Payment/block/paypal/standard/Start.php

+9-128
Original file line numberDiff line numberDiff line change
@@ -18,145 +18,26 @@
1818
class Start
1919
{
2020

21-
public function startExpress()
21+
public function startPayment()
2222
{
2323
$methodName_ = 'SetExpressCheckout';
2424
$nvpStr_ = Yii::$service->payment->paypal->getStandardTokenNvpStr();
2525
//echo $nvpStr_;exit;
2626
// 通过接口,得到token信息
27-
$SetExpressCheckoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
28-
//var_dump($SetExpressCheckoutReturn);
29-
if (strtolower($SetExpressCheckoutReturn['ACK']) == 'success') {
30-
$token = $SetExpressCheckoutReturn['TOKEN'];
27+
$checkoutReturn = Yii::$service->payment->paypal->PPHttpPost5($methodName_, $nvpStr_);
28+
//var_dump($checkoutReturn);exit;
29+
if (strtolower($checkoutReturn['ACK']) == 'success') {
30+
$token = $checkoutReturn['TOKEN'];
3131
$increment_id = Yii::$service->order->getSessionIncrementId();
3232
# 将token写入到订单中
3333
Yii::$service->order->updateTokenByIncrementId($increment_id,$token);
34-
$redirectUrl = Yii::$service->payment->paypal->getSetStandardCheckoutUrl($token);
34+
$redirectUrl = Yii::$service->payment->paypal->getStandardCheckoutUrl($token);
3535
Yii::$service->url->redirect($redirectUrl);
3636
return;
37-
} elseif (strtolower($SetExpressCheckoutReturn['ACK']) == 'failure') {
38-
echo $SetExpressCheckoutReturn['L_LONGMESSAGE0'];
37+
} elseif (strtolower($checkoutReturn['ACK']) == 'failure') {
38+
echo $checkoutReturn['L_LONGMESSAGE0'];
3939
} else {
40-
var_dump($SetExpressCheckoutReturn);
40+
var_dump($checkoutReturn);
4141
}
4242
}
43-
44-
/*
45-
public function getLastData()
46-
{
47-
$loaderImg = Yii::$service->image->getImgUrl('images/loader.gif', 'appfront');
48-
$paypalLogoImg = Yii::$service->image->getImgUrl('custom/logo.png', 'appfront');
49-
50-
$increment_id = Yii::$service->order->getSessionIncrementId();
51-
if ($increment_id) {
52-
$order = Yii::$service->order->getInfoByIncrementId($increment_id);
53-
if ($order) {
54-
//var_dump($order);exit;
55-
Yii::$service->payment->setPaymentMethod($order['payment_method']);
56-
$success_redirect_url = Yii::$service->payment->getStandardSuccessRedirectUrl();
57-
$cancel_url = Yii::$service->payment->getStandardCancelUrl();
58-
$ipn_url = Yii::$service->payment->getStandardIpnUrl();
59-
$store_name = Yii::$service->store->currentStore;
60-
61-
$payment_action = 'sale';
62-
$cmd = '_cart';
63-
$upload = 1;
64-
$tax = 0.00;
65-
$tax_cart = 0.00;
66-
67-
$payment_url = Yii::$service->payment->getStandardPaymentUrl();
68-
$account = Yii::$service->payment->getStandardAccount();
69-
70-
return [
71-
'loader_img' => $loaderImg,
72-
'paypal_logo_img' => $paypalLogoImg,
73-
'order' => $order,
74-
'success_redirect_url' => $success_redirect_url,
75-
'cancel_url' => $cancel_url,
76-
'ipn_url' => $ipn_url,
77-
'store_name' => $store_name,
78-
'payment_action' => $payment_action,
79-
'cmd' => $cmd,
80-
'upload' => $upload,
81-
'tax' => $tax,
82-
'tax_cart' => $tax_cart,
83-
'payment_url' => $payment_url,
84-
'account' => $account,
85-
'product_items_and_shipping' => $this->getProductItemsAndShipping($order),
86-
'address_html' => $this->getAddressHtml($order),
87-
];
88-
}
89-
}
90-
}
91-
92-
public function getAddressHtml($order)
93-
{
94-
$stateCode = $order['customer_address_state'];
95-
$countryCode = $order['customer_address_country'];
96-
$country = Yii::$service->helper->country->getCountryNameByKey($countryCode);
97-
$state = Yii::$service->helper->country->getStateByContryCode($countryCode, $stateCode);
98-
$str = '
99-
<input id="city" name="city" value="'.$order['customer_address_city'].'" type="hidden"/>
100-
<input id="country" name="country" value="'.$country.'" type="hidden"/>
101-
<input id="email" name="email" value="'.$order['customer_email'].'" type="hidden"/>
102-
<input id="first_name" name="first_name" value="'.$order['customer_firstname'].'" type="hidden"/>
103-
<input id="last_name" name="last_name" value="'.$order['customer_lastname'].'" type="hidden"/>
104-
<input id="zip" name="zip" value="'.$order['customer_address_zip'].'" type="hidden"/>
105-
<input id="state" name="state" value="'.$state.'" type="hidden"/>
106-
<input id="address1" name="address1" value="'.$order['customer_address_street1'].'" type="hidden"/>
107-
<input id="address2" name="address2" value="'.$order['customer_address_street2'].'" type="hidden"/>
108-
<input id="address_override" name="address_override" value="0" type="hidden"/>
109-
';
110-
111-
return $str;
112-
}
113-
114-
public function getProductItemsAndShipping($order)
115-
{
116-
$items = $order['items'];
117-
$str = '';
118-
$i = 1;
119-
foreach ($items as $item) {
120-
$sku = isset($item['sku']) ? $item['sku'] : '';
121-
$name = isset($item['name']) ? $item['name'] : '';
122-
$qty = isset($item['qty']) ? $item['qty'] : '';
123-
$price = isset($item['price']) ? str_replace(',', '', number_format($item['price'], 2)) : number_format($item['price'], 0);
124-
125-
$custom_option_info = isset($item['custom_option_info']) ? $item['custom_option_info'] : '';
126-
if ($sku && $qty && $price) {
127-
$str .= '
128-
<input id="item_number_'.$i.'" name="item_number_'.$i.'" value="'.$sku.'" type="hidden"/>
129-
<input id="item_name_'.$i.'" name="item_name_'.$i.'" value="'.$name.'" type="hidden"/>
130-
<input id="quantity_'.$i.'" name="quantity_'.$i.'" value="'.$qty.'" type="hidden"/>
131-
<input id="amount_'.$i.'" name="amount_'.$i.'" value="'.$price.'" type="hidden"/>
132-
133-
';
134-
if (is_array($custom_option_info) && !empty($custom_option_info)) {
135-
$j = 0;
136-
foreach ($custom_option_info as $co_label=>$co_value) {
137-
$str .= '
138-
<input id="on'.$j.'_'.$i.'" name="on'.$j.'_'.$i.'" type="hidden" value="'.$co_label.'" />
139-
<input id="os'.$j.'_'.$i.'" name="os'.$j.'_'.$i.'" type="hidden" value="'.$co_value.'" />
140-
';
141-
$j++;
142-
}
143-
}
144-
}
145-
$i++;
146-
}
147-
$shipping_total = $order['shipping_total'];
148-
$shipping_total = str_replace(',', '', number_format($shipping_total, 2));
149-
150-
$shipping_method = $order['shipping_method'];
151-
$shipping_label = Yii::$service->shipping->getShippingLabelByMethod($shipping_method);
152-
$str .= '
153-
<input id="item_number_'.$i.'" name="item_number_'.$i.'" value="'.$shipping_label.'" type="hidden"/>
154-
<input id="item_name_'.$i.'" name="item_name_'.$i.'" value="'.$shipping_method.'" type="hidden"/>
155-
<input id="quantity_'.$i.'" name="quantity_'.$i.'" value="1" type="hidden"/>
156-
<input id="amount_'.$i.'" name="amount_'.$i.'" value="'.$shipping_total.'" type="hidden"/>
157-
';
158-
159-
return $str;
160-
}
161-
*/
16243
}

0 commit comments

Comments
 (0)