Heim >Backend-Entwicklung >PHP-Tutorial >PHP implementiert den Überprüfungsbeispielcode des Apple API In-App-Kaufgutscheins
Das Folgende ist die serverseitige Überprüfung von AppStore-In-App-Käufen. Der Zahlungsvorgang in der App wird vom IOS-Programmierer abgeschlossen Wenn Sie den entsprechenden Zahlungsgutschein erhalten möchten, müssen Sie überprüfen, ob die Zahlung tatsächlich auf der Grundlage des Gutscheins erfolgt ist, und anschließend die Geschäftslogik der nachfolgenden Produktfunktionen vervollständigen. Für die Überprüfung gibt es zwei Arten: Die eine besteht darin, die Zahlung durchzuführen Das andere ist die Überprüfung über das Backend. Man kann sich vorstellen, dass die meisten von ihnen über das Backend überprüft werden, daher ist das eigentliche Schwert unten dargestellt:
/** * 苹果内购Api查询接口 * Class AppleAipController * @package Pay\Controller */class AppleAipController extends Controller{ /** * @var string */ private $sandboxCurl = "https://sandbox.itunes.apple.com/verifyReceipt"; private $formalityCurl = "https://buy.itunes.apple.com/verifyReceipt"; /** * @return array */ public function send($encodeStr,$sandboxStatus=0) { $ch = curl_init(); $data['receipt-data'] =$encodeStr; $encodeStr = json_encode($data); $url = $sandboxStatus?($this->formalityCurl):($this->sandboxCurl); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // post数据 curl_setopt($ch, CURLOPT_POST, 0); // post的变量 curl_setopt($ch, CURLOPT_POSTFIELDS, $encodeStr); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); curl_close($ch); $resut = (Array)json_decode($output,true); return $resut; } }
Dann werde ich unten auch meine Aufrufmethode zuweisen, da sie auf tp verwendet wird. Wenn Sie andere verwenden müssen Frameworks oder native Frameworks, Sie können mir eine Nachricht hinterlassen, um bei Änderungen zu helfen. Ich werde den Code anhängen, den ich unten aufgerufen habe:
<?php/** * Created by PhpStorm. * User: wyb * Date: 2017/8/14 * Time: 9:57 */namespace xxxxxxxx;use Common\Tools\Attestation;use Pay\Controller\AppleAipController;use Think\Controller;/** * product苹果API内购验证 * Class CoinApiPayController */class ProductPayController extends Controller{ protected $response = ['result' => true, 'code' => 10000, 'msg' => '', 'AData' => [], 'OData' => NULL]; /** * 来源数组 * @var array */ private $targetArray = ['a_sysj', 'i_sysj', 'a_lpds', 'i_lpds','a_jjds','i_jjds']; private $testMember =['9232313'];//定好你们内部测试,人员,若人员比较多的化就做成后台管理的从数据库中取出 /** * @name 检验凭证并分发后续业务的逻辑 */ public function credentialsCheckAction() { IS_POST ||$this->returnError();//判断是否是POST $parameters =I('post.');//这里最好的相应的参数进行验证,并且使用验签校验,这里我就省略了这部分,还有下面部分最好也放在你封装或者放在你相应的模型内 $AppleAipController = new AppleAipController(); $sandboxStatus = in_array($parameters['member_id'],$thi->testMember)?1:0; $checkData = $AppleAipController->send($parameters['encodeStr'],$sandboxStatus); if($checkData['status']==0){ //校验订单号 if($checkData['receipt']['transaction_id']!=$parameters['trade_id']) { $this->returnErrorData('20012', '检验错误【01】', '21003'); } $productId = 'com.ifeimo.'.$orderInfo['product_id']; //校验商品ID if($checkData['receipt']['product_id'] != $productId){ $this->returnErrorData('20012', '检验错误【02】', '21003'); } //校验价格 $checkPrice = intval(str_replace('cxzxxxx_', '', $checkData['receipt']['product_id'])); if($checkPrice!=$orderInfo['price']){ $this->returnErrorData('20012', '检验错误【03】', '21003'); } $result = self::notifyAdd($orderInfo); $this->response['msg'] = '支付成功'; $status = $checkData['status']; }else{ $status = $checkData['status']; $this->response['status'] = $status; $this->response['result'] = false; $this->response['msg'] = '待支付'; } $this->response['order'] = $orderInfo; $this->response['encodeStatus'] = $status; $this->ajaxReturn($this->response);//返回数据给前端 } /** * 整合异步发放 * @param $order * @param $time * @return int */ private function notifyAdd($order) { //这里写你相应的分发业务 } /** * 错误返回 * @param string $msg 错误提示信息,默认‘请求处理失败’ */ private function returnErrorData($code = '20000', $msg = '请求处理失败',$status='21003'){ $this->response['result'] = false; $this->response['status'] = $status; $this->response['code'] = $code; $this->response['msg'] = $msg; $this->ajaxReturn($this->response); } }Da er möglicherweise die Schreibmethode von tp enthält, wenn Sie Hilfe bei der Aufteilung benötigen , Sie können meiner Gruppe über meinen Blog beitreten und ich kann bei der Lösung des Problems helfen. Verwandte Empfehlungen:
PHP-Sharing über API-Schnittstellenbeispiele
PHP-API-Datenschnittstellen-Schreibbeispiele
Servicefenster-API, entwickelt von PHP Alipay
Das obige ist der detaillierte Inhalt vonPHP implementiert den Überprüfungsbeispielcode des Apple API In-App-Kaufgutscheins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!