1.腾讯的应用宝中游戏道具直购的最大坑点在于:文档乱、杂,很难看懂;特别单机游戏中道具直购直购是最坑的,本人跟着腾讯应用宝YSDK官方文档一步一步的进行介入,怎么都无法验证签名成功,最后自己网上找了些资源;根据原理,几乎脱离其官方YSDK官方api(当然,一些参数还是需要看官方api的);
2.对应一些解析加密的工具类需要在腾讯官方的ysdk中下载;
腾讯应用宝官方api(道具直购):http://wiki.open.qq.com/wiki/v3/pay/buy_goods
demo:http://wiki.open.qq.com/wiki/SDK%E4%B8%8B%E8%BD%BD
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.asz.gameserver.core.socket.model.Result;
import com.alibaba.fastjson.JSONObject;
import com.asz.GoldNiuniuweb.server.ConnectorManager;
import com.asz.GoldNiuniuweb.server.tecent.src.com.qq.open.OpenApiV3;
import com.asz.GoldNiuniuweb.server.tecent.src.com.qq.open.OpensnsException;
import com.asz.GoldNiuniuweb.server.tecent.src.com.qq.open.SnsSigCheck;
import com.asz.gameserver.module.charge.constant.PayType;
import com.asz.gameserver.module.charge.facade.ChargeFacade;
import com.asz.gameserver.module.charge.remote.ChargeResultCode;
import com.asz.gameserver.module.charge.remote.request.ChargeOrderAccept;
import com.asz.gameserver.rpc.ConsoleConnector;
@Controller
public class TecentChargeController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ConnectorManager connectorManager;
private static String QQ_AppId = "";
private static String QQ_Appkey = "";
private static String Charge_AppKey = "";
@RequestMapping(value="/tecent/qq_buy_items" , method = { RequestMethod.GET, RequestMethod.POST })
@ResponseBody
public String qq_buy_items(String sessionId ,String openid,String pay_token,String openkey,
String amount,String pf,String pfkey,String goodsurl,String chargeString,String sessionType){
try {
logger.debug("=====================================================");
logger.debug("sessionId----------------------------------"+sessionId);
logger.debug("openid----------------------------------------"+openid);
logger.debug("pay_token----------------------------------"+pay_token);
logger.debug("openkey--------------------------------------"+openkey);
logger.debug("amount----------------------------------------"+amount);
logger.debug("pf------------------------------------------------"+pf);
logger.debug("pfkey------------------------------------------"+pfkey);
l