Godot PayPal REST API

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By wpinweb

So maybe i am way off theme here, but i though i can ask the Godot Family. I want to implement payments in my godot app (exe) through PayPal. I am using HTTPRequests as a mean and follow the paypals documentation by step. Retrieving token is success, placing order is success but capturing order is fail (403) . I dont ask about a fix on this cause stackoverflow and paypal community exist for this purpose i guess…I am asking if any1 have used paypal integretion in past and can share some intelligence with me or if any1 can recommend a library for this purpose. I am (still) using GODOT 3.5. Again sorry if i am way off topic here.

func get_access_token():
var request = $HTTPRequest
var headers = PoolStringArray()
headers.append("Content-Type: application/x-www-form-urlencoded")
headers.append("Authorization: Basic " + client_id + ":" + client_secret)
headers.append("Accept-Language: en_US")
headers.append("Accept: application/json")
var body = "grant_type=client_credentials"
request.request(
	"https://api-m.sandbox.paypal.com/v1/oauth2/token",
	headers,
	true,
	HTTPClient.METHOD_POST,
	body
)
request.connect("request_completed", self, "_on_access_token_response")

func paypal_process():
var request = $HTTPRequest2
var headers = PoolStringArray()
headers.append("Content-Type: application/json")
headers.append("Authorization: Bearer " + access_token)
headers.append("Accept: application/json")
var body = {
	"intent": "CAPTURE",
	"purchase_units": [
		{
			"amount": {
				"currency_code": "EUR",
				"value": "10.00"
			}
		}
	]
}
request.request(
	"https://api-m.sandbox.paypal.com/v2/checkout/orders",
	headers,
	true,
	HTTPClient.METHOD_POST,
	JSON.print(body)
)
request.connect("request_completed", self, "_on_paypal_response")


func get_order(order_id):
var request = $HTTPRequest3
var headers = PoolStringArray()
headers.append("Content-Type: application/json")
headers.append("Authorization: Bearer " +  access_token)
headers.append("Accept: application/json")
request.request(
	"https://api-m.sandbox.paypal.com/v2/checkout/orders/" + order_id + "/capture",
	headers,
	true,
	HTTPClient.METHOD_POST
)
request.connect("request_completed", self, "_get_order_response")

Welcome to the community. While I don’t have an answer for you, your question seems entirely appropriate for the forum.

And, while I haven’t looked at PayPal’s API in a long time, using the HTTPRequest object as the core of your solution seems like a good fit. That is, I think you should be able “to get there from here”… :slight_smile:

Hopefully, someone will be able to provide more specific input.

Also, sharing some sample code might allow someone to spot the problem.

jgodfrey | 2023-05-11 20:03