0
我想創建和Android應用程序,可以通過使用主卡API信用卡支付。我'按照這個教程 - >>https://developer.mastercard.com/portal/pages/viewpage.action?pageId=14876685,但它說沒有找到網址。Java.io.FileNotFoundException「URL」
這是我使用的代碼:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
((Button) findViewById(R.id.submit)).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Context context = getApplicationContext();
String endPoint = "https://api.mastercard.com/payments/v1/purchase?Format=XML";
EditText cardNumberInput = (EditText) findViewById(R.id.cardNumberInput);
EditText expirationMonthInput = (EditText) findViewById(R.id.expirationMonthInput);
EditText expirationYearInput = (EditText) findViewById(R.id.expirationYearInput);
EditText cvvInput = (EditText) findViewById(R.id.cvvInput);
EditText cardHolderNameInput = (EditText) findViewById(R.id.cardHolderNameInput);
EditText amountInput = (EditText) findViewById(R.id.amountInput);
final double amount = Float.valueOf(amountInput.getText().toString());
final String currency = "USD";
final String companyId = "ComID";
final String companyPassword = "ComPass";
final String messageId = "001";
final String settlementId = "011";
final String cardHolderName = cardHolderNameInput.getText().toString();
final String accountNumber = cardNumberInput.getText().toString();
final String expiryMonth = expirationMonthInput.getText().toString();
final String expiryYear = expirationYearInput.getText().toString();
final String securityCode = cvvInput.getText().toString();
try {
// Send data
URL url = new URL(endPoint);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStreamWriter request = new OutputStreamWriter(conn.getOutputStream());
// Create the XML to post
request.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
request.append("<PurchaseRequest>");
request.append("<MerchantIdentity>");
request.append("<CompanyId>");
request.append(companyId);
request.append("</CompanyId>");
request.append("<CompanyPassword>");
request.append(companyPassword);
request.append("</CompanyPassword>");
request.append("</MerchantIdentity>");
request.append("<Reference>");
request.append("<MessageId>");
request.append(messageId);
request.append("</MessageId>");
request.append("<SettlementId>");
request.append(settlementId);
request.append("</SettlementId>");
request.append("</Reference>");
request.append("<Amount>");
request.append("<Currency>");
request.append(currency);
request.append("</Currency>");
request.append("<Value>");
request.append(Double.toString(amount));
request.append("</Value>");
request.append("</Amount>");
request.append("<FundingCard>");
request.append("<CardholderName>");
request.append(cardHolderName);
request.append("</CardholderName>");
request.append("<AccountNumber>");
request.append(accountNumber);
request.append("</AccountNumber>");
request.append("<ExpiryMonth>");
request.append(expiryMonth);
request.append("</ExpiryMonth>");
request.append("<ExpiryYear>");
request.append(expiryYear);
request.append("</ExpiryYear>");
request.append("<SecurityCode>");
request.append(securityCode);
request.append("</SecurityCode>");
request.append("</FundingCard>");
request.append("</PurchaseRequest>");
request.flush();
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(conn.getInputStream());
Node transactionResponseNode = doc.getElementsByTagName("TransactionResponse").item(0);
// Test for approval.
String response = transactionResponseNode.getNodeValue().trim().toUpperCase();
Log.d("**********Response", ""+response);
if (response.equals("APPROVED") == true) {
request.close();
String text = "The payment processed successfully. PHP" + amountInput.getText().toString()
+ " was charged to the account.";
Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
toast.show();
} else if (response.equals("DECLINED")) {
String text = "The payment was declined.";
Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
toast.show();
} else if (response.equals("ERROR")) {
String text = "Error Processing Payment.";
Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
toast.show();
}
} catch (MalformedURLException e) {
String text = "Error";
Toast toast = Toast.makeText(context, ""+e, Toast.LENGTH_LONG);
toast.show();
} catch (IOException e) {
String text = "Error";
Toast toast = Toast.makeText(context, ""+e, Toast.LENGTH_LONG);
toast.show();
} catch (ParserConfigurationException e) {
String text = "Error";
Toast toast = Toast.makeText(context, ""+e, Toast.LENGTH_LONG);
toast.show();
} catch (SAXException e) {
String text = "Error";
Toast toast = Toast.makeText(context, ""+e, Toast.LENGTH_LONG);
toast.show();
}
}
});
}
}
任何想法會幫助我很多。謝謝。
這就是登錄貓說:
05-22 11:20:58.129: D/**********Error2(1424): java.io.FileNotFoundException: https://api.mastercard.com/payments/v3/purchase?Format=XML
無論什麼原因,你當然不應該在GUI回調方法中做網絡操作。 – EJP
正如@EJP所說,你不應該在主UI線程上這樣做,即使是測試。無論如何,你得到了什麼確切的錯誤?我看到該頁面使用OAuth,但我沒有看到代碼中進行OAuth身份驗證的任何內容。 – GreyBeardedGeek
我把什麼日誌貓說。我只是按照上面發佈的教程鏈接。您在哪裏看到了OAuth身份驗證? –