stripe支付php实现过程

记录stripe支付开发过程
        stripe平台界面
        创建订单并跳转到stripe 的支付平台
        订单创建成功后跳转到第三方支付页面
        Webhook使用教程(支付回调)
        解析支付回调

记录stripe支付开发过程

这是我第一次接触支付,leader让我开发一个新项目选用stripe作为支付平台

先简单描述一下过程,只需要创建一个html页面,引入两个js文件,一个php文件即可创建订单并跳转到第三方页面
stripe平台界面

账号就别问我怎么注册了,咱这是一个记录开发过程
下面这个就是登陆后的界面

在这里插入图片描述

密钥
在这里插入图片描述
话不多说直接上代码
创建订单并跳转到stripe 的支付平台

需要在html页面引入两个js文件,具体看完整案例
stripe官方完整php案例

create.php

$stripe = new StripeClient('密钥,不是那个可发布密钥,是第二个');//创建一个函数存储请求成功返回的信息,后续可以存储到订单中$session = $stripe->checkout->sessions->create(['success_url' =>  DOMAIN_NAME.'/user-page/recharge-order','cancel_url' => DOMAIN_NAME.'/user-page/recharge','payment_method_types' => ['card'],'line_items' => [['currency' => 'usd','amount' => $params['money']*100,'name' => $params['user_id'],'quantity' => 1,],],'mode' => 'payment',]);

请求POST主体(在stripe管理者平台的日志中可以看到)

{"success_url": "http://*****/user-page/recharge-order","cancel_url": "http://****/user-page/recharge","payment_method_types": {"0": "card"},"line_items": {"0": {"currency": "usd","amount": "6200","name": "23","quantity": "1"}},"mode": "payment"
}

响应正文

{"id": "cs_test_bj5amGjLeYQNUzSt4Hoku80gQnJQ4DXJJlnUlYT1nn5f8EFu0KJyUK2T","object": "checkout.session","allow_promotion_codes": null,"amount_subtotal": 6200,"amount_total": 6200,"billing_address_collection": null,"cancel_url": "http://*****/user-page/recharge","client_reference_id": null,"currency": "usd","customer": null,"customer_email": null,"display_items": [{"amount": 6200,"currency": "usd","custom": {"description": null,"images": null,"name": "23"},"quantity": 1,"type": "custom"}],"livemode": false,"locale": null,"metadata": {},"mode": "payment",//订单号,一般存这个到你数据库里面"payment_intent": "pi_1HPPwrEYKdmCGR3wEfTUoIbZ","payment_method_types": ["card"],"payment_status": "unpaid","setup_intent": null,"shipping": null,"shipping_address_collection": null,"submit_type": null,"subscription": null,"success_url": "http://*****/user-page/recharge-order","total_details": {"amount_discount": 0,"amount_tax": 0}
}

订单创建成功后跳转到第三方支付页面

测试环境的卡号看这里测试卡号

Webhook使用教程(支付回调)

界面简洁如图
选择一个你要监听的事件
这里我选的checkout.session,当有支付成功事件的时候就会带加密后的参数访问我给他的接口

解析支付回调

找到密钥签名然后开始写回调方法

