我在我的网站上使用paypal的REST API进行数字交易。我已经完成所有设置和工作,并且能够成功接受来自少数用户的付款,并为他们提供数字产品。但是,到目前为止,PayPal认为这些交易就像物理物品一样。我在REST文档中没有找到任何关于将事务标记为数字的内容。我付款请求的一个例子如下:
{
"intent": "sale",
"redirect_urls": {
"return_url": "http:\/\/www.googulator.com\/goPro?finishPurchase=true&googleid=123456789",
"cancel_url": "http:\/\/www.googulator.com\/goPro"
},
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "5.00",
"currency": "USD"
},
"description": "PWYW Lifetime Googulator Pro",
"item_list": {
"items": [
{
"quantity": "1",
"name": "Lifetime Googulator Pro",
"price": "5.00",
"currency": "USD"
}
]
}
}
]
}
所以我的问题是,REST API是否正确支持数字交易,还是必须使用PayPal的经典API?
答案 0 :(得分:1)
REST API中未正确或完全支持数字交易。请继续使用PayPal的CLASSIC API。敬请关注。
答案 1 :(得分:0)
您可以通过创建体验资料至少禁用发货, https://developer.paypal.com/docs/api/payment-experience/
我使用名为Postman的应用程序向https://api.sandbox.paypal.com/v1/payment-experience/web-profiles
上的PayPal发送POST请求使用此JSON数据:
<tmp>I like </tmp><div>turtles, </div><b> cookies</b> and </tmp>brownies</tmp>
请注意,我使用no_shipping 1,禁用运费。我还使用此POST请求发送了授权承载令牌。
如果请求成功,那么您将获得新创建的体验配置文件的ID。 创建快速结账付款时会使用该ID。
{
"name": "AppName",
"presentation": {
"brand_name": "AppName Paypal",
"locale_code": "US"
},
"input_fields": {
"no_shipping": 1,
"address_override": 1
},
"flow_config": {
"landing_page_type": "login"
}
}
答案 2 :(得分:0)
我知道为时已晚,但我会回答以防其他人发现这个问题。
这是您使用C#SDK的方式。
创建个人资料:
string createProfile(APIContext apiContext) {
var profile = new WebProfile()
{
name = Guid.NewGuid().ToString(),
input_fields = new InputFields()
{
no_shipping = 1
},
temporary = true
};
return profile.Create(apiContext).id;
}
然后在付款中设置此功能中返回的ID:
var profileCreated = createProfile(apiContext);
Payment paymentParms = new Payment {
intent = "sale",
payer = new Payer
{
payment_method = "paypal"
},
redirect_urls = new RedirectUrls
{
return_url = WebConfig.WebSite.BaseUrl + "Paypal/Success",
cancel_url = WebConfig.WebSite.BaseUrl + "Paypal/Cancel",
},
experience_profile_id = profileCreated
};