Browse Source

完善支付框架, 优化PayPal显示和处理逻辑

兔姬桑 4 years ago
parent
commit
19b36d5975

+ 1 - 0
app/Http/Controllers/Gateway/BitpayX.php

@@ -46,6 +46,7 @@ class BitpayX extends AbstractPayment
 
 		if($result['status'] === 200 || $result['status'] === 201){
 			$result['payment_url'] .= '&lang=zh';
+			Payment::whereId($payment->id)->update(['url' => $result['payment_url']]);
 
 			return Response::json(['status' => 'success', 'url' => $result['payment_url'] .= '&lang=zh', 'message' => '创建订单成功!']);
 		}

+ 1 - 0
app/Http/Controllers/Gateway/CodePay.php

@@ -48,6 +48,7 @@ class CodePay extends AbstractPayment
 		}
 		$query = $urls.'&sign='.md5($sign.parent::$systemConfig['codepay_key']); //创建订单所需的参数
 		$url = parent::$systemConfig['codepay_url'].$query; //支付页面
+		Payment::whereId($payment->id)->update(['url' => $url]);
 
 		return Response::json(['status' => 'success', 'url' => $url, 'message' => '创建订单成功!']);
 	}

+ 1 - 3
app/Http/Controllers/Gateway/F2Fpay.php

@@ -67,9 +67,7 @@ class F2Fpay extends AbstractPayment
 			exit;
 		}
 
-		$payment->qr_code = 'http://qr.topscan.com/api.php?text='.$result['qr_code'].'&bg=ffffff&fg=000000&pt=1c73bd&m=10&w=400&el=1&inpt=1eabfc&logo=https://t.alipayobjects.com/tfscom/T1Z5XfXdxmXXXXXXXX.png';
-		//后备:https://cli.im/api/qrcode/code?text=".$result['qr_code']."&mhid=5EfGCwztyckhMHcmI9ZcOKs
-		$payment->save();
+		Payment::whereId($payment->id)->update(['qr_code' => 'http://qr.topscan.com/api.php?text='.$result['qr_code'].'&bg=ffffff&fg=000000&pt=1c73bd&m=10&w=400&el=1&inpt=1eabfc&logo=https://t.alipayobjects.com/tfscom/T1Z5XfXdxmXXXXXXXX.png']);//后备:https://cli.im/api/qrcode/code?text=".$result['qr_code']."&mhid=5EfGCwztyckhMHcmI9ZcOKs
 
 		return Response::json(['status' => 'success', 'data' => $payment->sn, 'message' => '创建订单成功!']);
 	}

+ 0 - 1
app/Http/Controllers/Gateway/Local.php

