{"id":127216,"date":"2024-05-24T11:00:05","date_gmt":"2024-05-24T02:00:05","guid":{"rendered":"https:\/\/support.questetra.com\/?p=127216"},"modified":"2024-05-24T11:06:21","modified_gmt":"2024-05-24T02:06:21","slug":"service-task-stripe-metadata-update","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-stripe-metadata-update\/","title":{"rendered":"Stripe: Update Metadata of Customer\/Product\/Invoice"},"content":{"rendered":"\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"58\" data-attachment-id=\"113160\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/how-to-use-timer-start-event\/attachment\/advanced-banner-new-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1200%2C68&amp;ssl=1\" data-orig-size=\"1200,68\" data-comments-opened=\"0\" data-image-title=\"advanced-banner-new-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1024%2C58&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en-1024x58.png?resize=1024%2C58&#038;ssl=1\" alt=\"\" class=\"wp-image-113160\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=1024%2C58&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=600%2C34&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=768%2C44&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-border-color has-product-main-border-color has-white-color has-product-main-background-color has-text-color has-background has-link-color\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:var(--wp--preset--spacing--10);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--10);padding-left:var(--wp--preset--spacing--20)\"><strong>Stripe: Update Metadata of Customer\/Product\/Invoice<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-right has-border-color has-product-main-border-color has-white-color has-product-main-background-color has-text-color has-background has-link-color has-small-font-size mt-0 pt-0 wp-block-paragraph\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><a href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-stripe-metadata-update\/\">Stripe: \u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u66f4\u65b0<\/a><\/p>\n\n\n\n<p class=\"has-border-color has-product-main-border-color has-text-color has-white-background-color has-background has-link-color mt-0 pt-0 wp-block-paragraph\" style=\"border-width:2px;margin-top:0;margin-right:0;margin-bottom:var(--wp--preset--spacing--30);margin-left:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">This item updates metadata of a customer, product or invoice on Stripe. Metadata Fields whose keys are not specified remain unchanged.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright has-custom-border is-style-default\"><img decoding=\"async\" src=\"data:image;base64,\n        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAvJJREFUWEfF\n        l19I01EUxz\/XKZqWNbVS6cH+UfSUGQlCD0EQRCkoFDkDUzENi6IgkB4sKEgjDStFnVlzalC9+BBR\n        IEFBEeVbFP3R\/lhRpLRpKHO78dtv021u+pszfnv87Zzv+dxzzj33XoHOP6E1fvleGe9KJF\/CDiSZ\n        CDIAo8d\/BMkggn4BfVE27rX0ir9atOcEKC6WqdEOTkuoAOK0iALjAponY7jY0SF+zOYzK0CJSVYI\n        uAQkaAwcaDYm4VS7VTSH8g8JUFokryOpnGdgfzdBk7lTHAmmFRSgxCS7BBxYkOAeEQnd7VZRGKg5\n        A2BBVz4z2oxM+AF4at60kCsP1JJQ6dsTUwBKtxscvI+g4bRyjzljWOfdHVMAZSZZL+G4VpVI7AQ0\n        tFnFCUXDDaAMGWciv8PY55HEV3zHDTaSlWHlBigzySIJlvmoxsbBxHj4ngIOtllFpxug1CTNQMls\n        MjnbIS0d7t6etmpshe9DcKEmfACg3WwVpSpAoXyFIDNQZuMm2J2rfk1Ng6XL4NlTSE4Blwt6LOB0\n        QtEhkBKGvsCdHli9FnLzoe8h9L8MASfpN3eJLd4MDPscLFMeTTcgOhocDjXNi5fAr5+wYqUa+NOA\n        ClF9FiYnVdtHD2DnLpiYgNhYqKmGr5+DQoyYrSLJCyCDmdQ1gtEIdpv6r7LKbgscroKr9ZC\/Dzpa\n        VIBr9VBeBYYoiDKotkLA\/V7\/svnGMVuFYuLugaAAx05C+ipIWa4KShe8eA7ZOdB4GQr2TwMMfoSM\n        NfDuLazfALY\/YLdD9y148zp4GXwBgpag9goYk2BkGJ48hj15MDoK8QnQUAtZ26DrJrRaVMBRO9Sd\n        h7wC2JylAp87A9+G5ipBiCbU0ttbs6HiqFqCkA0XTCigCefchqFgFsWrO2TggxZcP5vpbRjJIAo7\n        rMfBbxDpPoo941i\/w0gB0P04ViB0vZB4m0nXK5kXQtdL6X\/JRLjXcp9M6Pcw8ULo+jTznXK6PU7n\n        O2q1+v0D2nRCMMki7aoAAAAASUVORK5CYII=\n    \" alt=\"Auto Step icon\" class=\"has-border-color has-ast-global-color-6-border-color\" style=\"border-width:0.5em\"\/><\/figure>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Basic Configs<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Step Name<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Note<\/dd>\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Configs for this Auto Step<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Auth<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C1: Authorization Setting in which API Secret Key is set<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Id<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C2: ID of Customer\/Product\/Invoice<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K1: Key of Metadata Field 1 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value1<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V1: New Value of Field 1 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key2<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K2: Key of Metadata Field 2 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value2<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V2: New Value of Field 2 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key3<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K3: Key of Metadata Field 3 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value3<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V3: New Value of Field 3 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key4<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K4: Key of Metadata Field 4 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value4<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V4: New Value of Field 4 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key5<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K5: Key of Metadata Field 5 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value5<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V5: New Value of Field 5 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key6<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K6: Key of Metadata Field 6 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value6<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V6: New Value of Field 6 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key7<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K7: Key of Metadata Field 7 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value7<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V7: New Value of Field 7 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Key8<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-K8: Key of Metadata Field 8 to add\/update\/delete<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Value8<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-V8: New Value of Field 8 (if blank, delete the field)<span style=\"color:#000099;\"><sup style=\"font-style:italic;\">#{EL}<\/sup><\/span><\/dd>\n\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-lightbulb-exclamation\"><\/i> Notes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To get Stripe\u2019s API Secret Key, visit&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/dashboard.stripe.com\/apikeys\" target=\"_blank\">https:\/\/dashboard.stripe.com\/apikeys<\/a> (Stripe login required)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-images\"><\/i> Capture<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"84005\" data-permalink=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/onedrive-file-upload\/attachment\/setting-service-task-pdf-generation-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/01\/setting-service-task-pdf-generation-en.png?fit=959%2C833&amp;ssl=1\" data-orig-size=\"959,833\" data-comments-opened=\"0\" data-image-title=\"setting-service-task-pdf-generation-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/01\/setting-service-task-pdf-generation-en.png?fit=725%2C630&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/11\/stripe-metadata-update_capture_en.png?ssl=1\" alt=\"\" class=\"wp-image-84005\" style=\"border:10px solid #aaaaaa; padding:5px; margin:5px;\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-balance-scale\"><\/i> See also<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/intermediate-error-catch-event-boundary-type\/\" target=\"_blank\">Intermediate Error Catch Event (Boundary Type)<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Script (click to open)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<ul class=\"wp-block-list\">\n<li>An XML file that contains the code below is available to download\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/raw.githubusercontent.com\/Questetra\/Addon-XML\/release-2024-04-30\/stripe-metadata-update.xml\" target=\"_blank\" rel=\"noreferrer noopener\">stripe-metadata-update.xml<\/a> (C) Questetra, Inc. (MIT License)<\/li>\n\n\n\n<li>If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\n\nconst STRIPE_API_VERSION = &apos;2022-08-01&apos;;\nconst FIELD_NUM = 8; \/\/ \u6271\u3046\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u6570\nconst MAX_KEY_LENGTH = 40; \/\/ \u30e1\u30bf\u30c7\u30fc\u30bf\u306e key \u306e\u6700\u5927\u6587\u5b57\u6570\uff08Stripe \u306e\u5236\u9650\uff09\nconst MAX_VALUE_LENGTH = 500; \/\/ \u30e1\u30bf\u30c7\u30fc\u30bf\u306e value \u306e\u6700\u5927\u6587\u5b57\u6570\uff08Stripe \u306e\u5236\u9650\uff09\n\nfunction main(){\n    \/\/\/\/ == Config Retrieving \/ \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53c2\u7167 ==\n    const auth = configs.getObject(&apos;conf_Auth&apos;);\n    const id = retrieveId();\n    const apiUri = decideApiUri(id);\n    const metadataMap = retrieveMetadataMap();\n\n    \/\/\/\/ == Calculating \/ \u6f14\u7b97 ==\n    updateMetadata(auth, apiUri, metadataMap);\n}\n\n\/**\n  * config \u304b\u3089\u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8 ID \u3092\u8aad\u307f\u51fa\u3059\u3002\u7a7a\u6587\u5b57\u5217\u306e\u5834\u5408\u306f\u30a8\u30e9\u30fc\n  * @return {String} id \u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8 ID\n  *\/\nfunction retrieveId() {\n    let id = configs.get(&apos;conf_Id&apos;); \/\/ \u56fa\u5b9a\u5024\u306e\u5834\u5408\n    const idDef = configs.getObject(&apos;conf_Id&apos;);\n    if (idDef !== null) {\n        if (idDef.matchDataType(&apos;SELECT_SINGLE&apos;)) { \/\/ \u9078\u629e\u578b\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u5834\u5408\n            const select = engine.findData(idDef);\n            if (select === null || select.size() === 0) { \/\/ \u672a\u9078\u629e\n                throw new Error(&apos;Customer\/Product\/Invoice ID is not selected.&apos;);\n            }\n            id = select.get(0).getValue();\n        } else { \/\/ \u6587\u5b57\u578b\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u5834\u5408\n            id = engine.findData(idDef);\n        }\n    }\n    if (id === null || id === &apos;&apos;) {\n        throw new Error(&apos;Customer\/Product\/Invoice ID is blank.&apos;);\n    }\n    return id;\n}\n\n\/**\n  * id \u304b\u3089 API \u306e URI \u3092\u6c7a\u5b9a\u3059\u308b\u3002\u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8 ID \u306e\u5f62\u5f0f\u3067\u306a\u3044\u5834\u5408\u3001\u30a8\u30e9\u30fc\n  * @param {String} id \u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8 ID\n  * @return {String} apiUri\n  *\/\nfunction decideApiUri(id) {\n    const prefix = id.substring(0, id.indexOf(&apos;_&apos;));\n    const baseUrl = &apos;https:\/\/api.stripe.com\/v1\/&apos;;\n    switch (prefix) {\n        case &apos;cus&apos;:\n            return `${baseUrl}customers\/${encodeURIComponent(id)}`;\n        case &apos;prod&apos;:\n            return `${baseUrl}products\/${encodeURIComponent(id)}`;\n        case &apos;in&apos;:\n            return `${baseUrl}invoices\/${encodeURIComponent(id)}`;\n        default:\n            throw new Error(&apos;Customer\/Product\/Invoice ID must start with &quot;cus_&quot;, &quot;prod_&quot; or &quot;in_&quot;.&apos;);\n    }\n}\n\n\/**\n  * config \u304b\u3089\u30e1\u30bf\u30c7\u30fc\u30bf\u306e key, value \u3092\u8aad\u307f\u51fa\u3057\u3001Map \u306b\u683c\u7d0d\u3057\u3066\u8fd4\u3059\u3002\u4ee5\u4e0b\u306e\u5834\u5408\u306f\u30a8\u30e9\u30fc\n  * - value \u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u306b key \u304c\u7a7a\n  * - key \u306e\u6307\u5b9a\u304c\u91cd\u8907\u3057\u3066\u3044\u308b\n  * - key \u306e\u6587\u5b57\u6570\u304c Stripe \u306e\u5236\u9650\u3092\u8d85\u3048\u308b\n  * - value \u306e\u6587\u5b57\u6570\u304c Stripe \u306e\u5236\u9650\u3092\u8d85\u3048\u308b\n  * - \u66f4\u65b0\u3059\u3079\u304d\u30e1\u30bf\u30c7\u30fc\u30bf\u304c\u306a\u3044\n  * @return {Map&lt;String, String&gt;} metadataMap \u30e1\u30bf\u30c7\u30fc\u30bf\u306e Map\n  *\/\nfunction retrieveMetadataMap() {\n    const metadataMap = new Map();\n    for (let i = 0; i &lt; FIELD_NUM; i++) {\n        const key = configs.get(`conf_Key${i+1}`);\n        const value = configs.get(`conf_Value${i+1}`);\n        if (key === &apos;&apos;) {\n            if (value === &apos;&apos;) {\n                \/\/ key, value \u304c\u3068\u3082\u306b\u7a7a\u767d\u306e\u7d44\u306f\u7121\u8996\n                continue;\n            }\n            throw new Error(`C-V${i+1} is set but C-K${i+1} is blank.`);\n        }\n        if (metadataMap.has(key)) { \/\/ key \u306e\u6307\u5b9a\u304c\u91cd\u8907\n            throw new Error(`Field Key &quot;${key}&quot; is set multiple times.`);\n        }\n        if (key.length &gt; MAX_KEY_LENGTH) {\n            throw new Error(`C-K${i+1} exceeds the limit of ${MAX_KEY_LENGTH} characters.`);\n        }\n        if (value.length &gt; MAX_VALUE_LENGTH) {\n            throw new Error(`C-V${i+1} exceeds the limit of ${MAX_VALUE_LENGTH} characters.`);\n        }\n        metadataMap.set(key, value);\n    }\n    if (metadataMap.size === 0) {\n        throw new Error(&apos;No metadata fields to update.&apos;);\n    }\n    return metadataMap;\n}\n\n\/**\n  * \u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b\n  * @param {AuthSettingWrapper} auth  HTTP \u8a8d\u8a3c\u8a2d\u5b9a \u30c8\u30fc\u30af\u30f3\u76f4\u63a5\u6307\u5b9a\n  * @param {String} apiUri \u30ea\u30af\u30a8\u30b9\u30c8 URI\n  * @param {Map&lt;String, String&gt;} metadataMap \u30e1\u30bf\u30c7\u30fc\u30bf\u306e Map\n  *\/\nfunction updateMetadata(auth, apiUri, metadataMap) {\n    let request = httpClient.begin()\n        .authSetting(auth) \/\/ with &quot;Authorization: Bearer XX&quot;\n        .header(&apos;Stripe-Version&apos;, STRIPE_API_VERSION);\n    metadataMap.forEach((value, key) =&gt; {\n        request = request.formParam(`metadata[${key}]`, value);\n    });\n    const response = request.post(apiUri);\n    const status = response.getStatusCode();\n    const responseStr = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(responseStr);\n        throw new Error(`Failed to update metadata. status: ${status}`);\n    }\n}\n\n    <\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This item updates metadata of a customer, product or invoice on Stripe. Metadata Fields whose keys are not specified remain unchanged.<\/p>\n","protected":false},"author":17,"featured_media":125421,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[551],"tags":[404],"faq_section":[],"class_list":["post-127216","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bpmn-icons","tag-stripe-api"],"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"Shiho Tatsumi","author_link":"https:\/\/support.questetra.com\/en\/author\/tatsumi48c607ec82\/"},"uagb_comment_info":0,"uagb_excerpt":"This item updates metadata of a customer, product or invoice on Stripe. Metadata Fields whose keys are not specified remain unchanged.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-x5S","jetpack-related-posts":[{"id":127228,"url":"https:\/\/support.questetra.com\/ja\/bpmn-icons\/service-task-stripe-metadata-update\/","url_meta":{"origin":127216,"position":0},"title":"Stripe: \u9867\u5ba2\/\u5546\u54c1\/\u8acb\u6c42\u66f8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u66f4\u65b0","author":"Shiho Tatsumi","date":"2024-05-24","format":false,"excerpt":"\u3053\u306e\u5de5\u7a0b\u306f\u3001Stripe \u4e0a\u306e\u9867\u5ba2\u3001\u5546\u54c1\u307e\u305f\u306f\u8acb\u6c42\u66f8\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002\u30ad\u30fc\u3092\u6307\u5b9a\u3057\u3066\u3044\u306a\u3044\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002","rel":"","context":"In &quot;BPMN\u30a2\u30a4\u30b3\u30f3&quot;","block_context":{"text":"BPMN\u30a2\u30a4\u30b3\u30f3","link":"https:\/\/support.questetra.com\/ja\/category\/bpmn-icons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":88633,"url":"https:\/\/support.questetra.com\/en\/addons\/stripe-customer-object-create\/","url_meta":{"origin":127216,"position":1},"title":"Stripe: Customer Object, Create","author":"IMAMURA, Genichi","date":"2020-06-03","format":false,"excerpt":"Creates the Customer object on the payment platform Stripe. Once the object is created, subsequent card billing is possible. Token ID and the customer email etc are required. Realizes a billing environment that does not touch sensitive info.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"Stripe: Customer Object, Create","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/Stripe-Customer-Object-Create-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/Stripe-Customer-Object-Create-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/Stripe-Customer-Object-Create-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/Stripe-Customer-Object-Create-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/Stripe-Customer-Object-Create-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":67480,"url":"https:\/\/support.questetra.com\/en\/addons\/stripe-customercreate\/","url_meta":{"origin":127216,"position":2},"title":"Stripe Customer ID Create from Token","author":"Hirotaka NISHI","date":"2017-09-01","format":false,"excerpt":"Registers a customer in Stripe by using the ID which tokenized credit card information. Customer ID used for billing, last 4 digits of the credit card, status of registration processing, and communication log are stored in Data Item. *Note It requires acquiring Secret Key at Stripe Dashboard in advance Supported\u2026","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/09\/stripe-customer-create-header.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/09\/stripe-customer-create-header.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/09\/stripe-customer-create-header.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/09\/stripe-customer-create-header.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/09\/stripe-customer-create-header.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":141572,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/stripe-invoicing\/","url_meta":{"origin":127216,"position":3},"title":"Sending Invoices with Stripe","author":"Hirotaka NISHI","date":"2023-01-26","format":false,"excerpt":"Explaining the automated process of creating an invoice on Stripe and sending it to the customer by email.","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/01\/stripe-billing-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/01\/stripe-billing-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/01\/stripe-billing-fi-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/01\/stripe-billing-fi-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/01\/stripe-billing-fi-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":67486,"url":"https:\/\/support.questetra.com\/en\/addons\/stripe-cardregistrationmmyy\/","url_meta":{"origin":127216,"position":4},"title":"Card Info to Stripe (MM\/YY edition)","author":"Hirotaka NISHI","date":"2016-10-06","format":false,"excerpt":"Registers customer's settlement information to Stripe and stores the Customer ID and the last 4 digits of credit card number to be used for billing, the status of registration processing, and the communication log into the data items respectively *Note It requires acquiring Secret Key at Stripe Dashboard in advance\u2026","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":67472,"url":"https:\/\/support.questetra.com\/en\/addons\/stripe-cardregistration\/","url_meta":{"origin":127216,"position":5},"title":"Card Info to Stripe","author":"Hirotaka NISHI","date":"2016-10-06","format":false,"excerpt":"Registers customer's settlement information to Stripe and stores the Customer ID and the last 4 digits of credit card number to be used for billing, the status of registration processing, and the communication log into the data items respectively *Note It requires acquiring Secret Key at Stripe Dashboard in advance\u2026","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2016\/10\/stripe-card-registration-header.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/stripe-icon-fi-1.png?fit=1200%2C675&ssl=1","_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/127216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=127216"}],"version-history":[{"count":14,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/127216\/revisions"}],"predecessor-version":[{"id":161784,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/127216\/revisions\/161784"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/125421"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=127216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=127216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=127216"},{"taxonomy":"faq_section","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/faq_section?post=127216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}