Deprecated: Required parameter $cat_id follows optional parameter $type in /www/wwwroot/ebimall.com/systems/hong.php on line 2088

Deprecated: Required parameter $where follows optional parameter $tree_id in /www/wwwroot/ebimall.com/systems/hlb.php on line 3505
Braintree PayPal 支付网关开发(二)_小龙人的博客188bio精品生物—专注于实验室精品爆款的电商平台 - 蚂蚁淘旗下精选188款生物医学科研用品
您好,欢迎您进入188进口试剂采购网网站! 服务热线:4000-520-616
蚂蚁淘商城 | 现货促销 | 科研狗 | 生物在线

Braintree PayPal 支付网关开发(二)_小龙人的博客

1. 开发流程图这里再贴一下 很重要
\"在这里插入图片描述\"
2. 前端页面
    2.1 代码

 div class wrapper  div class checkout container  div style text-align:center;  span style font-size:22px; PayPal支付SandBox演示 /span  /div  br /  form id payment-form method post action /PayPal/SendNonce style width: 500px; border: 2px solid black;margin-left: 31%; height: 350px;  section style text-align: center; id sectionID  br / br /  label for amount  span class input-label style font-size: 16px; Amount: /span  input id amount name amount type tel min 0.01 placeholder Amount value 0.01  /label  /section  input id nonce name payment_method_nonce type hidden /  img style margin-left: 33%; margin-top: 8%; id paypal-button src https://www.paypalobjects.com/digitalassets/c/website/marketing/apac/C2/logos-buttons/34_Grey_CheckOut_Pill_Button.png  div id shippingID  br /  span class shipClass style font-size: 18px;font-weight: bold; margin-left: 35%; Shipping Address /span br /  hr /  span class shipClass style font-size: 16px; FirstName: /span nbsp; input name id payerFirstName / br /  span class shipClass style font-size: 16px; LastName: /span nbsp; nbsp; input name LastName id payerLastName br /  span class shipClass style font-size: 16px; Email: /span nbsp; input name Email id payerEmail br /  span class shipClass style font-size: 16px; City: /span nbsp; nbsp; nbsp; nbsp; input name City id payerCity br /  span class shipClass style font-size: 16px; Line1: /span nbsp; input name Line1 id payerLine1 br /  span class shipClass style font-size: 16px; Line2: /span nbsp; input name Line2 id payerLine2 br /  span class shipClass style font-size: 16px; PostalCode: /span nbsp; input name PostalCode id payerPostalCode br / br /  img style margin-left: 34%; id btnSubimit src https://www.paypalobjects.com/digitalassets/c/website/marketing/apac/C2/logos-buttons/34_Grey_CheckOut_Pill_Button.png  /div  /form  /div  /div  script src ~/Content/jquery-2.1.1.js /script  script src https://js.braintreegateway.com/web/3.29.0/js/client.min.js /script  script src https://js.braintreegateway.com/web/3.29.0/js/hosted-fields.min.js /script  script src https://js.braintreegateway.com/web/3.29.0/js/paypal.js /script  script src https://js.braintreegateway.com/web/3.29.0/js/paypal-checkout.js /script  script src https://js.braintreegateway.com/web/3.29.0/js/three-d-secure.js /script  script  $(document).ready(function () { $( #shippingID ).hide(); $( #btnSubimit ).click(function () { $( #payment-form ).submit(); //GET 请求去拿TOKEN $.get( /PayPal/GetPayPalClienToken , function (Data) {  $(function () { var client_token Data; var paypalButton document.querySelector( #paypal-button  var cardButton document.querySelector( #card-button  braintree.client.create({ authorization: client_token //身份验证 }, function (clientErr, clientInstance) if (clientErr) {  return; //PayPal 支付 braintree.paypal.create({ client: clientInstance //客户端实例 }, function (paypalErr, paypalInstance) { if (paypalErr) { console.error( Error creating PayPal: , paypalErr); return; paypalButton.removeAttribute( disabled  paypalButton.addEventListener( click , function (event) { //支付按钮监听事件 paypalInstance.tokenize({ flow: checkout , amount: document.querySelector( #amount ).value, currency: AUD  }, function (tokenizeErr, payload) {  if (tokenizeErr) { if (tokenizeErr.type ! CUSTOMER ) { console.log( Error tokenizing: , tokenizeErr); return; // Tokenization succeeded  document.querySelector( #nonce ).value payload.nonce; $( #paypal-button ).hide(); $( #sectionID ).hide(); $( #shippingID ).show(); $( #payerFirstName ).val(payload.details.firstName); $( #payerLastName ).val(payload.details.lastName); $( #payerLine1 ).val(payload.details.shippingAddress.line1); $( #payerLine2 ).val(payload.details.shippingAddress.line2); $( #payerEmail ).val(payload.details.email); $( #payerCity ).val(payload.details.shippingAddress.city); $( #payerPostalCode ).val(payload.details.shippingAddress.postalCode); paypalButton.firstChild.innerHTML switch account  console.log( Paypal Got nonce: , payload.nonce); }, false); /script 

