Stripe国际支付平台接入

Stripe 是一家科技公司,致力于为互联网经济打造基础设施。所有公司,无论规模大小,从初创公司到上市企业,都可以用我们的软件来收款和管理他们的线上业务。

引用stripe 公司介绍的一段话:“我们的使命是:增加互联网 GDP”。

Stripe支持130+种币值。

首先我需要在Stripe平台拿到俩个参数【可发布密钥】和【密钥】在这里:

然后我们就可以用 这俩个参数接入支付。

PHP开发为例

首页安装stripe依赖包

//安装依赖
composer require stripe/stripe-php//引用
require_once('vendor/autoload.php');

然后安装好之后在服务端创建一个alipay支付:

      \Stripe\Stripe::setApiKey($_ENV["STRIPE_SECRET_KEY"]);header('Content-Type: application/json');try {// retrieve JSON from POST body$jsonStr = file_get_contents('php://input');$jsonObj = json_decode($jsonStr);$paymentIntent = \Stripe\PaymentIntent::create(['amount' => $money,'currency' => 'cny','automatic_payment_methods' => ['enabled' => true,],]);$output = ['clientSecret' => $paymentIntent->client_secret,];echo json_encode($output);} catch (Error $e) {http_response_code(500);echo json_encode(['error' => $e->getMessage()]);}

上面会返回一个client_secret,客户端通过ajax请求得到这个secret。

客户端页面:

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><title>Accept a payment</title><meta name="description" content="A demo of a payment on Stripe" /><meta name="viewport" content="width=device-width, initial-scale=1" /><link rel="stylesheet" href="/css/checkout.css" /><script src="https://js.stripe.com/v3/"></script></head><body><!-- Display a payment form --><form id="payment-form"><h3 style="text-align: center;">PayMoney:¥{{$moeny}}</h3><div id="payment-element"></div><button id="submit"><div class="spinner hidden" id="spinner"></div><span id="button-text">Pay now</span></button><div id="payment-message" class="hidden"></div></form><script>const stripe = Stripe('<?= $_ENV["STRIPE_PUBLISHABLE_KEY"]; ?>', {apiVersion: '2020-08-27',});</script><script src="/js/checkout.js?v=1.0" defer></script></body>
</html>

引用的checkout.js代码:

//测试
const items = [{ id: "xl-tshirt" }];
let elements;
initialize();
checkStatus();
document.querySelector("#payment-form").addEventListener("submit", handleSubmit);
async function initialize() {const { clientSecret } = await fetch("/index/getStripePay", {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({ items }),}).then((r) => r.json());elements = stripe.elements({ clientSecret });const paymentElement = elements.create("payment");paymentElement.mount("#payment-element");
}async function handleSubmit(e) {e.preventDefault();setLoading(true);const { error } = await stripe.confirmPayment({elements,confirmParams: {// Make sure to change this to your payment completion pagereturn_url: `${window.location.origin}/index/payresult`,},});if (error.type === "card_error" || error.type === "validation_error") {showMessage(error.message);} else {showMessage("An unexpected error occured.");}setLoading(false);
}// Fetches the payment intent status after payment submission
async function checkStatus() {const clientSecret = new URLSearchParams(window.location.search).get("payment_intent_client_secret");if (!clientSecret) {return;}const { paymentIntent } = await stripe.retrievePaymentIntent(clientSecret);switch (paymentIntent.status) {case "succeeded":showMessage("Payment succeeded!");break;case "processing":showMessage("Your payment is processing.");break;case "requires_payment_method":showMessage("Your payment was not successful, please try again.");break;default:showMessage("Something went wrong.");break;}
}// ------- UI helpers -------function showMessage(messageText) {const messageContainer = document.querySelector("#payment-message");messageContainer.classList.remove("hidden");messageContainer.textContent = messageText;setTimeout(function () {messageContainer.classList.add("hidden");messageText.textContent = "";}, 4000);
}// Show a spinner on payment submission
function setLoading(isLoading) {if (isLoading) {// Disable the button and show a spinnerdocument.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");}
}

在浏览器打开支付页面如图:有 Alipay 和银行卡2种支付方式

 下一步客户支付成功后服务端做回调验证:

header('Content-Type: application/json');$input = file_get_contents('php://input');
$body = json_decode($input);
$event = null;try {// Make sure the event is coming from Stripe by checking the signature header$event = \Stripe\Webhook::constructEvent($input,$_SERVER['HTTP_STRIPE_SIGNATURE'],$_ENV['STRIPE_WEBHOOK_SECRET']);
}
catch (Exception $e) {http_response_code(403);echo json_encode([ 'error' => $e->getMessage() ]);exit;
}if ($event->type == 'payment_intent.succeeded') {// Fulfill any orders, e-mail receipts, etc// To cancel the payment you will need to issue a Refund (https://stripe.com/docs/api/refunds)error_log('💰 Payment received!');
}
else if ($event->type == 'payment_intent.payment_failed') {error_log('❌ Payment failed.');
}echo json_encode(['status' => 'success']);

这样我们就成功地接入Stripe支付平台了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62492.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TP5集成PayPal支付

项目需要使用到PayPal支付,在网上找了一圈大多写的太过简陋不易看懂,在这里详细记录集成过程方便后期使用. 第一步:下载PayPal-PHP-SDK集成到项目中 最新SDK下载地址: https://github.com/paypal/PayPal-PHP-SDK/releases 官方英文文档:点击打开链接 下载sdk解压,我们需要使用…

Android PayPal支付

最近集成完PayPal支付&#xff0c;记录一下集成注意事项。 一、PayPal版本选择 由于官方不再支持旧版的"PayPal-Android-SDK"&#xff0c;所以决定直接集成"Native Checkout SDK"。 二、集成环境 我是在Macos上开发&#xff0c;之前一直用的Android St…

如何在网站集成Payssion的国外支付方式?

如果你的用户来自海外&#xff0c;那你可能已经接入paypal ,信用卡&#xff0c;西联来收款。 今天我们再介绍另一种收款方式&#xff0c;既能极大的提高你网站的转化率&#xff0c;且在很多国家使用率高于paypal和信用卡。 这就是海外本地支付方式&#xff08;如中国的本地支…

仿牌独立站如何通过PayPal.Me亲友付进行收款

14 5月 先来看一段PP官方对于paypal me的介绍: PayPal.Me是什么 PayPal.Me是一种与您的企业账户相联的个性化链接。您仅需为自己或您的企业创建独特的自定义链接&#xff0c;分享出去即可轻松收款。这意味着&#xff0c;您无需再进行繁琐的银行转账&#xff0c;可轻松享受Pa…

stripe国际支付(对接支付宝、微信)

前言&#xff1a;stripe国际支付现在网上资料很少&#xff0c;且不支持中国&#xff0c;所以如果要用需要去支持的国家注册商户&#xff0c;官网的java demo是用的spark框架&#xff0c;我这里用的spring&#xff0c;验签需要手动验签&#xff0c;且不能用官网的方法 正文&…

再度盈利,搜狐稳了?

2016年在宣布要用3年时间回归互联网舞台中心之后&#xff0c;很长一段时间内张朝阳积极活跃在各种社交媒体上&#xff0c;完全是一派“积极出山”的姿态。而后畅游从美股退市&#xff0c;搜狗“卖身”腾讯&#xff0c;一系列的收缩动作又似乎是在逐渐远离喧嚣。 而在最近三年&a…

宝宝入托,爸妈要避开这5种心态

孩子入托&#xff0c;父母也要做好心理准备&#xff0c;尤其需要避免以下5种常见的、不良心理状态&#xff0c;否则会加重孩子入托的困难度。 01.“生离死别式”的入托状态 即每次送孩子入园&#xff0c;就像一场生离死别。宝宝屋里哭&#xff0c;家长屋外哭&#xff0c;最后多…

小孩从小就学习编程,真的有必要吗?

现今&#xff0c;许多面向儿童的计算机教程和编程语言十分风行&#xff0c;那么是否人人都应该从小学计算机呢&#xff1f; 美国前总统奥巴马曾表示&#xff0c;应该“向每个学生提供动手式的计算机科学和数学课程&#xff0c;从一开始就让他们为将来的工作做好准备。”不久&am…

你喜欢读书,还是听书?

前段时间在我的星球里做了一个小调研&#xff0c;我看一些知识付费的课程素材&#xff0c;我发现我的阅读速度&#xff0c;是播放语音效率的5倍以上&#xff0c;十几分钟的语音课程&#xff0c;我看文字可能两分钟就看完了。但我知道&#xff0c;很多人还是更喜欢聆听。 实际上…

小孩厌学,与其说教,不如和他写个游戏

表弟又闹着不去幼儿园了,我得想个办法让他体会到学习的快乐和意义…… 带娃真难 玩了一个周末,玩舒服了,周一起床后,一听要去学校,就不干了,死活不去,对我们各种撒(威)泼(逼)打(利)滚(诱),实在招架不住,只能妥协了,虽然我可以扛起他,塞进校车里,但受过良好…

20本父母必读的亲子教育书籍

作者注&#xff1a;有位好朋友成为母亲没多久&#xff0c;向我提出一个要求&#xff0c;说不知道怎么教孩子&#xff0c;看我是否能帮助推荐一些这方面的书籍。经过一段时间的搜索和整理&#xff0c;给她整理出一套书单&#xff0c;朋友看了后&#xff0c;说受益匪浅。现在她的…

读懂婴幼儿心理学,不要随便责怪孩子

读懂婴幼儿心理学&#xff0c;不要随便责怪孩子 一、不知道孩子在0-6岁时存在各种敏感期&#xff0c;把孩子在敏感期的表现当成不乖的行为斥责孩子&#xff0c;违背了孩子的天性&#xff0c;造成他的痛苦&#xff0c;留下心理隐患。 孩子在0-6岁时存在各种各样的敏感期&a…

和孩子读书学习的一点心得

这是学习笔记的第 2386篇文章 最近带着孩子做了一些实验和游戏&#xff0c;也总结了几个经验和技巧。 #1 小步迭代&#xff0c;做电路实验 最近带着孩子做电路实验&#xff0c;和上一次玩电路实验已经隔了好一段时间&#xff0c; 孩子应该都基本忘了那种感觉了&#xff0c;所以…

读书会招募 | 一起来读《蛤蟆先生去看心理医生》吧

Hello&#xff0c;大家好&#xff0c; 欢迎来到壹脑云读书圈&#xff0c;我是瘦瘦~ 随着国家经济社会的快速发展&#xff0c;人们的心理问题逐渐增多&#xff0c;新冠疫情也对人们的心理健康带来了或多或少的消极影响。 在此背景下&#xff0c;面对心理咨询&#xff0c;一方…

请告诉孩子:努力读书,是为将来拥有更多选择的权利,而不是被迫谋生

请告诉孩子&#xff1a;努力读书&#xff0c;是为将来拥有更多选择的权利&#xff0c;而不是被迫谋生 01 现在的孩子津津乐道于几个文化不高、但事业有成的名人&#xff0c;用于堵住家长苦口婆心的嘴。 然而事实是&#xff0c;这样的人只是少数&#xff0c;大多数不爱学习的…

经常看书的人和不看书的人有什么区别?

只要能做到高效看经典书籍&#xff0c;对个人提升一定是飞快的&#xff01; 其实能坚持每天看书两小书&#xff08;武侠言情之类的杂书除外&#xff09;&#xff0c;已经超过99%的人了。 99%并不夸张&#xff0c;甚至会更多&#xff0c;我们中的很多人除了读书时期会看书&…

外贸大环境下soho人策略

前阵子也跟一个工厂在聊&#xff0c;现在普遍毛利率只有5%-6%&#xff0c;根本不敢涨价&#xff0c;能不降价就不错了&#xff08;汇率在涨&#xff0c;所以有的客户还会要求降价&#xff09;。 卷是一定的。而且&#xff0c;各位如果有了解过拼多多的TEMU业务的&#xff0c;应…

传统外贸B2B企业如何转型为跨境电商B2B

国内传统的外贸B2B产业深度仰赖出口商、代理商、参展等方式&#xff0c;但因为新冠疫情使得传统外贸的秩序被打乱&#xff0c;这对外贸企业有着不小的冲击。因此在政策拉动、市场需求驱动及数字技术进步等多重力量共同作用下&#xff0c;许多传统外贸企业纷纷开始转型跨境电商B…

国内出海企业常见的跨境网络问题分析及解决方案

经济全球化趋势发展得如火如荼&#xff0c;越来越多的中国企业走出国门&#xff0c;兴起包括跨境电商、虚拟商品、游戏出海等新贸易形式。 但在业务开拓过程中&#xff0c;由于远距离传输的特殊性&#xff0c;出海企业经常面临网络传输慢、不稳定、延迟、掉线等网络问题&#x…

B2B外贸行业如何利用TikTok打开海外销售渠道-跨境知道

过去数年&#xff0c;中国供应链能力不断提升&#xff0c;生产物资过剩&#xff0c;移动互联网红利见顶&#xff0c;加上政策因素&#xff0c;越来越多的中国企业开始出海寻求增长。根据海关总署发布的数据显示&#xff1a;2021年&#xff0c;我国货物贸易进出口总值39.1万亿元…