@@ -13,7 +13,6 @@ use Response;
 
 class Local extends AbstractPayment
 {
-
 	public function purchase(Request $request)
 	{
 		$amount = $request->input('amount');

+ 2 - 6
app/Http/Controllers/Gateway/PayJs.php

@@ -41,14 +41,12 @@ class PayJs extends AbstractPayment
 		if(!$result->return_code){
 			Log::error('PayJs '.$result->return_msg);
 		}
-		$payment->qr_code = $result->qrcode;// 获取收款二维码内容
-		$payment->save();
+		// 获取收款二维码内容
+		Payment::whereId($payment->id)->update(['qr_code' => $result->qrcode]);
 
 		return Response::json(['status' => 'success', 'data' => $payment->sn, 'message' => '创建订单成功!']);
 	}
 
-
-
 	public function notify($request)
 	{
 		$data = (new Pay($this::$config))->notify();
@@ -60,13 +58,11 @@ class PayJs extends AbstractPayment
 		exit("fail");
 	}
 
-
 	public function getReturnHTML($request)
 	{
 		// TODO: Implement getReturnHTML() method.
 	}
 
-
 	public function getPurchaseHTML()
 	{
 		// TODO: Implement getReturnHTML() method.

+ 17 - 3
app/Http/Controllers/Gateway/PayPal.php

@@ -3,6 +3,8 @@
 
 namespace App\Http\Controllers\Gateway;
 
+use App\Components\Curl;
+use App\Http\Models\Order;
 use App\Http\Models\Payment;
 use Auth;
 use Exception;
@@ -14,6 +16,7 @@ use Srmklive\PayPal\Services\ExpressCheckout;
 class PayPal extends AbstractPayment
 {
 	protected $provider;
+	protected $exChange;
 
 	public function __construct()
 	{
@@ -30,13 +33,20 @@ class PayPal extends AbstractPayment
 			],
 
 			'payment_action' => 'Sale',
-			'currency'       => env('PAYPAL_CURRENCY', 'USD'),
+			'currency'       => 'USD',
 			'billing_type'   => 'MerchantInitiatedBilling',
 			'notify_url'     => (self::$systemConfig['website_callback_url']? : self::$systemConfig['website_url']).'/callback/notify?method=paypal',
-			'locale'         => 'zh-CN',
+			'locale'         => 'zh_CN',
 			'validate_ssl'   => TRUE,
 		];
 		$this->provider->setApiCredentials($config);
+		$this->exChange = 7;
+		$exChangeRate = json_decode(Curl::send('http://api.k780.com/?app=finance.rate&scur=USD&tcur=CNY&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4'), TRUE);
+		if($exChangeRate){
+			if($exChangeRate['success']){
+				$this->exChange = $exChangeRate['result']['rate'];
+			}
+		}
 	}
 
 	public function purchase(Request $request)
@@ -52,6 +62,7 @@ class PayPal extends AbstractPayment
 
 		try{
 			$response = $this->provider->setExpressCheckout($data);
+			Payment::whereId($payment->id)->update(['url' => $response['paypal_link']]);
 
 			return Response::json(['status' => 'success', 'url' => $response['paypal_link'], 'message' => '创建订单成功!']);
 		}catch(Exception $e){
@@ -62,6 +73,8 @@ class PayPal extends AbstractPayment
 
 	protected function getCheckoutData($sn, $amount)
 	{
+		$amount = ceil($amount/$this->exChange*100)/100;
+
 		return [
 			'invoice_id'          => $sn,
 			'items'               => [
@@ -95,7 +108,8 @@ class PayPal extends AbstractPayment
 			$status = $payment_status['PAYMENTINFO_0_PAYMENTSTATUS'];
 
 			if(!strcasecmp($status, 'Completed') || !strcasecmp($status, 'Processed')){
-				Log::info("Order $payment->id has been paid successfully!");
+				Log::info("Order $payment->oid has been paid successfully!");
+				Order::whereOid($payment->oid)->update(['status' => 1]);
 			}else{
 				Log::error("Error processing PayPal payment for Order $payment->id!");
 			}

+ 2 - 0
app/Http/Models/Payment.php

@@ -18,6 +18,7 @@ use Illuminate\Support\Carbon;
  * @property int|null        $oid     本地订单ID
  * @property int             $amount  金额,单位分
  * @property string|null     $qr_code 支付二维码
+ * @property string|null     $url     支付链接
  * @property int             $status  状态:-1-支付失败、0-等待支付、1-支付成功
  * @property Carbon          $created_at
  * @property Carbon          $updated_at
@@ -36,6 +37,7 @@ use Illuminate\Support\Carbon;
  * @method static Builder|Payment whereSn($value)
  * @method static Builder|Payment whereStatus($value)
  * @method static Builder|Payment whereUpdatedAt($value)
+ * @method static Builder|Payment whereUrl($value)
  * @method static Builder|Payment whereUserId($value)
  * @mixin Eloquent
  */

+ 16 - 22
resources/views/admin/inviteList.blade.php

@@ -41,30 +41,24 @@
 							</tr>
 							</thead>
 							<tbody>
-							@if($inviteList->isEmpty())
+							@foreach($inviteList as $invite)
 								<tr>
-									<td colspan="6">{{trans('home.invite_code_table_none_codes')}}</td>
+									<td> {{$invite->id}} </td>
+									<td>
+										<a href="javascript:void(0)" class="mt-clipboard" data-clipboard-action="copy" data-clipboard-text="{{url('/register?code='.$invite->code)}}">{{$invite->code}}</a>
+									</td>
+									<td> {{$invite->dateline}} </td>
+									<td>
+										{{$invite->uid == 0 ? '系统生成' : (empty($invite->generator) ? '【账号已删除】' : $invite->generator->email)}}
+									</td>
+									<td>
+										{!!$invite->status_label!!}
+									</td>
+									<td>
+										{{$invite->status == 1 ? (empty($invite->user) ? '【账号已删除】' : $invite->user->email) : ''}}
+									</td>
 								</tr>
-							@else
-								@foreach($inviteList as $invite)
-									<tr>
-										<td> {{$invite->id}} </td>
-										<td>
-											<a href="javascript:void(0)" class="mt-clipboard" data-clipboard-action="copy" data-clipboard-text="{{url('/register?code='.$invite->code)}}">{{$invite->code}}</a>
-										</td>
-										<td> {{$invite->dateline}} </td>
-										<td>
-											{{$invite->uid == 0 ? '系统生成' : (empty($invite->generator) ? '【账号已删除】' : $invite->generator->email)}}
-										</td>
-										<td>
-											{!!$invite->status_label!!}
-										</td>
-										<td>
-											{{$invite->status == 1 ? (empty($invite->user) ? '【账号已删除】' : $invite->user->email) : ''}}
-										</td>
-									</tr>
-								@endforeach
-							@endif
+							@endforeach
 							</tbody>
 						</table>
 					</div>

+ 4 - 16
resources/views/auth/free.blade.php

@@ -13,24 +13,12 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($inviteList->isEmpty())
+					@foreach($inviteList as $invite)
 						<tr>
-							<td colspan="2">{{trans('home.invite_code_table_none_codes')}}</td>
+							<td><a href="/register?code={{$invite->code}}" target="_blank">{{$invite->code}}</a></td>
+							<td> {{$invite->dateline}} </td>
 						</tr>
-					@else
-						@foreach($inviteList as $invite)
-							<tr>
-								<td><a href="/register?code={{$invite->code}}" target="_blank">{{$invite->code}}</a></td>
-								<td> {{$invite->dateline}} </td>
-							</tr>
-						@endforeach
-					@endif
-					</tbody>
-				@else
-					<tbody>
-					<tr>
-						<td colspan="2">{{trans('home.invite_code_table_none_codes')}}</td>
-					</tr>
+					@endforeach
 					</tbody>
 				@endif
 			@else

+ 11 - 17
resources/views/user/invite.blade.php

@@ -40,25 +40,19 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($inviteList->isEmpty())
+								@foreach($inviteList as $invite)
 									<tr>
-										<td colspan="5">{{trans('home.invite_code_table_none_codes')}}</td>
+										<td> {{$loop->iteration}} </td>
+										<td>
+											<a href="javascript:void(0)" class="mt-clipboard" data-clipboard-action="copy" data-clipboard-text="{{url('/register?aff='.Auth::user()->id.'&code='.$invite->code)}}">{{$invite->code}}</a>
+										</td>
+										<td> {{$invite->dateline}} </td>
+										<td>
+											{!!$invite->status_label!!}
+										</td>
+										{{$invite->status == 1 ? (empty($invite->user) ? '【账号已删除】' : $invite->user->email) : ''}}
 									</tr>
-								@else
-									@foreach($inviteList as $invite)
-										<tr>
-											<td> {{$loop->iteration}} </td>
-											<td>
-												<a href="javascript:void(0)" class="mt-clipboard" data-clipboard-action="copy" data-clipboard-text="{{url('/register?aff='.Auth::user()->id.'&code='.$invite->code)}}">{{$invite->code}}</a>
-											</td>
-											<td> {{$invite->dateline}} </td>
-											<td>
-												{!!$invite->status_label!!}
-											</td>
-											{{$invite->status == 1 ? (empty($invite->user) ? '【账号已删除】' : $invite->user->email) : ''}}
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>

+ 46 - 50
resources/views/user/invoices.blade.php

@@ -24,60 +24,56 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($orderList->isEmpty())
+					@foreach($orderList as $order)
 						<tr>
-							<td colspan="8">{{trans('home.invoice_table_none')}}</td>
-						</tr>
-					@else
-						@foreach($orderList as $order)
-							<tr>
-								<td>{{$loop->iteration}}</td>
-								<td><a href="/invoice/{{$order->order_sn}}" target="_blank">{{$order->order_sn}}</a></td>
-								<td>{{empty($order->goods) ? ($order->goods_id == -1 ? '余额充值': trans('home.invoice_table_goods_deleted')) : $order->goods->name}}</td>
-								<td>{{$order->pay_way === 1 ? trans('home.service_pay_button') : trans('home.online_pay')}}</td>
-								<td>¥{{$order->amount}}</td>
-								<td>{{$order->created_at}}</td>
-								<td>{{empty($order->goods) ? '' : $order->goods_id == -1 || $order->status == 3 ? '' : $order->expire_at}}</td>
-								<td>
-									@switch($order->status)
-										@case(-1)
-										<span class="badge badge-default">{{trans('home.invoice_status_closed')}}</span>
-										@break
-										@case(0)
-										<span class="badge badge-danger">{{trans('home.invoice_status_wait_payment')}}</span>
-										@break
-										@case(1)
-										<span class="badge badge-info">{{trans('home.invoice_status_wait_confirm')}}</span>
-										@break
-										@case(2)
-										@if ($order->goods_id == -1)
-											<span class="badge badge-default">{{trans('home.invoice_status_payment_confirm')}}</span>
+							<td>{{$loop->iteration}}</td>
+							<td><a href="/invoice/{{$order->order_sn}}" target="_blank">{{$order->order_sn}}</a></td>
+							<td>{{empty($order->goods) ? ($order->goods_id == -1 ? '余额充值': trans('home.invoice_table_goods_deleted')) : $order->goods->name}}</td>
+							<td>{{$order->pay_way === 1 ? trans('home.service_pay_button') : trans('home.online_pay')}}</td>
+							<td>¥{{$order->amount}}</td>
+							<td>{{$order->created_at}}</td>
+							<td>{{empty($order->goods) ? '' : $order->goods_id == -1 || $order->status == 3 ? '' : $order->expire_at}}</td>
+							<td>
+								@switch($order->status)
+									@case(-1)
+									<span class="badge badge-default">{{trans('home.invoice_status_closed')}}</span>
+									@break
+									@case(0)
+									<span class="badge badge-danger">{{trans('home.invoice_status_wait_payment')}}</span>
+									@break
+									@case(1)
+									<span class="badge badge-info">{{trans('home.invoice_status_wait_confirm')}}</span>
+									@break
+									@case(2)
+									@if ($order->goods_id == -1)
+										<span class="badge badge-default">{{trans('home.invoice_status_payment_confirm')}}</span>
+									@else
+										@if($order->is_expire)
+											<span class="badge badge-default">{{trans('home.invoice_table_expired')}}</span>
 										@else
-											@if($order->is_expire)
-												<span class="badge badge-default">{{trans('home.invoice_table_expired')}}</span>
-											@else
-												<span class="badge badge-success">{{trans('home.invoice_table_active')}}</span>
-											@endif
-										@endif
-										@break
-										@case(3)
-										<span class="badge badge-info">{{trans('home.invoice_table_prepay')}}</span>
-								@break
-								@endswitch
-								<td>
-									@if($order->status == 0 && !empty($order->payment))
-										@if(!empty($order->payment->jump_url))
-											<a href="{{$order->payment->jump_url}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
-										@elseif(!empty($order->payment->sn))
-											<a href="/payment/{{$order->payment->sn}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
+											<span class="badge badge-success">{{trans('home.invoice_table_active')}}</span>
 										@endif
-									@elseif ($order->status == 3)
-										<button onclick="activeOrder('{{$order->oid}}')" class="btn btn-success">{{trans('home.invoice_table_start')}}</button>
 									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+									@break
+									@case(3)
+									<span class="badge badge-info">{{trans('home.invoice_table_prepay')}}</span>
+							@break
+							@endswitch
+							<td>
+								@if($order->status == 0 && $order->payment)
+									@if($order->payment->url)
+										<a href="{{$order->payment->url}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
+									@elseif($order->payment->sn)
+										<a href="/payment/{{$order->payment->sn}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
+									@endif
+								@elseif ($order->status == 1)
+									<button onClick="window.location.reload();" class="btn btn-primary"><i class="icon wb-refresh" aria-hidden="true"></i></button>
+								@elseif ($order->status == 3)
+									<button onclick="activeOrder('{{$order->oid}}')" class="btn btn-success">{{trans('home.invoice_table_start')}}</button>
+								@endif
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 37 - 55
resources/views/user/referral.blade.php

@@ -43,19 +43,13 @@
 							</tr>
 							</thead>
 							<tbody>
-							@if($referralUserList->isEmpty())
+							@foreach($referralUserList as $vo)
 								<tr>
-									<td colspan="3"> {{trans('home.referral_table_none')}} </td>
+									<td> {{$loop->iteration}} </td>
+									<td> {{str_replace(mb_substr($vo->email, 3, 4), "****", $vo->email)}}  </td>
+									<td> {{$vo->created_at}} </td>
 								</tr>
-							@else
-								@foreach($referralUserList as $vo)
-									<tr>
-										<td> {{$loop->iteration}} </td>
-										<td> {{str_replace(mb_substr($vo->email, 3, 4), "****", $vo->email)}}  </td>
-										<td> {{$vo->created_at}} </td>
-									</tr>
-								@endforeach
-							@endif
+							@endforeach
 							</tbody>
 						</table>
 					</div>
@@ -90,30 +84,24 @@
 							</tr>
 							</thead>
 							<tbody>
-							@if($referralLogList->isEmpty())
+							@foreach($referralLogList as $referralLog)
 								<tr>
-									<td colspan="6"> {{trans('home.referral_table_none')}} </td>
+									<td> {{$loop->iteration}} </td>
+									<td> {{$referralLog->created_at}} </td>
+									<td> {{empty($referralLog->user) ? '【账号已删除】' : str_replace(mb_substr($referralLog->user->email, 3, 4), "****", $referralLog->user->email)}} </td>
+									<td> ¥{{$referralLog->amount}} </td>
+									<td> ¥{{$referralLog->ref_amount}} </td>
+									<td>
+										@if ($referralLog->status == 1)
+											<span class="badge badge-sm badge-info">申请中</span>
+										@elseif($referralLog->status == 2)
+											<span>已提现</span>
+										@else
+											<span class="badge badge-sm badge-success">未提现</span>
+										@endif
+									</td>
 								</tr>
-							@else
-								@foreach($referralLogList as $referralLog)
-									<tr>
-										<td> {{$loop->iteration}} </td>
-										<td> {{$referralLog->created_at}} </td>
-										<td> {{empty($referralLog->user) ? '【账号已删除】' : str_replace(mb_substr($referralLog->user->email, 3, 4), "****", $referralLog->user->email)}} </td>
-										<td> ¥{{$referralLog->amount}} </td>
-										<td> ¥{{$referralLog->ref_amount}} </td>
-										<td>
-											@if ($referralLog->status == 1)
-												<span class="badge badge-sm badge-info">申请中</span>
-											@elseif($referralLog->status == 2)
-												<span>已提现</span>
-											@else
-												<span class="badge badge-sm badge-success">未提现</span>
-											@endif
-										</td>
-									</tr>
-								@endforeach
-							@endif
+							@endforeach
 							</tbody>
 						</table>
 					</div>
@@ -144,30 +132,24 @@
 							</tr>
 							</thead>
 							<tbody>
-							@if($referralApplyList->isEmpty())
+							@foreach($referralApplyList as $vo)
 								<tr>
-									<td colspan="6"> {{trans('home.referral_table_none')}} </td>
+									<td> {{$loop->iteration}} </td>
+									<td> {{$vo->created_at}} </td>
+									<td> ¥{{$vo->amount}} </td>
+									<td>
+										@if ($vo->status == 0)
+											<span class="badge badge-sm badge-warning">待审核</span>
+										@elseif($vo->status == 1)
+											<span class="badge badge-sm badge-info">审核通过 - 待打款</span>
+										@elseif($vo->status == 2)
+											<span>已打款</span>
+										@else
+											<span class="badge badge-sm badge-dark">驳回</span>
+										@endif
+									</td>
 								</tr>
-							@else
-								@foreach($referralApplyList as $vo)
-									<tr>
-										<td> {{$loop->iteration}} </td>
-										<td> {{$vo->created_at}} </td>
-										<td> ¥{{$vo->amount}} </td>
-										<td>
-											@if ($vo->status == 0)
-												<span class="badge badge-sm badge-warning">待审核</span>
-											@elseif($vo->status == 1)
-												<span class="badge badge-sm badge-info">审核通过 - 待打款</span>
-											@elseif($vo->status == 2)
-												<span>已打款</span>
-											@else
-												<span class="badge badge-sm badge-dark">驳回</span>
-											@endif
-										</td>
-									</tr>
-								@endforeach
-							@endif
+							@endforeach
 							</tbody>
 						</table>
 					</div>

+ 16 - 22
resources/views/user/ticketList.blade.php

@@ -28,30 +28,24 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($ticketList->isEmpty())
+								@foreach($ticketList as $ticket)
 									<tr>
-										<td colspan="4"> {{trans('home.ticket_table_none')}} </td>
+										<td>{{$ticket->id}}</td>
+										<td>{{$ticket->title}}</td>
+										<td>
+											{!!$ticket->status_label!!}
+										</td>
+										<td>
+											@if($ticket->status == 2)
+												<a href="/replyTicket?id={{$ticket->id}}" class="btn btn-animate btn-animate-vertical btn-outline-info">
+													<span><i class="icon wb-eye" aria-hidden="true" style="left: 40%">  </i> {{trans('home.ticket_table_view')}} </span></a>
+											@else
+												<a href="/replyTicket?id={{$ticket->id}}" class="btn btn-animate btn-animate-vertical btn-outline-success">
+													<span><i class="icon wb-check" aria-hidden="true" style="left: 40%"></i> {{trans('home.ticket_open')}} </span></a>
+											@endif
+										</td>
 									</tr>
-								@else
-									@foreach($ticketList as $ticket)
-										<tr>
-											<td>{{$ticket->id}}</td>
-											<td>{{$ticket->title}}</td>
-											<td>
-												{!!$ticket->status_label!!}
-											</td>
-											<td>
-												@if($ticket->status == 2)
-													<a href="/replyTicket?id={{$ticket->id}}" class="btn btn-animate btn-animate-vertical btn-outline-info">
-														<span><i class="icon wb-eye" aria-hidden="true" style="left: 40%">  </i> {{trans('home.ticket_table_view')}} </span></a>
-												@else
-													<a href="/replyTicket?id={{$ticket->id}}" class="btn btn-animate btn-animate-vertical btn-outline-success">
-														<span><i class="icon wb-check" aria-hidden="true" style="left: 40%"></i> {{trans('home.ticket_open')}} </span></a>
-												@endif
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>

+ 8 - 2
sql/db.sql

@@ -401,6 +401,11 @@ insert into `config` VALUES ('103', 'maintenance_content', '');
 insert into `config` VALUES ('104', 'bark_key', '');
 insert into `config` VALUES ('105', 'hcaptcha_secret', '');
 insert into `config` VALUES ('106', 'hcaptcha_sitekey', '');
+insert into `config` VALUES ('107', 'paypal_username', '');
+insert into `config` VALUES ('108', 'paypal_password', '');
+insert into `config` VALUES ('109', 'paypal_secret', '');
+insert into `config` VALUES ('110', 'paypal_certificate', '');
+insert into `config` VALUES ('111', 'paypal_app_id', '');
 
 -- ----------------------------
 -- Table structure for `article`
@@ -602,7 +607,7 @@ create TABLE `order` (
   `amount` int(11) NOT NULL DEFAULT '0' COMMENT '订单总价,单位分',
   `expire_at` datetime DEFAULT NULL COMMENT '过期时间',
   `is_expire` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已过期:0-未过期、1-已过期',
-  `pay_way` tinyint(4) NOT NULL DEFAULT '1' COMMENT '支付方式:1-余额支付、2-有赞云支付',
+  `pay_way` tinyint(4) NOT NULL DEFAULT '1' COMMENT '支付方式:balance、f2fpay、codepay、payjs、bitpayx等',
   `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '订单状态:-1-已关闭、0-待支付、1-已支付待确认、2-已完成',
   `created_at` datetime DEFAULT NULL COMMENT '创建时间',
   `updated_at` datetime DEFAULT NULL COMMENT '最后一次更新时间',
@@ -1106,6 +1111,7 @@ create TABLE `payment` (
   `oid` int(11) DEFAULT NULL COMMENT '本地订单ID',
   `amount` int(11) NOT NULL DEFAULT '0' COMMENT '金额,单位分',
   `qr_code` text COLLATE utf8mb4_unicode_ci COMMENT '支付二维码',
+  `url` text COLLATE utf8mb4_unicode_ci COMMENT '支付链接',
   `status` int(11) NOT NULL DEFAULT '0' COMMENT '状态:-1-支付失败、0-等待支付、1-支付成功',
   `created_at` datetime NOT NULL,
   `updated_at` datetime NOT NULL,
@@ -1133,7 +1139,7 @@ create TABLE `payment_callback` (
   `created_at` datetime DEFAULT NULL,
   `updated_at` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='有赞云回调日志';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='回调日志';
 
 
 -- ----------------------------

+ 2 - 0
sql/mod/20200426.sql

@@ -4,3 +4,5 @@ INSERT INTO `config` VALUES ('109', 'paypal_secret', '');
 INSERT INTO `config` VALUES ('110', 'paypal_certificate', '');
 INSERT INTO `config` VALUES ('111', 'paypal_app_id', '');
 
+ALTER TABLE `payment`
+    ADD COLUMN `url` text COLLATE utf8mb4_unicode_ci COMMENT '支付链接' AFTER `qr_code`;