99re6这里有精品热视频,捆绑调教视频在线观看,国产99久久亚洲综合精品,国产综合久久久久久鬼色,精品欧美成人高清在线观看

服務(wù)熱線 400-660-8066

網(wǎng)站建設(shè)

網(wǎng)站建設(shè)

站內(nèi)資訊
網(wǎng)站建設(shè) / 站內(nèi)資訊 / 行業(yè)資訊 / 正文

外貿(mào)獨(dú)立站商城之Stripe境外支付接口對接

來源: All文章
發(fā)布時間:2023-03-23 15:33:09

  外貿(mào)獨(dú)立站是做外貿(mào)的公司自己開設(shè)的獨(dú)立品牌商城,主要區(qū)別于商城平臺如亞馬遜、阿里巴巴等,優(yōu)點(diǎn)是自己的地盤自己說了算,缺點(diǎn)是需要自己推廣引流,適合有一定品牌的商家。

  大部分外貿(mào)公司都是兩者都做,從商品平臺推廣獲客,然后把流量引入自己的品牌商城,打造自己的私域流量商城。

  Stripe支付公司是由一對來自愛爾蘭的天才兄弟CollisonBrothers一手創(chuàng)辦的,他們表示隨著美國最大的民營金融科技公司進(jìn)入小企業(yè)領(lǐng)域,新一輪融資使其價值增加了一半以上。

  KlipC分析稱,Stripe的商業(yè)模式主要是梳理目前有的支付方式,將不同的支付方式打包成一套SDK接口,通過整體接入,降低用戶的接入成本,以收取手續(xù)費(fèi)或者服務(wù)盈利。目前在金融行業(yè),很多公司已經(jīng)采用了Stripe的支付通道,比起傳統(tǒng)通道,Stripe效率更高,成本更低。

  第一步:安裝類庫

  composerrequirestripe/stripe-ph

  第二步后臺控制器:

  functioncreate(){

  \Stripe\Stripe::setApiKey($this-clientSecret);//私鑰

  try{

  $jsonStr=file_get_contents('php://input');

  $jsonObj=json_decode($jsonStr);//獲取頁面參數(shù)

  $arr=object_array($jsonObj);//轉(zhuǎn)換為數(shù)組

  $order_id=$arr['items'][0]['order_id'];//訂單單號

  $order=db('order')-where('order_id',$order_id)-find();//查找訂單

  //訂單是否存在和支付狀態(tài)

  if(empty($order)){

  echocan'tfindorder!;

  exit();

  }

  if($order['pay_status']==20){

  echo'Theorderwaspaid!';

  exit();

  }

  $request=Request::instance();

  $base_url=$request-domain();//獲取網(wǎng)址

  $time=time();

  //判斷支付訂單是不是已經(jīng)生成

  if(!$order['stripe_pay']||$time-$order['stripe_time']30*60){

  $currency_list=ExchangeRateModel::getFront();

  $currency=$currency_list['code'];

  $total_amount_currency=$order['pay_price'];

  $paymentIntent=\Stripe\PaymentIntent::create([

  'amount'=$total_amount_currency*100,//訂單金額

  'currency'=$currency,

  'automatic_payment_methods'=[

  'enabled'=true,

  ],

  ]);

  $output=[

  'clientSecret'=$paymentIntent-client_secret,

  ];

  $transaction=explode('_secret_',$paymentIntent-client_secret);//記錄生成的支付單號,單號后面會加單號_secret_安全碼

  $transaction_id=$transaction[0];

  db('order')-where('order_id',$order_id)-update(['stripe_pay'=$paymentIntent-client_secret,'stripe_time'=$time,'transaction_id'=$transaction_id]);//記錄單號

  }else{

  $output=[

  'clientSecret'=$order['stripe_pay'],

  ];

  }

  //CreateaPaymentIntentwithamountandcurrency

  echojson_encode($output);

  }catch(Error$e){

  http_response_code(500);

  echojson_encode(['error'=$e-getMessage()]);

  }

  }

  三,前端

inkrel=stylesheethref=__STATIC__/css/style.css

inkrel=stylesheethref=__STATIC__/css/checkout.css

  scriptsrc=https://js.stripe.com/v3//script

  script

  varorder_id={$order_id}//訂單號

  varURL=/home/Stripepay

  varkey={$key}

  varbase_url={$base_url};

  /script

  scriptsrc=__STATIC__/js/checkout.jsdefer/script

  formid=payment-form

  pid=payment-element

 ?。?-Stripe.jsinjectsthePaymentElement--

  /

  buttonid=submit

  pclass=spinnerhiddenid=spinner/

  spanid=button-textPaynow/span

  /button

  pid=payment-messageclass=hidden/

  /form

  Checout.js

  //ThisisyourtestpublishableAPIkey.

  conststripe=Stripe(key);//公鑰

  //Theitemsthecustomerwantstobuy

  constitems=[{id:xl-tshirt,order_id:order_id}];

