在本文中,让我们看看如何实施支付网关PHP源代码项目。我们已经在一篇用PHP语言集成的文章中清楚地解释了这个过程。但是所有技术的步骤都是相同的。因此,请阅读此处的集成指南。其实步骤很简单,我们只需要输入商户密钥和salt。
  
  源码:paywks.top/ka
  
  这里我有使用框架,因为支付网关不像简单的过程。我们需要手动设置一些更改并实施代码。所以当我们使用COREPHP时,会面临更多的错误处理困难。这就是为什么大多数开发人员建议使用Laravel、Codeigniter等框架的原因。
  

  支付网关PHP要遵循的步骤
  
  如果您是该类别的初学者,请阅读官方文档。之后,您对构建代码有了一些想法。第一步是选择最好的支付网关提供商之一。
  
  我希望你的系统上已经有下载节点,以提取依赖管理器。所以首先通过命令提示符创建Laravel项目。

  useShipu\Aamarpay\Aamarpay;
  
  $config=[
  
  'store_id'=>'Yourstoreid',
  
  'signature_key'=>'Yoursignaturekey',
  
  'sandbox'=>true,
  
  'redirect_url'=>[
  
  'success'=>[
  
  'route'=>'payment.success'
  
  ],
  
  'cancel'=>[
  
  'route'=>'payment.cancel'
  
  ]
  
  ]
  
  ];
  
  $payment=newAamarpay($config);

  上面的代码解释了连接到数据库的模块的必填字段。然后只有我们能够与数据库系统进行通信。否则,确切的数据不会在后端通信中传输。
  
  用法
  
  使用方式主要用于后端过程,例如数据如何在服务器端访问和存储。在这个项目中,我使用了MySQL数据库。它是95%的开发人员的主要推荐语言。
  
  传递付款网址
  
  为完全管理后端进程的支付网关服务器传递URL。这意味着获得转账的完全许可并从客户那里收到金额。

  use\Shipu\Aamarpay\Aamarpay;
  
  ...
  
  $payment=newAamarpay(config('aamarpay'));
  
  return$payment->customer([
  
  'cus_name'=>'ShipuAhamed',//Customername
  
  'cus_phone'=>'01616022669'//CustomerPhone
  
  'cus_email'=>'shipuahamed01@gmail.com',//Customeremail
  
  ])->transactionId()->amount(3500)->hiddenValue();
  
  or
  
  return$payment->customer([
  
  'cus_name'=>'ShipuAhamed',//Customername
  
  'cus_phone'=>'9854345483'//CustomerPhone
  
  'cus_email'=>'shipuahamed01@gmail.com',//Customeremail
  
  ])->amount(3500)->hiddenValue();

  出于演示目的,在上一节中提供了未经验证的详细信息。但在直播过程中,我们必须给出经过验证的信息。之后,只有特定客户能够发送和接收付款。如今,大多数人都进行在线支付,例如Payumoney、CCAvenue、网上银行、Phonepe和更多应用程序。
  
  支付网关流程
  
  一般我们在进行网上支付时,交易失败的情况有三种可能。那是,
  
  成功消息(金额将成功贷记/借记)
  
  失败(服务器忙)
  
  已取消(客户自己提出)

  Route::post('payment/success','YourMakePaymentsController@paymentSuccess')->name('payment.success');
  
  Route::post('payment/failed','YourMakePaymentsController@paymentFailed')->name('payment.failed');
  
  Route::post('payment/cancel','YourMakePaymentsController@paymentCancel')->name('payment.cancel');

  在全球大流行的时代,一个平稳运行的支付网关是经营具有大量在线业务的企业的关键。如果您已经在使用像BigCommerce这样的电子商务软件,那么您几乎不需要任何编码技能,因为该应用程序已经无缝内置了PayPal等主要支付网关。当您想将支付网关直接连接到您的网站时,这项技能就变得至关重要。如果您具备C#、Java或PHP编码技能,那么这些教程将使您更轻松地完成集成所选支付网关的步骤。
  
  PHP中的支付网关集成
  
  我们将以Stripe为例,向我们展示如何在PHP中进行支付网关集成。借助Stripe的支付网关,您可以通过集成结帐系统并启用支付功能,直接在您的网站上轻松接受信用卡。
  
  要在基于PHP的网站中集成Stripe支付网关,您需要实现以下功能。
  
  1、准备HTML表单以收集信用卡信息。
  
  2、创建Stripe令牌以安全地传输卡信息。
  
  3、提交包含卡详细信息的表格。
  
  4、验证卡并处理费用。
  
  5、在数据库中插入付款详细信息,以便向用户显示状态。
  
  测试条API密钥数据
  
  在启用Stripe支付网关集成之前,您需要对其进行彻底测试。要测试信用卡支付流程,您需要在您的Stripe帐户中生成TESTAPI密钥。
  
  1、登录您的Stripe帐户并导航至API页面。
  
  2、在测试数据部分下,您会看到列出了API密钥。要显示密钥,请单击显示测试密钥令牌按钮。
  
  收集Publishablekey和Secretkey以供稍后在脚本中使用。
  
  在继续之前,您可能需要查看文件结构:
  
  创建数据库表
  
  接下来,您需要在数据库中创建一个表来保存交易明细。接下来是在MySQL数据库中创建订单表的SQL。

  CREATETABLE`orders`(
  
  `id`int(11)NOTNULLAUTO_INCREMENT,
  
  `name`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
  
  `email`varchar(255)COLLATEutf8_unicode_ciNOTNULL,
  
  `card_num`bigint(20)NOTNULL,
  
  `card_cvc`int(5)NOTNULL,
  
  `card_exp_month`varchar(2)COLLATEutf8_unicode_ciNOTNULL,
  
  `card_exp_year`varchar(5)COLLATEutf8_unicode_ciNOTNULL,
  
  `item_name`varchar(255)COLLATEutf8_unicode_ciNOTNULL,
  
  `item_number`varchar(50)COLLATEutf8_unicode_ciNOTNULL,
  
  `item_price`float(10,2)NOTNULL,
  
  `item_price_currency`varchar(10)COLLATEutf8_unicode_ciNOTNULLDEFAULT'usd',
  
  `paid_amount`varchar(10)COLLATEutf8_unicode_ciNOTNULL,
  
  `paid_amount_currency`varchar(10)COLLATEutf8_unicode_ciNOTNULL,
  
  `txn_id`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
  
  `payment_status`varchar(50)COLLATEutf8_unicode_ciNOTNULL,
  
  `created`datetimeNOTNULL,
  
  `modified`datetimeNOTNULL,
  
  PRIMARYKEY(`id`)
  
  )ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;

  数据库配置(dbConfig.php)
  
  您将需要dbConfig.php文件来连接和选择数据库。在数据库凭证后指定数据库主机($dbHost)、用户名($dbUsername)、密码($dbPassword)和名称($dbName)。

  <?php
  
  //数据库凭据
  
  $dbHost='本地主机';
  
  $dbUsername='root';
  
  $dbPassword='*****';
  
  $dbName='codexworld';
  
  //连接数据库
  
  $db=newmysqli($dbHost,$dbUsername,$dbPassword,$dbName);
  
  //连接失败显示错误
  
  如果($db->connect_errno){
  
  printf("连接失败:%s\n",$db->connect_error);
  
  出口();
  
  }
  
  支付表格(index.php)
  
  JavaScript
  
  包括StripeJavaScript库,以将敏感信息直接从浏览器安全地发送到Stripe。
  
  <!--条纹JavaScript库-->
  
  <scripttype="text/javascript"src="https://js.stripe.com/v2/"></script>
  
  jQuery库不是使用Stripe所必需的;它仅用于此示例。
  
  <!--jQuery仅用于此示例;不需要使用Stripe-->
  
  <scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  
  在JavaScript代码中,将标识您网站的可发布API密钥设置为Stripe。stripeResponseHandler()函数创建一个一次性令牌并在支付表单HTML中插入一个令牌字段。
  
  <脚本类型="文本/javascript">
  
  //设置你的可发布密钥
  
  Stripe.setPublishableKey('Your_API_Publishable_Key');
  
  //回调以处理来自条带的响应
  
  功能stripeResponseHandler(状态,响应){
  
  如果(响应。错误){
  
  //启用提交按钮
  
  $('#payBtn').removeAttr("禁用");
  
  //在表单上显示错误
  
  $(".payment-errors").html(response.error.message);
  
  }别的{
  
  varform$=$("#paymentFrm");
  
  //获取代币id
  
  vartoken=response['id'];
  
  //将令牌插入表单
  
  form$.append("<inputtype='hidden'name='stripeToken'value='"
  
  +令牌+"'/>");
  
  //提交表单到服务器
  
  形式$.get(0).submit();
  
  }
  
  }
  
  $(文档).ready(函数(){
  
  //在表单提交
  
  $("#paymentFrm").submit(函数(事件){
  
  //禁用提交按钮以防止重复点击
  
  $('#payBtn').attr("已禁用","已禁用");
  
  //创建一次性令牌以向用户收费
  
  条纹.createToken({
  
  号码:$('.card-number').val(),
  
  cvc:$('.card-cvc').val(),
  
  exp_month:$('.card-expiry-month').val(),
  
  exp_year:$('.card-expiry-year').val()
  
  },stripeResponseHandler);
  
  //从回调中提交
  
  返回假;
  
  });
  
  });

 以下HTML表单收集用户信息(姓名和电子邮件)和卡详细信息(卡号、到期日期和CVC号)。为了进一步的卡支付处理,将表单提交给PHP脚本(submit.php)。

  <h1>使用Stripe收取55美元</h1>
  
  <!--显示createToken返回的错误-->
  
  <spanclass="payment-errors"></span>
  
  <!--条纹支付表单-->
  
  <formaction="submit.php"method="POST"id="paymentFrm">
  
  <p>
  
  <label>姓名</label>
  
  <inputtype="text"name="name"size="50"/>
  
  </p>
  
  <p>
  
  <label>电子邮件</label>
  
  <inputtype="text"name="email"size="50"/>
  
  </p>
  
  <p>
  
  <label>卡号</label>
  
  <inputtype="text"name="card_num"size="20"autocomplete="off"
  
  class="卡号"/>
  
  </p>
  
  <p>
  
  <label>简历</label>
  
  <inputtype="text"name="cvc"size="4"autocomplete="off"class="card-cvc"/>
  
  </p>
  
  <p>
  
  <label>过期时间(MM/YYYY)</label>
  
  <inputtype="text"name="exp_month"size="2"class="card-expiry-month"/>
  
  <跨度>/</跨度>
  
  <inputtype="text"name="exp_year"size="4"class="card-expiry-year"/>
  
  </p>
  
  <buttontype="submit"id="payBtn">提交付款</button>

 PHP库
  
  接下来,我们将使用StripePHP库来处理卡支付。该图书馆可在此处获得。
  
  验证和处理付款(submit.php)
  
  在此文件中,验证提交的卡详细信息,并使用StripePHP库处理费用。
  
  1、从提交的表单中获取令牌、卡详细信息和用户信息。
  
  包括StripePHP库。
  
  2、设置我们在StripeTestAPIData部分创建的Publishablekey和Secretkey。
  
  3、使用用户电子邮件和Stripe令牌将客户添加到Stripe。
  
  4、指定产品详细信息并向信用卡或借记卡收费。
  
  5、检索先前创建的费用详细信息。
  
  6、如果收费成功,订单和交易详情将被插入数据库。否则,将显示一条错误消息。

  //checkwhetherstripetokenisnotempty
  
  if(!empty($_POST['stripeToken'])){
  
  //gettoken,cardanduserinfofromtheform
  
  $token=$_POST['stripeToken'];
  
  $name=$_POST['name'];
  
  $email=$_POST['email'];
  
  $card_num=$_POST['card_num'];
  
  $card_cvc=$_POST['cvc'];
  
  $card_exp_month=$_POST['exp_month'];
  
  $card_exp_year=$_POST['exp_year'];
  
  //includeStripePHPlibrary
  
  require_once('stripe-php/init.php');
  
  //setapikey
  
  $stripe=array(
  
  "secret_key"=>"Your_API_Secret_Key",
  
  "publishable_key"=>"Your_API_Publishable_Key"
  
  );
  
  \Stripe\Stripe::setApiKey($stripe['secret_key']);
  
  //addcustomertostripe
  
  $customer=\Stripe\Customer::create(array(
  
  'email'=>$email,
  
  'source'=>$token
  
  ));
  
  //iteminformation
  
  $itemName="PremiumScriptCodexWorld";
  
  $itemNumber="PS123456";
  
  $itemPrice=55;
  
  $currency="usd";
  
  $orderID="SKA92712382139";
  
  //chargeacreditoradebitcard
  
  $charge=\Stripe\Charge::create(array(
  
  'customer'=>$customer->id,
  
  'amount'=>$itemPrice,
  
  'currency'=>$currency,
  
  'description'=>$itemName,
  
  'metadata'=>array(
  
  'order_id'=>$orderID
  
  )
  
  ));
  
  //retrievechargedetails
  
  $chargeJson=$charge->jsonSerialize();
  
  //checkwhetherthechargeissuccessful
  
  if($chargeJson['amount_refunded']==0&&empty($chargeJson
  
  ['failure_code'])&&$chargeJson['paid']==1&&$chargeJson['captured']==1){
  
  //orderdetails
  
  $amount=$chargeJson['amount'];
  
  $balance_transaction=$chargeJson['balance_transaction'];
  
  $currency=$chargeJson['currency'];
  
  $status=$chargeJson['status'];
  
  $date=date("Y-m-dH:i:s");
  
  //includedatabaseconfigfile
  
  include_once'dbConfig.php';
  
  //inserttansactiondataintothedatabase
  
  $sql=
  
  "INSERTINTOorders(name,email,card_num,card_cvc,card_exp_month,card_exp_year,
  
  item_name,item_number,item_price,item_price_currency,paid_amount,
  
  paid_amount_currency,txn_id,payment_status,created,modified)VALUES
  
  ('".$name."','".$email."','".$card_num."','".$card_cvc."','".$card_exp_month."',
  
  '".$card_exp_year."','".$itemName."','".$itemNumber."','".$itemPrice."','".$currency."',
  
  '".$amount."','".$currency."','".$balance_transaction."'
  
  ,'".$status."','".$date."','".$date."')";
  
  $insert=$db->query($sql);
  
  $last_insert_id=$db->insert_id;
  
  //iforderinsertedsuccessfully
  
  if($last_insert_id&&$status=='succeeded'){
  
  $statusMsg="<h2>Thetransactionwassuccessful.</h2>
  
  <h4>OrderID:{$last_insert_id}</h4>";
  
  }else{
  
  $statusMsg="Transactionhasbeenfailed";
  
  }
  
  }else{
  
  $statusMsg="Transactionhasbeenfailed";
  
  }
  
  }else{
  
  $statusMsg="Formsubmissionerror.......";
  
  }
  
  //showsuccessorerrormessage
  
  echo$statusMsg;

细心的小狗
1 声望0 粉丝

引用和评论

0 条评论