Sripe - 支付寶支付

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',

];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壹甥,隨后出現(xiàn)的幾起案子救巷,更是在濱河造成了極大的恐慌,老刑警劉巖句柠,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浦译,死亡現(xiàn)場離奇詭異,居然都是意外死亡溯职,警方通過查閱死者的電腦和手機精盅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谜酒,“玉大人叹俏,你說我怎么就攤上這事∑ё澹” “怎么了粘驰?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹰贵。 經(jīng)常有香客問我晴氨,道長康嘉,這世上最難降的妖魔是什么碉输? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮亭珍,結(jié)果婚禮上敷钾,老公的妹妹穿的比我還像新娘。我一直安慰自己肄梨,他們只是感情好阻荒,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著众羡,像睡著了一般侨赡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天羊壹,我揣著相機與錄音蓖宦,去河邊找鬼。 笑死油猫,一個胖子當(dāng)著我的面吹牛稠茂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播情妖,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼睬关,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毡证?” 一聲冷哼從身側(cè)響起电爹,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎料睛,沒想到半個月后藐不,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡秦效,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年雏蛮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱州。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡挑秉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苔货,到底是詐尸還是另有隱情犀概,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布夜惭,位于F島的核電站姻灶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诈茧。R本人自食惡果不足惜产喉,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敢会。 院中可真熱鬧曾沈,春花似錦、人聲如沸鸥昏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吏垮。三九已至障涯,卻和暖如春罐旗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唯蝶。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工尤莺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人生棍。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓颤霎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涂滴。 傳聞我的和親對象是個殘疾皇子友酱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容