问题描述
我正在尝试将PayPal和BACS(银行转账)添加到WooCommerce的Klarna Checkout中。
我从Klarna(https://github.com/krokedil/klarna-checkout-external-payment-method-for-woocommerce/blob/master/klarna-checkout-external-payment-method-for-woocommerce.php)找到了示例插件
这很好用,但是当我尝试更改代码以显示和使用BACS付款时,我只显示了BACS选项,而不是PayPal和BACS。
这是krokedil提供的示例PayPal代码(我已经在后端切出了插件设置的代码):
add_filter( 'kco_wc_api_request_args','kcoepm_create_order_paypal' );
function kcoepm_create_order_paypal( $request_args ) {
$kco_settings = get_option( 'woocommerce_kco_settings' );
$name = isset( $kco_settings['epm_paypal_name'] ) ? $kco_settings['epm_paypal_name'] : '';
$image_url = isset( $kco_settings['epm_paypal_img_url'] ) ? $kco_settings['epm_paypal_img_url'] : '';
$description = isset( $kco_settings['epm_paypal_description'] ) ? $kco_settings['epm_paypal_description'] : '';
$klarna_external_payment = array(
'name' => $name,'image_url' => $image_url,'description' => $description,'redirect_url' => add_query_arg(
array(
'kco-external-payment' => 'paypal',// Set this to the ID of the relevant payment method in WooCommerce.
'order_id' => isset( $request_args['merchant_reference2'] ) ? $request_args['merchant_reference2'] : '{checkout.order.id}',),wc_get_checkout_url()
),);
$klarna_external_payment = array( $klarna_external_payment );
$request_args['external_payment_methods'] = $klarna_external_payment;
return $request_args;
}
我想出了以下代码,该代码实际上将显示BACS付款方式并允许付款。但是,当我启用我的代码后,贝宝(PayPal)付款选项就会立即消失。
add_filter( 'kco_wc_api_request_args','kcoepm_create_order_bacs' );
function kcoepm_create_order_bacs( $request_args ) {
$klarna_external_payment = array(
'name' => 'BACS','image_url' => 'https://via.placeholder.com/350x150','description' => 'Pay via Banktransfer','redirect_url' => add_query_arg(
array(
'kco-external-payment' => 'bacs',);
$klarna_external_payment = array( $klarna_external_payment );
$request_args['external_payment_methods'] = $klarna_external_payment;
return $request_args;
}
我不知道如何同时注册两种付款方式。我认为这与未注册的数组有关。
我在krokedik文档中找到了此通知,但不知道如何实现:
“应将请求中发送给Klarna的每种定义的外部付款方式添加为数组,如此处的文档所述:https://developers.klarna.com/api/#checkout-api__create-a-new-order__external_payment_methods."
任何帮助将不胜感激!
解决方法
此代码将两种付款方式都添加到了结帐页面: https://gist.github.com/flymke/c5f49b52c8ecf5069c68b6d9a4e84c76
您需要将两个$klarna_external_payments
数组都添加到$request_args['external_payment_methods']
。
请确保您已将付款方式更改为正确的ID,在我的示例中,PayPal被称为“ ppec_paypal”,因为我们使用的是PayPal快速结帐,而不是常规的PayPal:'kco-external-payment'
=> 'ppec_paypal'
。
您可以在显示以下代码的代码中找到它:
//将此设置为WooCommerce中相关付款方式的ID。