新闻详细
新闻当前位置:新闻详细

webhook和api什么区别,接收不到shopify webhook 发送post请求

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V: 152079-09430 ,欢迎咨询webhook接收端要求,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、webhook和api什么区别

这两种模式的区别有请求方式、数据处理、场景应用、通信模式。

1、请求方式:Webhook在满足某些条件时,外部系统有数据更新,才接收调用。API会在要求时执行操作,无论是否有数据发生更新。

2、数据处理:Webhook通常不会用于定期请求数据,仅在有新数据可用时触发。需要定期查询数据,更适合使用API。

3、场景应用:Webhook是前端不主动发送请求,完全由后端推送,主要用于推送资源或信息。API则常用于从其他网站访问用户数据,用于自己的应用程序。

二、PayPalH5方案接入服务端下单,无跳转

因为公司的业务是H5平台的,所以这里只介绍H5方案的接入说明。PayPal提供了丰富的和支付相关的能力,但是我公司的业务仅仅需要普通的一次性消耗付款,所以其它如订阅等功能我也没去了解,就不介绍了。还有注册账号的基本操作这里也不讲了,在PayPal官网按步骤操作即可。我们从创建开发者应用讲起。

点击https://developer.paypal.com/打开PayPal开发者中心,国内环境打开稍微有点满,耐心等待一下。打开后登陆注册好的账号,进入开发者后台,在【Myappscredentials】页面中选择sandbox选项卡创建一个沙箱应用,创建好后可以获得clientID和Secret。记录下这两个值,我们后面要用到。

最后可以给这个应用可以设置webhook,即触发某个事件(如完成付款)后,PayPal服务器通过此地址通知你。

因为我是H5平台接入,所有有两种方案可以选择,一种是RESTAPI,一种是JavascriptSDK方案。

RESTAPI方案:从服务端向PayPal服务器下单,下单完成后PayPal返回订单ID和支付链接,将支付链接传递给前端用户,用户跳转到PayPal的支付链接付款完成后,会通过跳转回你下单时设置的目的地址,如果你有在PayPal后台设置对应事件的webhook的话,PayPal服务器也会通知你用户已付款。然后你再去PayPal服务器确认订单,确认完成后即完成了整个流程。

JavascriptSDK方案:前端页面加载PayPalJS资源,渲染支付按钮,用户点击按钮PayPalSDK自动下单并打开支付页面,用户支付完成后前端返回支付结果,如果你有在PayPal后台设置对应事件的webhook的话,PayPal服务器也会通知你用户已付款。然后你再去PayPal服务器确认订单,确认完成后即完成了整个流程。

这两种方案各有优缺点。RESTAPI方案会跳出你的页面,支付完成再回来只能重新打开你的页面。JavascriptSDK方案下单是由前端完成的,服务端都不知道前端什么时候下单的,上来就被我否定了-_-。不过最终找到了一个结合RESTAPI和JavascriptSDK的第三种方案,既不用跳出页面,也可以由服务端下单。PayPal示例地址:https://developer.paypal.com/demo/checkout/#/pattern/server

下面就说明第三种方案的具体接入要点。

服务端请求下单接口。

请求Header中需要设置Content-Type:application/json和Authorization,Authorization可以使用BearerAccess-TokenorBasicclient_id:secret两种方式。使用BearerAccess-Token方式的话需要通过授权接口先获得Access-Token。如果使用Basicclient_id:secret方式的话直接BasicBase64Encode(client_id:secret)即可。

webhook接收端要求

请求参数中需要设置币种和金额,如果是单纯的使用RESTAPI方案的话,还需要再application_context中设置一个return_url。CURL示例如下:

下单完成后,会返回PayPal的订单ID,和PayPal的支付链接(approveurl)。将PayPal订单ID返回给前端JSSDK,PayPal会自动打开一个页面让用户付款,付款完SDK会通知你用户付款完成。如果再PayPal后台有配置付费事件(Checkoutorderapproved)的webhook的话,PayPal服务器也会通过webhook通知你用户已付款。

此时订单处于APPROVED状态,需要你请求Capturepaymentfororder接口去确认订单。CURL示例如下:

如果确认完成,PayPal会响应订单状态为COMPLETED,此状态表示订单已经完成了。

打开开发者后台,进入沙箱账号列表:https://developer.paypal.com/developer/accounts,点击Createaccount按钮创建沙箱付款账号,创建完成后点击账号列表后的View/editaccount按钮查看账号邮箱和密码。使用此账号即可在沙箱环境中完成付款。

服务端请求查询订单详情接口,按文档接入即可。

在开发者后台,应用列表页面选择Live选项卡,创建正式应用,获得正式clientID和Secret,替换沙箱密钥,并将沙箱接口替换成功正式接口即可。

如果需要服务端接收事件,也需要给正式应用配置对应的webhook。

沙箱接口地址:https://api-m.sandbox.paypal.com

三、接收不到shopifywebhook发送post请求

接收不到shopifywebhook发送post请求,解决方法如下:

执行此操作的最佳方法是设置webhooknotification,该ojit_a向服务器发送HTTPPOST请求,然后让服务器捕获POST并将其解析为XML。然后,我将通过一个php脚本读取XML,该脚本将更新我的数据库。

我的php没问题,但是我似乎无法弄清楚是如何在服务器上捕获webhook的。Webhook询问我要发送POST请求的URL。发现可以通过html,php,Access-Control-Allow-Origin等多种方式捕获POST请求。真正了解如何做到这些。我尝试过使用HTML隐藏操作表单,但似乎无法捕获XML。

【FUTURE PROGRAMMING COURSE】尊享对接老板

电话+V: 152079-09430

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

webhook接收端要求
Copyright2023未知推广科技