The idea is to wrap an stx-transfer inside a fungible token (sip10) contract.
(define-public (mint-with (token <ft-trait>))
Payment methods can be set per resource (or via a default);
(pricing (unwrap! (map-get? payment-info (contract-of token)) ERR_UNKNOWN_TENDER))
and paid with generalised token;
(try! (contract-call? token transfer artistAmount contract-caller artistAddress none))
This way payment token can be specified by the resource as opposed to set in advance.
See this thread for generalised payments.
Also see this implementation of the idea