我正在开发一个电子商务移动应用程序,只使用magento 2 restapis。这是一个调用REST API来下单的流程。
一月一日
API --〉{{url}}/index.php/rest/V1/carts/mine
此API将返回唯一的购物车标识
2.Add products to cart
api --〉{{url}}/index.php/rest/V1/carts/mine/items
正文-〉
{
"cart_item": {
"quote_id": cartId,
"sku": skuName,
"qty": 1
}
}
3. Estimate Shipping Methods
网址--〉{{url}}/index.php/rest/V1/carts/mine/estimate-shipping-methods
正文-〉
{
"address": {
"region": "Trivandrum",
"region_id": 12,
"region_code": "CA",
"country_id": "IN",
"street": [
"Amstor house",
"Eramam"
],
"telephone": "5656565454",
"postcode": "670390",
"city": "Kazhakuttam",
"firstname": "Peter",
"lastname": "K",
"same_as_billing": 0,
"save_in_address_book": 0
}
}
这将返回基于送货地址的所有可能的送货方式。
[
{
"carrier_code": "freeshipping",
"method_code": "freeshipping",
"carrier_title": "Free Shipping",
"method_title": "Free",
"amount": 0,
"base_amount": 0,
"available": true,
"error_message": "",
"price_excl_tax": 0,
"price_incl_tax": 0
}
]
一个月六个月一次
网址--〉{{url}}/index.php/rest/V1/carts/mine/shipping-information
正文数据-〉
{
"addressInformation": {
"shipping_address": {
"region": "Trivandrum",
"region_id": 12,
"region_code": "CA",
"country_id": "IN",
"street": [
"Amstor house",
"Eramam"
],
"telephone": "5656565454",
"postcode": "670390",
"city": "Kazhakuttam",
"firstname": "Peter",
"lastname": "K",
},
"billing_address": {
"region": "Trivandrum",
"region_id": 12,
"region_code": "CA",
"country_id": "IN",
"street": [
"Amstor house",
"Eramam"
],
"telephone": "5656565454",
"postcode": "670390",
"city": "Kazhakuttam",
"firstname": "Peter",
"lastname": "K",
},
"shipping_method_code": "freeshipping",
"shipping_carrier_code": "freeshipping"
}
}
这将返回所有可能的付款方式。这里我使用paypal_express
付款。
一米九一米
这里我将支付金额使用paypal cordova plugin。还配置了在贝宝帐户的IPN [{{url}}/paypal/ipn/]
此api将返回以下数据,
{
"client": {
"environment": "sandbox",
"paypal_sdk_version": "2.14.4",
"platform": "Android",
"product_name": "PayPal-Android-SDK"
},
"response": {
"create_time": "2016-11-19T05:25:46Z",
"id": "PAY-5VS11410F5341972MLAX6ETA",
"intent": "sale",
"state": "approved"
},
"response_type": "payment"
}
一个月一个月
网址--〉{{url}}/index.php/rest/V1/carts/mine/payment-information
数据-〉
{
"cartId": 3,
"billingAddress": {
"region": "Trivandrum",
"region_id": 12,
"region_code": "CA",
"country_id": "IN",
"street": [
"Amstor house",
"Eramam"
],
"telephone": "5656565454",
"postcode": "670390",
"city": "Kazhakuttam",
"firstname": "Peter",
"lastname": "K"
},
"paymentMethod": {
"method": "paypal_express"
}
}
但是这个api会返回
{
"message": "PayPal gateway has rejected request. Invalid token (#10410: Invalid token)."
}
在上面的流程中,是否缺少任何用于获取付款的API?请帮助我。
4条答案
按热度按时间11dmarpk1#
Paypal Express付款方式不支持在线捕获。无法通过Magento API接口获得完整的订单创建流程,如结账。无法更改订单状态和处理付款。作为解决方法,请尝试以下操作:
1.创建自定义付款方式
1.仅为REST API启用(不在网站 checkout 页面上)
1.使用rest api进行支付时使用此方法(成功支付后使用您的android/ios SDK)
1.下订单后,发送交易ID(PAY-xxxxx),通过贝宝SDK支付返回,以保存交易。(告诉您的服务器端,执行此调用)。
我正在一步一步地写一篇关于这件事的完整的文章。当它完成的时候我会让你知道的。
mznpcxlj2#
通过PayPal Rest API下单
对于通过Paypal休息API的地方订单,你需要一个活跃的购物车与航运和帐单地址
默认情况下,我们需要遵循一些设置来下订单
·步骤1.创建一个空购物车
·步骤2.将产品添加到购物车
·步骤3.设置送货地址
·步骤4.设置账单地址
·步骤5.设置交付方式
·第六步:申请优惠券(如果有)
·步骤7.设置付款方式
·第8步:下单
步骤6之后,遵循以下API
我们需要调用下面的API一个接一个的下订单与贝宝
创建Paypal Express令牌
说明
在购物车上设置付款方式
网址:{您的网站网址}/rest/default/V1/paypalapi/setpaymentmethodoncart
需要设置它
[
{【编码】:200,【选择_支付_方式】:{【编码】:“paypal_快递”,【标题】:“PayPal快速结账”} } ]
下单
网址:{您的网站网址}/rest/default/V1/paypalapi/placeorder
{“购物车标识”:“5QWFYZdycucvgD2QMLDCp5fhjmaH2xg”}
{“购物车标识”:22、“客户标识”:一百四十一章}
[ {【货号】:200个【订货_数量】:000000142 } ]的规定
以下是Paypal Rest API模块的链接
https://github.com/santosh-gaggle/paypal-rest-api
t9aqgxwy3#
以防有人还在寻找解决方案。
在我回答这个问题的时候,你将需要创建一个Magento 2模块来处理付款ID.
在您收到来自示例Paypal Android SDK的响应后。
下面是您可以发送到Magento端点的JSON格式:
参考:http://devdocs.magento.com/swagger
“paypal_express_payment_payload”只是一个自定义属性,用于保存以前来自Android SDK的paypal支付响应。
要处理“paypal_express_payment_payload”数据,您可以在Magento 2模块中实现拦截器:
di.xml文件
我的公司或个人\我的模块\插件\贝宝\模型\Express.php
您可以在以下要点中找到完整的PHP代码:https://gist.github.com/feelinc/de817030e00adc7ff7001de1807c1835
abithluo4#
如果您使用下面的命令来运行post查询,请用curl请求替换runPostQuery。这将向magento 2传递一个已经成功的令牌。
您需要创建一个插件来添加最后一个交易ID到支付中,请参见上面的评论,但是上面的payment-information有效负载将允许您在Paypal\Model\Express. php中获得past _placeOrder函数
paypal_express_checkout_token是从贝宝传递回浏览器的令牌,与PayerId相同,这允许检查付款,它将返回成功,不需要重定向,但不是付款参考,只是操作令牌。