在本文中,让咱们看看如何施行领取网关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;