\"在这里插入图片描述\"
      2.2 选择PayPal支付后 JS提交支付信息给BratinTree服务器获取nonce及相关信息 页面如下
\"在这里插入图片描述\"
      2.3 JS中获取nonce及相关信息调试截图如下 \"在这里插入图片描述\"

      2.4 这里确认信息后选择PayPal支付 会转到后端去进行支付操作。

3. 后端
    3.1 PayPalController

public class PayPalController : Controller PayPalAPI payPalAPI new PayPalAPI(); public ActionResult Index() return View(); //获取TOKEN public string GetPayPalClienToken() ViewBag.ClientToken payPalAPI.GetPayPalClientToken(); return payPalAPI.GetPayPalClientToken(); public string SendNonce() decimal amount 0.0m; //获取收货地址信息 ShippingAddress shippingAddress new ShippingAddress(); amount Convert.ToDecimal(Request[ amount  shippingAddress new ShippingAddress { FirstName Request[ FirstName ], LastName Request[ LastName ], Email Request[ Email ], City Request[ City ], Line1 Request[ Line1 ], Line2 Request[ Line2 ], PostalCode Request[ PostalCode ] catch (FormatException e) return e.Message; //获取nonce var nonce Request[ payment_method_nonce  return payPalAPI.SendNonce(amount, nonce, shippingAddress);

        3.2 PayPalAPI

public class PayPalAPI #region Files private string Environment { get; set; } private string MerchantId { get; set; } private string PublicKey { get; set; } private string PrivateKey { get; set; } #endregion //Create Braintree Gateway Braintree网关初始化 public BraintreeGateway CreateGateway() Environment System.Environment.GetEnvironmentVariable( BraintreeEnvironment  MerchantId System.Environment.GetEnvironmentVariable( BraintreeMerchantId  PublicKey System.Environment.GetEnvironmentVariable( BraintreePublicKey  PrivateKey System.Environment.GetEnvironmentVariable( BraintreePrivateKey  if (MerchantId null || PublicKey null || PrivateKey null) Environment ConfigurationManager.AppSettings[ BraintreeEnvironment  MerchantId ConfigurationManager.AppSettings[ BraintreeMerchantId  PublicKey ConfigurationManager.AppSettings[ BraintreePublicKey  PrivateKey ConfigurationManager.AppSettings[ BraintreePrivateKey  return new BraintreeGateway(Environment, MerchantId, PublicKey, PrivateKey); //Get PayPal TOKEN public string GetPayPalClientToken() BraintreeGateway gateway CreateGateway(); string ClientToken gateway.ClientToken.Generate(); return ClientToken; //支付 public string SendNonce(decimal amount, string nonce, ShippingAddress shippingAddress) BraintreeGateway gateway CreateGateway(); var request new TransactionRequest Amount amount, PaymentMethodNonce nonce, Options new TransactionOptionsRequest SubmitForSettlement true ShippingAddress new AddressRequest FirstName shippingAddress.FirstName, LastName shippingAddress.LastName, PostalCode shippingAddress.PostalCode, StreetAddress shippingAddress.Line1 shippingAddress.Line2, //网关支付 Result Transaction result gateway.Transaction.Sale(request); //支付成功 if (result.IsSuccess()) Transaction transaction result.Target; else if (result.Transaction ! null) return Transaction is null,Id result.Transaction.Id; else string errorMessages  foreach (ValidationError error in result.Errors.DeepAll()) errorMessages Error: (int)error.Code - error.Message \\n  return errorMessages; return 支付完成 

4. 整体流程
\"在这里插入图片描述\"
5. Braintree sandbox中的交易记录
\"在这里插入图片描述\"
6. 源码 https://github.com/wangqilong1225/BratinTree_PayPal_Demo


新闻动态
行业前沿
技术文章
最新产品

188进口试剂采购网 www.188bio.cn -中国试剂网,试剂网,化学试剂网,国药试剂,抗体公司,试剂公司,试剂盒公司,苏州试剂公司,北京化学试剂公司,天津化学试剂,试剂商城,试剂代理,流式抗体 细胞库查询 sitemap