Me gustaría poder construir un enlace Amazon-Afiliado, cuando se proporcione un Amazon URL "normal".

Intenté usar esta estructura:

http://www.amazon.com/dp/{ASIN}/?tag={trackingId}

Como se sugiere aquí.

Así es como intento crear el URL:

func getAmazonAffiliateLink() -> URL? {
    if let regex = try? NSRegularExpression(pattern: "([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})"),
       let match = regex.firstMatch(in: self, range: NSRange(self.startIndex..., in: self)),
       let asinMatchRange = Range(match.range(at: 4), in: self) {
        let asin = self[asinMatchRange]
        let partnerId = "wishlists07-21"
        let affiliateLink = "https://www.amazon.com/dp/\(asin)/?tag=\(partnerId)"
        return URL(string: affiliateLink)
    } else {
        return nil
    }

}

Pero esto me da este URL por ejemplo:

https://www.amazon.com/dp/b085sp5sxh/?tag=wishlists07-21

Y como puede ver por sí mismo, no está funcionando ...

¿Que me estoy perdiendo aqui? ¿Cómo puedo crear enlaces de afiliados?

0
Chris 22 ene. 2021 a las 03:29

1 respuesta

La mejor respuesta

Parece que el enlace inicial con el que estás probando es probablemente malo; en otras palabras, cuando elimino la etiqueta de tu lista de deseos y solo pruebo el enlace básico de Amazon, aún falla.

Pero, con un enlace de producto de Amazon válido, parece funcionar. Esto es lo que hice en un patio de juegos:

extension String {
    func getAmazonAffiliateLink() -> URL? {
        if let regex = try? NSRegularExpression(pattern: "([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})"),
           let match = regex.firstMatch(in: self, range: NSRange(self.startIndex..., in: self)),
           let asinMatchRange = Range(match.range(at: 4), in: self) {
            let asin = self[asinMatchRange]
            let partnerId = "wishlists07-21"
            let affiliateLink = "https://www.amazon.com/dp/\(asin)/?tag=\(partnerId)"
            return URL(string: affiliateLink)
        } else {
            return nil
        }

    }
}

"https://www.amazon.com/dp/B0863ZGP2R/ref=fs_a_ipadt2_us0".getAmazonAffiliateLink()

Lo que produce el resultado de https://www.amazon.com/dp/B0863ZGP2R/?tag=wishlists07-21, que es un enlace de Amazon que funciona.

2
jnpdx 22 ene. 2021 a las 01:01