1未蝌、后端邏輯代碼:?
(1)控制器層:?
/**
* Created by PhpStorm.
* User: lph
* Date: 2018/7/5
* Time: 19:16
*/
namespace App\Http\Controllers;
use App\Business\Exceptions\BusinessException;
use App\Business\PaymentBusiness;
use App\Business\Payment\Flow\BaseFlow;
use App\Models\PrimaryOrder;
use App\Models\UserPaymentOrder;
use App\Models\UserUpgradeOrder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\JsonResponse;
use Validator, Log, DB;
use App\Services\StripePay;
class StripePayController extends Controller
{
? ? /**
? ? * 信用卡支付 2018-07-06
? ? * @author oliver xu
? ? * @param Request $request
? ? * @return Json
*/
? ? public function paid(Request $request){
? ? ? ? // 驗證參數(shù)
? ? ? ? $v = Validator::make($request->all(), [
? ? ? ? ? ? 'amount'? ? => 'required|string',
? ? ? ? ? ? 'currency'? ? => 'required|in:sgd',
? ? ? ? ? ? 'source'? ? => 'required',
? ? ? ? ? ? 'receipt_email' => 'email',
? ? ? ? ? ? 'order_sn' => 'required|string',
? ? ? ? ],[
? ? ? ? ? ? 'amount.required' => '支付金額必填',
? ? ? ? ? ? 'amount.string' => '支付金額必須為字符串',
? ? ? ? ? ? 'currency.required' => '貨幣類型必填默認(rèn)sgd',
? ? ? ? ? ? 'currency.in' => '貨幣只有一種sgd',
? ? ? ? ? ? 'source.required' => '支付來源必填', //未保存客戶銀行卡信息的 只能調(diào)用stripe.js 獲取token
? ? ? ? ? ? 'receipt_email.email' => '接收郵件格式有誤',
? ? ? ? ? ? 'order_sn.required' => '訂單ID必填',
? ? ? ? ? ? 'order_sn.string' => '訂單ID必須為字符串',
? ? ? ? ]);
? ? ? ? if($v->fails())
{
? ? ? ? ? ? return $this->format('1', $v->errors()->all()[0], null,'fail');
? ? ? ? }
? ? ? $businessName = 'OrderInfo';
? ? ? $payProvider = $request->get('payProvider');
? ? ? ? $orderId = PrimaryOrder::where('order_sn',$request->order_sn)->value("order_id");
? ? ? ? if (!$orderId){
? ? ? ? ? ? return $this->format('1', $request->order_sn."支付訂單不存在", null,'fail');
? ? ? ? }
? ? ? ? Log::info('獲取訂單ID:'.$orderId);
? ? ? ? $business = BaseFlow::createBusinessFlow($businessName);
? ? ? ? $paymentOrder = new UserPaymentOrder();
? ? ? ? $order =null;
? ? ? ? $isOrder = $paymentOrder->where('order_id',$orderId)->first();
? ? ? ? if (!$isOrder){
? ? ? ? ? ? \DB::transaction(function()use($orderId,$business,$paymentOrder,$businessName,$payProvider,&$order){
? ? ? ? ? ? ? ? $order = $business->createOrderById($orderId,$payProvider);
? ? ? ? ? ? ? ? $paymentOrder->pay_provider =$payProvider;
? ? ? ? ? ? ? ? $paymentOrder->pay_type = 1;
? ? ? ? ? ? ? ? $paymentOrder->business = $businessName;
? ? ? ? ? ? ? ? $paymentOrder->user_id = Auth::user()->user_id;
? ? ? ? ? ? ? ? $paymentOrder->order_id =$order->order_id;
? ? ? ? ? ? ? ? $paymentOrder->price = $order->price;
? ? ? ? ? ? ? ? $paymentOrder->subject =$order->subject;
? ? ? ? ? ? ? ? $paymentOrder->desc =$order->desc;
? ? ? ? ? ? ? ? $paymentOrder->goods_list = json_encode($order->goods_list);
? ? ? ? ? ? ? ? $paymentOrder->trade_no = $order->trade_no;
? ? ? ? ? ? ? ? $paymentOrder->state = 1;
? ? ? ? ? ? ? ? $paymentOrder->save();
? ? ? ? ? ? });
? ? ? ? }elseif (in_array($isOrder->state,[2,3])){
? ? ? ? ? ? return $this->format('1', '已經(jīng)支付', null,'success');
? ? ? ? }
? ? ? ? $paymentOrderInfo = $paymentOrder->where('order_id',$orderId)->first();
? ? ? ? try {
? ? ? ? ? ? StripePay::init();
? ? ? ? ? ? $param = [
? ? ? ? ? ? ? ? 'amount' => _isLocal() ? 50 : $paymentOrderInfo->price*100,
? ? ? ? ? ? ? ? 'currency' => $request->currency,
? ? ? ? ? ? ? ? 'source' => $request->source,
? ? ? ? ? ? ? ? 'metadata' => [
? ? ? ? ? ? ? ? ? ? 'order_sn'=> $paymentOrderInfo->trade_no,
? ? ? ? ? ? ? ? ? ? 'amount'=> _isLocal() ? 50 : $paymentOrderInfo->price,
? ? ? ? ? ? ? ? ? ? 'business'=> $paymentOrderInfo->business,
? ? ? ? ? ? ? ? ? ? 'ordered_at' =>$paymentOrderInfo->created_at,
? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ? ? // 'customer' => $paymentOrderInfo->trade_no,
? ? ? ? ? ? ];
? ? ? ? ? ? Log::info("start step-3");
? ? ? ? ? ? // if ($request->has('user_id')) {
//? ? $param['customer'] =? $request->user_id;
// }
? ? ? ? ? ? if ($request->has('receipt_email')) {
? ? ? ? ? ? ? ? $param['receipt_email'] =? $request->receipt_email;
? ? ? ? ? ? }
? ? ? ? ? ? //支付對象
? ? ? ? ? ? $chargeObj = null;
? ? ? ? ? ? Log::info("charge對象內(nèi)容前:".json_encode($param));
? ? ? ? ? ? $charge = \Stripe\Charge::create($param);
? ? ? ? ? ? Log::info("charge對象內(nèi)容:".json_encode($charge));
? ? ? ? ? ? $charge = json_encode($charge);
? ? ? ? ? ? if ($charge) {
? ? ? ? ? ? ? ? $chargeObj = json_decode($charge);
? ? ? ? ? ? ? ? //支付成功
? ? ? ? ? ? ? ? if (isset($chargeObj->status) || $chargeObj->status == 'succeeded') {
? ? ? ? ? ? ? ? ? ? $flowBusiness = BaseFlow::createBusinessFlow($paymentOrderInfo->business);
? ? ? ? ? ? ? ? ? ? $result = $flowBusiness->buyGoods($paymentOrderInfo);
? ? ? ? ? ? ? ? ? ? UserPaymentOrder::query()->where('id',$paymentOrderInfo->id)->where('state',1)->update(['state'=>3, 'succeeded_at' => date('Y-m-d H:i:s')]);
? ? ? ? ? ? ? ? ? ? Log::info('購買結(jié)果'.json_encode($result));
? ? ? ? ? ? ? ? ? ? return $this->format('0', '支付成功', null,'success');
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? //支付失敗
? ? ? ? ? ? ? ? ? ? throw new BusinessException("未支付成功");
? ? ? ? ? ? ? ? }
}
? ? ? ? }catch(\Exception $e){
? ? ? ? ? ? \Log::info($e->getMessage());
? ? ? ? ? ? return $this->format('1', '支付失敗;', null,'fail');
? ? ? ? }
}
? ? /**
? ? * 信用卡支付 禮包購買
? ? * @param Request $request
? ? * @return Json
*/
? ? public function paidGift(Request $request){
? ? ? ? // 驗證參數(shù)
? ? ? ? $v = Validator::make($request->all(), [
? ? ? ? ? ? 'amount'? ? => 'required|string',
? ? ? ? ? ? 'currency'? ? => 'required|in:sgd',
? ? ? ? ? ? 'source'? ? => 'required',
//? ? ? ? ? ? 'receipt_email' => 'email',
//? ? ? ? ? ? 'order_sn' => 'required|string',
? ? ? ? ? ? 'parentNo' => 'required',
? ? ? ? ],[
? ? ? ? ? ? 'amount.required' => '支付金額必填',
? ? ? ? ? ? 'amount.string' => '支付金額必須為字符串',
? ? ? ? ? ? 'currency.required' => '貨幣類型必填默認(rèn)sgd',
? ? ? ? ? ? 'currency.in' => '貨幣只有一種sgd',
? ? ? ? ? ? 'source.required' => '支付來源必填', //未保存客戶銀行卡信息的 只能調(diào)用stripe.js 獲取token
//? ? ? ? ? ? 'receipt_email.email' => '接收郵件格式有誤',
//? ? ? ? ? ? 'order_sn.required' => '訂單ID必填',
//? ? ? ? ? ? 'order_sn.string' => '訂單ID必須為字符串',
? ? ? ? ? ? 'parentNo.required' => '推薦人號必傳',
? ? ? ? ]);
? ? ? ? if($v->fails())
{
? ? ? ? ? ? return $this->format('1', $v->errors()->all()[0], null,'fail');
? ? ? ? }
? ? ? ? $paymentOrder = new UserPaymentOrder();
? ? ? ? $business = new PaymentBusiness();
? ? ? ? $data = $business->createxykOrder();
? ? ? ? $orderId = $data['order_id'];
//
//? ? ? ? $businessName = 'OrderInfo';
//? ? ? ? $payProvider = $request->get('payProvider');
//
//? ? ? ? $orderId = UserUpgradeOrder::where('order_sn',$request->order_sn)->value("id");
//? ? ? ? if (!$orderId){
//? ? ? ? ? ? return $this->format('1', $request->order_sn."支付訂單不存在", null,'fail');
//? ? ? ? }
? ? ? ? $business = $request->get('business', 'UserUpgradeOrder');
? ? ? ? $paymentOrderInfo = $paymentOrder->where('order_id',$orderId)->where('business', $business)->first();
? ? ? ? if(!$paymentOrderInfo){
? ? ? ? ? ? return $this->format('1', "支付訂單不存在", null,'fail');
? ? ? ? }elseif (in_array($paymentOrderInfo->state,[2,3])){
? ? ? ? ? ? return $this->format('1', '已經(jīng)支付', null,'success');
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? //\Stripe\Stripe::setApiKey(StripePay::_getKey());
? ? ? ? ? ? StripePay::init();
? ? ? ? ? ? $param = [
? ? ? ? ? ? ? ? 'amount' =>_isLocal() ? 50 : $paymentOrderInfo->price*100,
? ? ? ? ? ? ? ? 'currency' => $request->currency,
? ? ? ? ? ? ? ? 'source' => $request->source,
? ? ? ? ? ? ? ? 'metadata' => [
? ? ? ? ? ? ? ? ? ? 'order_sn'=> $paymentOrderInfo->trade_no,
? ? ? ? ? ? ? ? ? ? 'amount'=> _isLocal() ? 50 : $paymentOrderInfo->price,
? ? ? ? ? ? ? ? ? ? 'business'=> $paymentOrderInfo->business,
? ? ? ? ? ? ? ? ? ? 'ordered_at' =>$paymentOrderInfo->created_at,
? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ? ? // 'customer' => $paymentOrderInfo->trade_no,
? ? ? ? ? ? ];
? ? ? ? ? ? Log::info("start step-3");
? ? ? ? ? ? // if ($request->has('user_id')) {
//? ? $param['customer'] =? $request->user_id;
// }
? ? ? ? ? ? if ($request->has('receipt_email')) {
? ? ? ? ? ? ? ? $param['receipt_email'] =? $request->receipt_email;
? ? ? ? ? ? }
? ? ? ? ? ? //支付對象
? ? ? ? ? ? $chargeObj = null;
? ? ? ? ? ? Log::info("禮包 charge對象內(nèi)容前:".json_encode($param));
? ? ? ? ? ? $charge = \Stripe\Charge::create($param);
? ? ? ? ? ? Log::info("禮包 charge對象內(nèi)容:".json_encode($charge));
? ? ? ? ? ? $charge = json_encode($charge);
? ? ? ? ? ? if ($charge) {
? ? ? ? ? ? ? ? $chargeObj = json_decode($charge);
? ? ? ? ? ? ? ? //支付成功
? ? ? ? ? ? ? ? if (isset($chargeObj->status) || $chargeObj->status == 'succeeded') {
? ? ? ? ? ? ? ? ? ? $flowBusiness = BaseFlow::createBusinessFlow($paymentOrderInfo->business);
? ? ? ? ? ? ? ? ? ? $result = $flowBusiness->buyGoods($paymentOrderInfo);
? ? ? ? ? ? ? ? ? ? UserPaymentOrder::query()->where('id',$paymentOrderInfo->id)->where('state',1)->update(['state'=>3, 'succeeded_at' => date('Y-m-d H:i:s')]);
? ? ? ? ? ? ? ? ? ? Log::info('購買結(jié)果'.json_encode($result));
? ? ? ? ? ? ? ? ? ? return $this->format('0', '支付成功', null,'success');
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? //支付失敗
? ? ? ? ? ? ? ? ? ? throw new BusinessException("未支付成功","388",null);
? ? ? ? ? ? ? ? }
}
? ? ? ? }catch(\Exception $e){
? ? ? ? ? ? \Log::info(__METHOD__ . $e->getMessage());
? ? ? ? ? ? return $this->format('1', '支付失敗;', null,'fail');
? ? ? ? }
}
? ? /**
? ? * Notes:? 創(chuàng)建 H5 訂單
? ? * User: lphwxl
? ? * @param Request $request
? ? * @return JsonResponse
? ? * @throws BusinessException
*/
? ? public function createWebOrd(Request $request){
? ? ? ? $business = new PaymentBusiness();
? ? ? ? return JsonResponse::create([
? ? ? ? ? ? 'result'=>'success',
? ? ? ? ? ? 'error'=>'0',
? ? ? ? ? ? 'msg'=>'創(chuàng)建訂單成功碉纳!',
? ? ? ? ? ? 'data'=>$business->createxykOrder()
? ? ? ? ]);
? ? }
? ? /**
? ? * 創(chuàng)建支付訂單
? ? * @return static
*/
? ? public function orderToAlipay(){
? ? ? ? $business = new PaymentBusiness();
? ? ? ? return JsonResponse::create([
? ? ? ? ? ? 'result'=>'success',
? ? ? ? ? ? 'error'=>'0',
? ? ? ? ? ? 'msg'=>'提交成功',
? ? ? ? ? ? 'data'=>$business->createxykOrder()
? ? ? ? ]);
? ? }
? ? public function stripeSourceChargeable(Request $request){
? ? ? ? //發(fā)起stripe確認(rèn)支付
? ? ? ? $data = $request->input();
? ? ? ? try{
? ? ? ? ? ? $charge = StripePay::sendCharge($data['data']['object']['id'],$data['data']['object']['client_secret']);
? ? ? ? ? ? if(!$charge){
? ? ? ? ? ? ? ? throw new BusinessException('發(fā)起確認(rèn)扣款失斉凹薄杰扫!,源Source:'.$data['data']['object']['id']);
? ? ? ? ? ? }
? ? ? ? ? ? //修改訂單狀態(tài)
? ? ? ? ? ? self::_changeOrderStatus(StripePay::$_userPayOrder);
? ? ? ? }catch(\Exception $e){
? ? ? ? ? ? throw new BusinessException('stripe_alipay回調(diào)異常泊愧!源Source:'.$data['data']['object']['id']);
? ? ? ? }
}
? ? /**
? ? * stripe webhooks 異步通知
? ? */
? ? public function stripeNotify(Request $request){
? ? ? ? StripePay::checkoutWebhookSignatures();
? ? ? ? $data = $request->input();
? ? ? ? try{
? ? ? ? ? ? $usrpayObj = UserPaymentOrder::where('state','=',1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('trade_no',$data['data']['object']['metadata']['order_sn'])
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('business',$data['data']['object']['metadata']['business'])
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->first();
? ? ? ? ? ? if(!$usrpayObj)
? ? ? ? ? ? ? ? return http_response_code(200);
? ? ? ? ? ? //修改訂單狀態(tài)
? ? ? ? ? ? self::_changeOrderStatus($usrpayObj);
? ? ? ? }catch(\Exception $e){
? ? ? ? ? ? \Log::info($e->getMessage());
? ? ? ? ? ? throw new BusinessException('stripe_alipay回調(diào)異常刊殉!源Source:'.$data['data']['object']['id']);
? ? ? ? }
}
? ? public function stripeSourceSucceeded(Request $request){
? ? ? ? //后期處理,郵件通知
? ? ? ? //Log::info('stripeSourceSucceeded:'.json_encode($request->all()));
? ? }
? ? static private function _changeOrderStatus(UserPaymentOrder $orderObj){
? ? ? ? try{
? ? ? ? ? ? DB::beginTransaction();
? ? ? ? ? ? $res = UserPaymentOrder::query()->where('id',$orderObj->id)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('state','=',1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->update([
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'state'=>3,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'succeeded_at'=>date('Y-m-d H:i:s')
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ]);
? ? ? ? ? ? $flowBusiness = BaseFlow::createBusinessFlow($orderObj->business);
? ? ? ? ? ? $result = $flowBusiness->buyGoods($orderObj);
? ? ? ? ? ? if($res && $result) {
? ? ? ? ? ? ? ? DB::commit();
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? DB::rollBack();
? ? ? ? ? ? Log::info('購買結(jié)果'.json_encode($result));
? ? ? ? }catch (\Exception $e){
? ? ? ? ? ? DB::rollBack();
? ? ? ? ? ? throw new BusinessException('strip回調(diào)異常!'.$e->getMessage());
? ? ? ? }
}
}
(2)支付服務(wù)層:
namespace App\Services;
use App\Business\Exceptions\BusinessException;
use App\Business\Exceptions\OrderNotExistsException;
use App\Business\PaymentBusiness;
use App\Models\UserPaymentOrder;
class StripePay{
? ? static private $_source = null;
? ? static public $_userPayOrder = null;
? ? /**
? ? * Notes: 判斷 Source源 的狀態(tài)
? ? * User: lphwxl
? ? * @param string $sourceID
? ? * @return \Stripe\StripeObject
*/
? ? static public function _sourceIsExists(string $sourceID,string $client_secret){
? ? ? ? self::init();
? ? ? ? $source = \Stripe\Source::retrieve($sourceID,[
? ? ? ? ? ? 'api_key'=>'sk_live_xxxxxxxxxxxxxu',//self::_getKey()
? ? ? ? ? ? 'client_secret'=>$client_secret
? ? ? ? ]);
? ? ? ? if($source && ($source instanceof? \Stripe\StripeObject) && ($source->id == $sourceID)){
? ? ? ? ? ? self::$_source = $source;
? ? ? ? }else
? ? ? ? ? ? throw new BusinessException('扣款失敗映屋,源source:'.$sourceID);
? ? }
? ? /**
? ? * Notes: 發(fā)起 確認(rèn)扣款
? ? * User: lphwxl
? ? * @param string $sourceID
? ? * @param array $params
? ? * @return null|\Stripe\ApiResource
? ? * @throws BusinessException
? ? * @throws OrderNotExistsException
*/
? ? static public function sendCharge(string $sourceID,string $client_secret,array $params=[]){
? ? ? ? self::_sourceIsExists($sourceID,$client_secret);
? ? ? ? if(self::$_source && self::$_source->status == 'chargeable'){
? ? ? ? ? ? self::_UserPayOrderIsExists(self::$_source->metadata['order_sn'],self::$_source->metadata['order_id']);
? ? ? ? ? ? $param = [
? ? ? ? ? ? ? ? 'amount' => _isLocal() ? 50:self::$_userPayOrder->price*100,
? ? ? ? ? ? ? ? 'currency' => self::$_source->currency,
? ? ? ? ? ? ? ? 'source' => self::$_source->id,
? ? ? ? ? ? ? ? 'metadata' => [
? ? ? ? ? ? ? ? ? ? 'order_sn'=> self::$_userPayOrder->trade_no,
? ? ? ? ? ? ? ? ? ? 'order_id'=> self::$_userPayOrder->order_id,
? ? ? ? ? ? ? ? ? ? 'amount'=> _isLocal() ? 50: self::$_userPayOrder->price*100,
? ? ? ? ? ? ? ? ? ? 'business'=> self::$_userPayOrder->business,
? ? ? ? ? ? ? ? ? ? 'ordered_at' =>self::$_userPayOrder->created_at,
? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ];
? ? ? ? ? ? try{
? ? ? ? ? ? ? ? $charge = \Stripe\Charge::create($param);
? ? ? ? ? ? ? ? if(!($charge instanceof \Stripe\ApiResource)){
? ? ? ? ? ? ? ? ? ? throw new BusinessException('確認(rèn)扣款失敗誓军,源Source:'.$sourceID);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if($charge && $charge->status == 'succeeded'){
? ? ? ? ? ? ? ? ? ? return $charge;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }catch (\Exception $e){
? ? ? ? ? ? ? ? throw new BusinessException('確認(rèn)扣款失敗袱讹,源Source:'.$sourceID);
? ? ? ? ? ? }
? ? ? ? }else
? ? ? ? ? ? throw new BusinessException('確認(rèn)扣款失敗,源Source:'.$sourceID);
? ? }
? ? static public function checkoutWebhookSignatures($type='ChargeSucceed'){
? ? ? ? self::init();
? ? ? ? $type = 'get'.$type.'Secret';
? ? ? ? $endpoint_secret = self::$type();
? ? ? ? $payload = @file_get_contents('php://input');
? ? ? ? $sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
? ? ? ? $event = null;
? ? ? ? try {
? ? ? ? ? ? $event = \Stripe\Webhook::constructEvent(
? ? ? ? ? ? ? ? $payload, $sig_header, $endpoint_secret
? ? ? ? ? ? );
? ? ? ? } catch(\UnexpectedValueException $e) {
? ? ? ? ? ? http_response_code(400);
? ? ? ? ? ? exit();
? ? ? ? } catch(\Stripe\Error\SignatureVerification $e) {
? ? ? ? ? ? // Invalid signature
? ? ? ? ? ? http_response_code(400);
? ? ? ? ? ? exit();
? ? ? ? }
? ? ? ? // Do something with $event
//http_response_code(200); // PHP 5.4 or greater
? ? }
? ? /**
? ? * Notes: 獲取 api-key
* User: lphwxl
? ? * @return mixed
*/
? ? static public function _getKey(){
? ? ? ? if(_isLocal())
? ? ? ? ? ? return config('stripe.STRIPE_API_TEST_KEY');
? ? ? ? return config('stripe.STRIPE_API_KEY');
? ? }
? ? /**
? ? * Notes: 獲取 webhook 的密鑰
? ? * User: lphwxl
? ? * @return mixed
*/
? ? static public function getChargeSucceedSecret(){
? ? ? ? if(_isLocal())
? ? ? ? ? ? return config('stripe.TEST_CHARGE_SUCCEEDED_SECRET');
? ? ? ? return config('stripe.CHARGE_SUCCEEDED_SECRET');
? ? }
? ? static public function init(){
? ? ? ? \Stripe\Stripe::setApiKey('sk_live_rBxxxxxxxxTxxxxxxxxxx');
? ? ? ? //\Stripe\Stripe::setApiKey(self::_getKey());
? ? }
? ? /**
? ? * Notes: 判斷支付訂單是否存在
? ? * User: lphwxl
? ? * @param string $order_sn
? ? * @param int $order_id
? ? * @throws BusinessException
? ? * @throws OrderNotExistsException
*/
? ? static public function _UserPayOrderIsExists(string $order_sn,int $order_id){
? ? ? ? $paymentOrder = new UserPaymentOrder();
? ? ? ? $paymentOrderInfo = $paymentOrder->where('order_id',$order_id)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->where('trade_no',$order_sn)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ->first();
? ? ? ? if(!$paymentOrderInfo){
? ? ? ? ? ? throw new OrderNotExistsException('stripe_alipay訂單不存在昵时!');
? ? ? ? }elseif (in_array($paymentOrderInfo->state,[2,3])){
? ? ? ? ? ? throw new BusinessException('stripe_alipay訂單已支付捷雕!');
? ? ? ? }
? ? ? ? self::$_userPayOrder = $paymentOrderInfo;
? ? }
}
?>
(3)配置信息:
<?php
return [
? ? 'STRIPE_API_TEST_KEY'=>'sk_test_fXXXXXXXXXXXXX',
? ? 'STRIPE_API_KEY'=>'sk_live_XXXXXXXXmu',
? ? 'TEST_CHARGE_SUCCEEDED_SECRET'=>'whsec_XXXXXXXXXXXXXX',
? ? 'CHARGE_SUCCEEDED_SECRET'=>'whsec_XXXXXXXXXXXXXXXXXX',
];