FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

Checkout APIを実行した際のレスポンスが Not Found となってしまう

Checkout APIを実行した際のレスポンスが Not Found となってしまう

soony
訪問者
1 0 0

ShopifyのREST APIを利用して、アプリを開発したいと考えています。
アプリの言語: PHP7.3(外部サーバーにカスタムアプリとして構築)です。

ひとまず、アプリを実装+ショップへのインストールまでは成功し、
以下のような処理を実行して、
・注文の作成
・チェックアウトデータの作成
・カード情報の保存
などはできるようになっています。
が、支払いデータの処理のところでつまづいています。

具体的には、後述するコードにあるように、
POST /admin/api/2021-01/checkouts/{token}/payments.json',
を叩いた結果として、
{"errors":"Not Found"}
となってしまいます。

何が問題なのか、
・パラメータの指定やURL(途中のtokenなど)が間違えているのか
・何か手続きが必要なのか(Checkout APIやPayment APIが使えるようになっていない?)
など、具体的な方法について、ご教授いただけませんでしょうか。

※いろいろ調べたところでは、販売チャネルで Checkout API を使えるように申請する必要がある、
などの情報もあったのですが、(英語が苦手なことも災いして)よく理解ができませんでした・・・。

どうぞよろしくお願いします。


// 注文作成
$response = shopify_call(
$this->shop['access_token'],
$this->shop['subdomain'],
'/admin/api/2021-01/orders.json',
$query,
'POST',
);
$order = json_decode($response['response'], true)['order'];

// Checkoutデータ作成
$response = shopify_call(
$this->shop['access_token'],
$this->shop['subdomain'],
'/admin/api/2021-01/checkouts.json',
$query,
'POST'
);
$checkout = json_decode($response['response'], true)['checkout'];

// カード情報保管
$data = array(
'credit_card'=> [
'number'=> '4242424242424242',
'first_name'=> 'Hogehoge',
'last_name'=> 'Test',
'month'=> '5',
'year'=> '23',
'verification_value'=> '123'
]
);
$response = HttpRequestJson::post($checkout['payment_url'], $data);
$sessionId = $response['id'];

// 支払いデータ作成
$response = shopify_call(
$this->shop['access_token'],
$this->shop['subdomain'],
'/admin/api/2021-01/checkouts/' . $checkout['token'] . '/payments.json',
$query,
'POST'
);
$payment = json_decode($response['response'], true)['payment'];

// 支払いデータ作成 結果
array(2) {
["headers"]=>
array(31) {
["status"]=>
string(23) "HTTP/1.1 404 Not Found "
["Date"]=>
string(19) "Mon, 15 Mar 2021 00"
["Content-Type"]=>
string(31) "application/json; charset=utf-8"
["Transfer-Encoding"]=>
string(7) "chunked"
["Connection"]=>
string(10) "keep-alive"
["X-Sorting-Hat-PodId"]=>
string(3) "162"
["X-Sorting-Hat-ShopId"]=>
string(11) "53117190307"
["Vary"]=>
string(15) "Accept-Encoding"
["Referrer-Policy"]=>
string(24) "origin-when-cross-origin"
["X-Frame-Options"]=>
string(4) "DENY"
["X-ShopId"]=>
string(11) "53117190307"
["X-ShardId"]=>
string(3) "162"
["X-Stats-UserId"]=>
string(0) ""
["X-Stats-ApiClientId"]=>
string(7) "4928073"
["X-Stats-ApiPermissionId"]=>
string(12) "311545626787"
["Strict-Transport-Security"]=>
string(15) "max-age=7889238"
["X-Shopify-Stage"]=>
string(10) "production"
["Content-Security-Policy"]=>
string(23) "default-src 'self' data"
["X-Content-Type-Options"]=>
string(7) "nosniff"
["X-Download-Options"]=>
string(6) "noopen"
["X-Permitted-Cross-Domain-Policies"]=>
string(4) "none"
["X-XSS-Protection"]=>
string(219) "1; mode=block; report=/xss-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fcheckouts%2Fpayments&source%5Bsection%5D=admin_api&source%5Buuid%5D=11703ed6-f13c-49ee-bc50-ff47f201b2a2"
["X-Dc"]=>
string(45) "gcp-asia-northeast2,gcp-us-east1,gcp-us-east1"
["X-Request-ID"]=>
string(36) "11703ed6-f13c-49ee-bc50-ff47f201b2a2"
["Set-Cookie"]=>
string(63) "_shopify_fs=2021-03-15T00%3A06%3A17Z; Expires=Tue, 15-Mar-22 00"
["CF-Cache-Status"]=>
string(7) "DYNAMIC"
["cf-request-id"]=>
string(32) "08d4cd84db0000fbe4e4bbe000000001"
["Expect-CT"]=>
string(33) "max-age=604800, report-uri="https"
["Server"]=>
string(10) "cloudflare"
["CF-RAY"]=>
string(20) "63017eb49e28fbe4-KIX"
["alt-svc"]=>
string(7) "h3-27=""
}
["response"]=>
string(22) "{"errors":"Not Found"}"

2件の返信2

株式会社フルバランス
Shopify Partner
1622 576 750

$checkout['token'] にはそれらしいトークンがはいっておりますでしょうか?

株式会社フルバランス
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『つくる人、売る人の成長と成功を最大化する。』 株式会社フルバランス

junichiokamura
Community Manager
1201 280 509

Payment APIはPCIDSSを保持している決済会社などに特例で許可されるもので、通常は使えません。また、Shopifyの購入フローに独自の決済を実装することはAPIの利用規約で禁止されております。

(Payment APIは、カード情報を直接受け取ってトークン化するものですので、通常のマーチャントやパートナーが利用することは推奨されません)。

https://www.shopify.com/legal/api-terms

Checkout APIは、 Storefront APIの一部でmPublic Appの場合は、アプリをSales Channelにする必要があります(設定画面から申請可能です)。

自身のショップだけで使う場合は、Private appで権限を有効にすれば呼べるようになります。

ただ、注意点ですが、Storefront APIを使った独自フローの実装でも、最後の決済画面はShopifyに遷移してShopify画面で行うことになります(上記のPaymnent APIは使いません)。

下記にサンプルコードを共有していますので、ご参考ください。

https://community.shopify.com/c/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%E9%9...

 

Senior Partner Solutions Engineer