etelements;

  initialize();

  checkStatus();

  document

  .querySelector(#payment-form)

  .addEventListener(submit,handleSubmit);

  //Fetchesapaymentintentandcapturestheclientsecret

  asyncfunctioninitialize(){

  const{clientSecret}=awaitfetch(URL+/create,{

  method:POST,

  headers:{Content-Type:application/json},

  body:JSON.stringify({items}),

  }).then(res=res.json());

  elements=stripe.elements({clientSecret});

  constpaymentElement=elements.create(payment);

  paymentElement.mount(#payment-element);

  }

  asyncfunctionhandleSubmit(e){

  e.preventDefault();

  setLoading(true);

  console.log(elements);

  const{error}=awaitstripe.confirmPayment({

  elements,

  confirmParams:{

  //Makesuretochangethistoyourpaymentcompletionpage

  return_url:base_url+URL+/successful.html,//成功后,回跳地址

  },

  });

  //Thispointwillonlybereachedifthereisanimmediateerrorwhen

  //confirmingthepayment.Otherwise,yourcustomerwillberedirectedto

  //your`return_url`.ForsomepaymentmethodslikeiDEAL,yourcustomerwill

  //beredirectedtoanintermediatesitefirsttoauthorizethepayment,then

  //redirectedtothe`return_url`.

  if(error.type===card_error||error.type===validation_error){

  showMessage(error.message);

  }else{

  showMessage(Anunexpectederroroccured.);

  }

  setLoading(false);

  }

  //Fetchesthepaymentintentstatusafterpaymentsubmission

  asyncfunctioncheckStatus(){

  constclientSecret=newURLSearchParams(window.location.search).get(

  payment_intent_client_secret

  );

  if(!clientSecret){

  return;

  }

  const{paymentIntent}=awaitstripe.retrievePaymentIntent(clientSecret);

  switch(paymentIntent.status){

  casesucceeded:

  showMessage(Paymentsucceeded!);

  break;

  caseprocessing:

  showMessage(Yourpaymentisprocessing.);

  break;

  caserequires_payment_method:

  showMessage(Yourpaymentwasnotsuccessful,pleasetryagain.);

  break;

  default:

  showMessage(Somethingwentwrong.);

  break;

  }

  }

  //-------UIhelpers-------

  functionshowMessage(messageText){

  constmessageContainer=document.querySelector(#payment-message);

  messageContainer.classList.remove(hidden);

  messageContainer.textContent=messageText;

  setTimeout(function(){

  messageContainer.classList.add(hidden);

  messageText.textContent=;

  },4000);

  }

  //Showaspinneronpaymentsubmission

  functionsetLoading(isLoading){

  if(isLoading){

  //Disablethebuttonandshowaspinner

  document.querySelector(#submit).disabled=true;

  document.querySelector(#spinner).classList.remove(hidden);

  document.querySelector(#button-text).classList.add(hidden);

  }else{

  document.querySelector(#submit).disabled=false;

  document.querySelector(#spinner).classList.add(hidden);

  document.querySelector(#button-text).classList.remove(hidden);

  }

  }

  在平臺付款可以看到支付信息

  四,獲取支付狀態(tài):

  webhooks添加回調(diào)地址和事件

  charge.succeeded-支付成功后

  需要密鑰

  五、獲取回調(diào)信息,控制器

  publicfunctioncallback()

  {

  $endpoint_secret='密鑰';//;

  $payload=@file_get_contents('php://input');

  $sig_header=$_SERVER['HTTP_STRIPE_SIGNATURE'];

  $event=null;

  if($payload){

  try{

  $event=\Stripe\Webhook::constructEvent(

  $payload,$sig_header,$endpoint_secret

  );

  }catch(\Stripe\Exception\SignatureVerificationException$e){

  //Invalidsignature

  http_response_code(400);

  exit();

  }

  }

  $log_name=notify_url.log;

  $this-log_result($log_name,'pay-start|--'.$event-data-object-paymentIntent.'--|');

  //Handletheevent

  switch($event-type){

  case'charge.succeeded':

  $paymentIntent=$event-data-object;

  //$payment=json_decode($paymentIntent);

  $payID=$paymentIntent-payment_intent;

  $order_no=db('order')-where('transaction_id',$payID)-value('order_no');

  try{

  $total_money=$event-amount/100;

  //實(shí)例化訂單模型

  $model=$this-getOrderModel($order_no,10);

  //訂單信息

  $order=$model-getOrderInfo();

  if(empty($order)){

  echo'Ordernotexist';

  }

  $update_data['transaction_id']=$payID;

  $status=$model-onPaySuccess(20,$update_data);

  $this-log_result($log_name,'order_no:'.$order_no.'pay|--'.$paymentIntent-payment_intent.'--|'.'status:'.$status);

  if($status==false){

  echo$model-getError();

  }

  }catch(Exception$e){

  $this-error('PayError!','home/member/order');

  //echo$e.',支付失敗,支付ID【'.$paymentId.'】,支付人ID【'.$PayerID.'】';

  //exit();

  }

  break;

  case'charge.attached':

  $paymentMethod=$event-data-object;

  $this-log_result($log_name,'pay-attached|--'.$event-type.'--|');

  break;

  //...handleothereventtypes

  default:

  $this-log_result($log_name,'pay-fail|--'.$event-type.'--|');

  echo'Receivedunknowneventtype'.$event-type;

  }

  }

* 文章來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系客服刪除處理。
在線 咨詢

添加動力小姐姐微信

微信 咨詢

電話咨詢

400-660-8066

我們聯(lián)系您

電話 咨詢
微信掃碼關(guān)注動力小姐姐 X
qr