【问题标题】:Need help in porting Java code to PHP在将 Java 代码移植到 PHP 方面需要帮助
【发布时间】:2016-03-07 05:46:43
【问题描述】:

我需要开发 Marketplace API 以在 PHP 中获取订单并将送货到沃尔玛。 他们的代码库/帮助示例以 Java 提供。 我不擅长 Java。

需要帮助理解/用 PHP 编码。 这是Java中的代码。 链接到 API 开发人员指南 https://developer.walmartapis.com/#self-written-code-expert

此应用位于 Cpanel 服务器上。

import org.apache.commons.codec.binary.Base64;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;

public class SHA256WithRSAAlgo {
private static String consumerId = "b68d2a72....";   // Trimmed for security reason
private static String baseUrl = "https://marketplace.walmartapis.com/v2/feeds";
private static String privateEncodedStr = "MIICeAIBADANBgkqhkiG9w0BAQEFAA......";       //Trimmed for security reasons
public static void main(String[] args) {
    String httpMethod = "GET";
    String timestamp = String.valueOf(System.currentTimeMillis());
    String stringToSign = consumerId + "\n" +
                            baseUrl + "\n" +
                            httpMethod + "\n" +
                            timestamp + "\n";
    String signedString = SHA256WithRSAAlgo.signData(stringToSign, privateEncodedStr);
    System.out.println("Signed String: " + signedString);
}
public static String signData(String stringToBeSigned, String encodedPrivateKey) {
    String signatureString = null;
    try {
        byte[] encodedKeyBytes = Base64.decodeBase64(encodedPrivateKey);
        PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(encodedKeyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey myPrivateKey = kf.generatePrivate(privSpec);
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(myPrivateKey);
        byte[] data = stringToBeSigned.getBytes("UTF-8");
        signature.update(data);
        byte[] signedBytes = signature.sign();
        signatureString = Base64.encodeBase64String(signedBytes);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return signatureString;
}
}

编辑:

我不明白的部分是这个页面上的#3。 上面写着 通过

对该数据的字节数组表示进行签名

https://developer.walmartapis.com/#self-written-code-expert

【问题讨论】:

    标签: java php walmart-api


    【解决方案1】:

    其实很简单,Java 将每个源文件的包导入为 PHP 包含文件。所以第一行是这样做的,然后类的功能几乎与 PHP5 类一样。就是这样。 指定你不理解的内容将有助于更好地解释代码......

    【讨论】:

    • 我想通过使用 shell_exec() 函数在 php 中运行 Java 代码。
    • 酷你想通了!
    猜你喜欢
    • 2011-12-17
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多