通过REST API销售数字商品

时间:2013-10-21 13:26:36

标签: paypal paypal-rest-sdk

我在我的网站上使用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?

3 个答案:

答案 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
            };