Stripe::setApiKey('密钥');$endpoint_secret = '回调密钥签名';$payload = @file_get_contents('php://input');$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];$event = null;try {$event = Webhook::constructEvent($payload, $sig_header, $endpoint_secret);} catch(\UnexpectedValueException $e) {// Invalid payloadhttp_response_code(400);exit();} catch(\Stripe\Exception\SignatureVerificationException $e) {// Invalid signaturehttp_response_code(400);exit();}switch ($event->type) {case 'charge.succeeded':$succeeded = $event->data->object;if ($succeeded->status == 'succeeded'){//目前先直接拿金额进行对比,后续再考虑汇率换算$dbOrder = OrderModel::find()->select([])->where(['payment_order_id'=>$succeeded->payment_intent])->asArray()->one();if ($dbOrder['money']*100 == $succeeded->amount){OrderModel::updateInfo(['status'=>OrderModel::ALREADY_PAYMENT,'pay_time'=>$succeeded->created,'payment_channel_name'=>\Yii::$app->request->get('payment_channel_name')],['payment_order_id'=>$succeeded->payment_intent,'status'=>OrderModel::NON_PAYMENT]);$package = OrderService::getInstance()->packageConvert($dbOrder['product_name']);// 更新用户次数并且记录ip行为ActionLogModel::updateProxyTimes($package['product_name'],$dbOrder['user_id'],ActionLogModel::RECHARGE_PROXY_TIME);}}break;default:// Unexpected event typehttp_response_code(400);exit();}http_response_code(200);

到这里就结束了,后续再补充,有什么需要补充的也可以评论留言

stripe海外支付php教程相关推荐

  1. 拉美最火平台Mercado Libre绑定连连跨境支付收款教程!

    随着Amazon.Lazada.Shopee等这些平台的竞争越来越大,大家都在寻找其他的蓝海市场.国内卖家较少入驻的拉美地区的跨境平台,就越来越受到大家的重视.Mercado Libre成立于1999 ...

  2. 德国跨境电商real.de绑定连连跨境支付收款教程!

    Real Digital成立于2015年,是德国零售巨头Real集团的一部分.随着2016年收购电商平台HitMeister,real.de发展成为一个技术成熟且家喻户晓的电商平台.这一被无数卖家看好 ...

  3. 支付接口教程,详解支付宝接口(二)

    支付宝的接口向来集成过程都让人觉得比较舒服,只有APP支付相对复杂,但也只是配置上复杂一些,只要清楚原理相信也不是什么难事.下面是以前介绍双钥加密原理的传送门: 支付接口教程特别篇,公钥与私钥,双钥加 ...

  4. PHP支付接口教程,详解微信支付(二)

    PC扫码支付 扫码支付首先是要分清楚两种模式: [模式一]:商户后台系统根据微信支付规则链接生成二维码,链接中带固定参数productid(可定义为产品标识或订单号).[模式二]:商户后台系统调用微信 ...

  5. atitit.微信支付的教程文档 attilax总结

    atitit.微信支付的教程文档 attilax总结 1. 支付流程概览 1 2. 设置支付起始目录   host/app/paydir/ 1 3. 设置oauth验证域名 1 4. 测试目录 可以使 ...

  6. php微信公众号支付实例教程,php微信支付之公众号支付功能

    这篇文章主要为大家详细介绍了php微信支付之公众号支付功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 网上的很多PHP微信扫码支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后 ...

  7. Stripe 银行卡支付功能初步指南(Java)

    Stripe 国外银行卡支付功能指南(Java) 简介 编写这篇文章的目的就是~~没有什么目的.网上关于stripe银行卡支付代码很多,有写得很好的,但是太多太杂了,不系统.所以我就结合项目中实际应用 ...

  8. 付呗聚合支付快速教程——导读

    一.前文 本专栏基于Java Spring Boot后端+微信小程序前端实现自建软件系统 通过本专栏,可快速对接付呗接口,快速集成付呗聚合支付 集成付呗聚合支付,目的是 微信支付的费率更低 分账提现更 ...

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

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

  10. Qoo10趣天网店铺绑定连连跨境支付收款教程!

    Qoo10趣天网是一家整合多个国家,多个购物平台于一体的电子购物平台,经营范围广,覆盖国家多,当前,已在日本和新加坡等5个国家运营了7个购物网站平台,并拟定在不久的将来继续向其他亚洲国家和地区扩充和发 ...

最新文章

  1. openstack-swift云存储部署(一)
  2. How to consume AIF service(即WCF service) in SSIS project
  3. python怎么接收前端参数_Python常驻任务实现接收外界参数代码解析
  4. wp博客写文章500错误_500多个博客文章教我如何撰写出色的文章
  5. vs2010的sdf文件和ipch文件夹
  6. 超全Typora快速入门
  7. 利用对象存储多种方式 保障OSS数据安全
  8. Python 返回值、方法和函数的区别
  9. 动我 Java?是时候让甲骨文退休了!
  10. js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...
  11. [UE4]Size Box
  12. 呼和浩特php平均工资,2019年内蒙古平均工资出炉
  13. vblog 的 前景展望
  14. 12345政府热线报告
  15. 17_微信小程序之抖音微视无限滑动视频列表自定义组件编写
  16. Java基础习题(四)
  17. MySQL 查询最好的前/后3条
  18. 智慧交管可视化决策系统
  19. 高性能MySQL(3th)(第一章 MySQL概述) —— 04 InnoDB和MyISAM
  20. TQ2440从nfs网络文件系统启动

热门文章

  1. 【论文解读 KDD 2019 | GATNE 】Representation Learning for Attributed Multiplex Heterogeneous Network
  2. AirDrop不工作?使用这 15 个技巧快速修复它
  3. postgresql 存储过程处理json字符串
  4. 记录下如何判断错误:no such file or directory
  5. 树为什么能长这么高?
  6. GPU视频压缩1—Flexible CTU-level parallel motion estimation by CPU and GPU pipeline for HEVC
  7. 幼儿园故事导入语案例_幼儿园故事教案导入语
  8. 2021年N1叉车司机模拟考试题库及N1叉车司机操作证考试
  9. 计算机开机显示器不亮,电脑开机显示器不亮,小编教你电脑显示器不亮怎么解决...
  10. java win7 管理员权限_Win7系统如何一键取得管理员权限