ここで難しい質問があります。ユーザーが英国の銀行 (つまり Barclaycard) に支払いを行う必要があります。そうするために、私は https URL を持っています。パラメーター (支払う金額、注文参照など) を URL に追加し、この http 接続を Intent.ActionView として開始します。これにより、ユーザーはブラウザーにリダイレクトされます。銀行のウェブページにクレジットカードの詳細を入力して、私たちの口座に支払いを行うことができます。ここまでは順調ですね ?
私が使用するコードは以下のとおりです (プライバシー上の理由から値を変更しました) 問題は、ユーザーが支払いを完了/失敗/キャンセルしたときにアプリに戻る必要があることです。Barclaycard は、支払いが成功すると特定の URL に自動的にリダイレクトし、失敗すると別の URL にリダイレクトします。Barclaycard の支払いがいつ成功したかを知る方法はないので、どうにかして Android アプリに戻りますか?
Button cardbutton = (Button) findViewById(R.id.card_button);
cardbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
String preHashString = new String();
String proHashString = new String();
String SHAPassPhrase = new String();
SHAPassPhrase = "GSvTh£h70ZkHdAq9b"; // FOR TEST ENVIRONMENT
preHashString = preHashString + "AMOUNT=" + String.valueOf((int) (order.getPaymentAmount() * 100.00)) + SHAPassPhrase;
preHashString = preHashString + "BGCOLOR=cccccc" + SHAPassPhrase;
preHashString = preHashString + "CN=" + user.getString("name") + SHAPassPhrase;
preHashString = preHashString + "CURRENCY=GBP" + SHAPassPhrase;
preHashString = preHashString + "LANGUAGE=en_US" + SHAPassPhrase;
preHashString = preHashString + "ORDERID=" + order.getOrderId() + SHAPassPhrase;
try
{
proHashString = SHA1(preHashString);
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
String redirecturl = "https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp";
redirecturl += "?AMOUNT=" + String.valueOf((int) (order.getPaymentAmount() * 100));
redirecturl += "&CN=" + user.getString("name");
redirecturl += "&CURRENCY=GBP";
redirecturl += "&LANGUAGE=en_US";
redirecturl += "&ORDERID=" + order.getOrderId();
redirecturl += "&SHASIGN=" + proHashString;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(redirecturl));
startActivity(i);
}
});