HivePress の落とし穴:日本円での Transfer 問題とその解決方法
HivePress は、WordPress によるマーケットプレイスの構築を簡単にする便利なプラグインです。しかし、日本円(JPY)を利用する場合に思わぬ問題が発生することがあります。この記事では、その問題の詳細と解決方法をご紹介します。
サイトURL -> https://hivepress.io
問題の概要
HivePress の設定に不備があると、日本円(JPY)を使用した場合に Stripe を通じた Transfer(送金)が正常に行われない場合があります。
この原因は、HivePress が Transfer の際に金額(amount)を 100 倍にして処理していることです。日本円では整数単位で金額を指定する必要があるため、この設定ミスが残高不足を引き起こし、送金エラーとなります。
解決方法:カスタムコードの追加
この問題を解決するには、以下のコードを WordPress テーマの functions.php ファイルに追加します。このコードは、Transfer 処理の際に金額の単位を正しく調整するものです。
修正コード
add_filter( 'hivepress/v1/components/stripe/create_transfer', 'custom_modify_transfer_args', 10, 1 );
function custom_modify_transfer_args( $transfer_args ) {
// 変更前の $transfer_args をログに出力する
error_log( 'Before modification: ' . print_r( $transfer_args, true ) );
// 日本円の場合の金額を修正
if ($transfer_args['currency'] == 'JPY') {
$transfer_args['amount'] = round($transfer_args['amount'] * 0.01);
}
// 変更後の $transfer_args をログに出力する
error_log( 'After modification: ' . print_r( $transfer_args, true ) );
return $transfer_args;
}
コードの解説
- フィルターフックの追加
add_filter を使用して、HivePress の create_transfer コンポーネントをフックします。これにより、送金データをカスタマイズ可能になります。
add_filter( 'hivepress/v1/components/stripe/create_transfer', 'custom_modify_transfer_args', 10, 1 );
- 金額の調整
currency が日本円(JPY)の場合、金額(amount)を 0.01 倍して調整します。これで正しい整数値が送信されるようになります。
if ($transfer_args['currency'] == 'JPY') {
$transfer_args['amount'] = round($transfer_args['amount'] * 0.01);
}
- ログの追加
エラーが発生した場合やデバッグが必要な場合のために、処理前後のデータをログに出力します。
error_log( 'Before modification: ' . print_r( $transfer_args, true ) );
error_log( 'After modification: ' . print_r( $transfer_args, true ) );
動作確認
コードを追加した後、テスト環境で実際に送金処理を行い、エラーが解消されたことを確認してください。特に、送金金額が正しく計算され、日本円での Transfer が成功することを確認することが重要です。
まとめ
HivePress の日本円対応における不具合を解決するために、少しのカスタマイズが必要です。このコードを導入することで、日本円での送金エラーを防ぎ、スムーズな送金処理を実現できます。
問題解決の参考になれば幸いです。もし不明点や別の方法がありましたら、ぜひコメントで教えてください!
いいねしてもらえるととても励みになります🙇♂️🙇♂️🙇♂️